Commit cfb47571 authored by Łukasz Nowak's avatar Łukasz Nowak

Request update on software instance modification.

When title, source_reference (so software type) or text_content (instance xml)
are changed trigger the update.

Do not trigger on anything else, especially on connection_xml.
parent 855367e4
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="InteractionDefinition" module="Products.ERP5.Interaction"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>actbox_category</string> </key>
<value> <string>workflow</string> </value>
</item>
<item>
<key> <string>actbox_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>activate_script_name</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value>
<list>
<string>SoftwareInstance_requestUpdate</string>
</list>
</value>
</item>
<item>
<key> <string>before_commit_script_name</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>guard</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>SoftwareInstance_requestUpdateOnChange</string> </value>
</item>
<item>
<key> <string>method_id</string> </key>
<value>
<list>
<string>_setTitle</string>
<string>_setSourceReference</string>
<string>_setTextContent</string>
</list>
</value>
</item>
<item>
<key> <string>once_per_transaction</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>portal_type_filter</string> </key>
<value>
<list>
<string>Software Instance</string>
</list>
</value>
</item>
<item>
<key> <string>script_name</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>temporary_document_disallowed</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Guard" module="Products.DCWorkflow.Guard"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>expr</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>python: len(here.checkConsistency()) == 0</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>state_change[\'object\'].requestUpdateComputerPartition()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>SoftwareInstance_requestUpdate</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -590,6 +590,145 @@ class TestVifibSlapComputerPartitionUpdate(TestVifibSlapWebServiceMixin):
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
# update triggers
def stepSoftwareInstanceEditTitle(self, sequence,
**kw):
instance = self.portal.portal_catalog.getResultValue(
uid=sequence['software_instance_uid'])
instance.edit(
title = instance.getTitle() + 'edited'
)
def stepSoftwareInstanceEditSourceReference(self, sequence,
**kw):
instance = self.portal.portal_catalog.getResultValue(
uid=sequence['software_instance_uid'])
instance.edit(
source_reference = instance.getSourceReference() + 'edited'
)
def stepSoftwareInstanceEditTextContent(self, sequence,
**kw):
instance = self.portal.portal_catalog.getResultValue(
uid=sequence['software_instance_uid'])
text_content = instance.getTextContent()
modified_xml = """<?xml version="1.0" encoding="utf-8"?>
<instance><parameter id="ignore">value</parameter></instance>"""
self.assertNotEqual(modified_xml, text_content)
instance.edit(
text_content = modified_xml
)
def stepSoftwareInstanceEditConnectionXml(self, sequence,
**kw):
instance = self.portal.portal_catalog.getResultValue(
uid=sequence['software_instance_uid'])
connection_xml = instance.getConnectionXml()
self.assertNotEqual(connection_xml, self.minimal_correct_xml)
instance.edit(
connection_xml = self.minimal_correct_xml
)
def test_update_on_title_change(self):
sequence_list = SequenceList()
sequence_string = \
self.prepare_started_computer_partition_sequence_string + """
SlapLoginCurrentComputer
CheckEmptyComputerGetComputerPartitionCall
SlapLogout
LoginTestVifibCustomer
SoftwareInstanceEditTitle
Tic
Logout
LoginDefaultUser
CheckComputerPartitionInstanceUpdateSalePackingListConfirmed
Logout
SlapLoginCurrentComputer
CheckSuccessComputerGetComputerPartitionCall
SlapLogout
"""
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
def test_update_on_source_reference_change(self):
sequence_list = SequenceList()
sequence_string = \
self.prepare_started_computer_partition_sequence_string + """
SlapLoginCurrentComputer
CheckEmptyComputerGetComputerPartitionCall
SlapLogout
LoginTestVifibCustomer
SoftwareInstanceEditSourceReference
Tic
Logout
LoginDefaultUser
CheckComputerPartitionInstanceUpdateSalePackingListConfirmed
Logout
SlapLoginCurrentComputer
CheckSuccessComputerGetComputerPartitionCall
SlapLogout
"""
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
def test_update_on_text_content_change(self):
sequence_list = SequenceList()
sequence_string = \
self.prepare_started_computer_partition_sequence_string + """
SlapLoginCurrentComputer
CheckEmptyComputerGetComputerPartitionCall
SlapLogout
LoginTestVifibCustomer
SoftwareInstanceEditTextContent
Tic
Logout
LoginDefaultUser
CheckComputerPartitionInstanceUpdateSalePackingListConfirmed
Logout
SlapLoginCurrentComputer
CheckSuccessComputerGetComputerPartitionCall
SlapLogout
"""
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
def test_no_update_on_connection_xml_change(self):
sequence_list = SequenceList()
sequence_string = \
self.prepare_started_computer_partition_sequence_string + """
SlapLoginCurrentComputer
CheckEmptyComputerGetComputerPartitionCall
SlapLogout
LoginTestVifibCustomer
SoftwareInstanceEditConnectionXml
Tic
Logout
LoginDefaultUser
CheckComputerPartitionNoInstanceUpdateSalePackingList
Logout
SlapLoginCurrentComputer
CheckEmptyComputerGetComputerPartitionCall
SlapLogout
"""
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestVifibSlapComputerPartitionUpdate))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment