def _test_multi_input(my): # Disabled for now. This is not working #return # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) #search = Search("sthpw/message") #sobjects = search.get_sobjects() #for sobject in sobjects: # sobject.delete() # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a"/> <process type="action" name="b1"/> <process type="action" name="b2"/> <process type="action" name="b3"/> <process type="action" name="b4"/> <process type="action" name="c"/> <process type="action" name="d"/> <connect from="a" to="b1"/> <connect from="a" to="b2"/> <connect from="a" to="b3"/> <connect from="a" to="b4"/> <connect from="b1" to="c"/> <connect from="b2" to="c"/> <connect from="b3" to="c"/> <connect from="b4" to="c"/> <connect from="c" to="d"/> </pipeline> ''' pipeline, processes = my.get_pipeline(pipeline_xml) process = processes.get("c") process.set_json_value("workflow", { 'on_action': ''' print "c: running action" ''' } ) process.commit() # Run the pipeline process = "a" output = { "pipeline": pipeline, "sobject": sobject, "process": process } Trigger.call(my, "process|pending", output)
def _test_multi_input(my): # Disabled for now return # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) #search = Search("sthpw/message") #sobjects = search.get_sobjects() #for sobject in sobjects: # sobject.delete() # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a"/> <process type="action" name="b1"/> <process type="action" name="b2"/> <process type="action" name="b3"/> <process type="action" name="b4"/> <process type="action" name="c"/> <process type="action" name="d"/> <connect from="a" to="b1"/> <connect from="a" to="b2"/> <connect from="a" to="b3"/> <connect from="a" to="b4"/> <connect from="b1" to="c"/> <connect from="b2" to="c"/> <connect from="b3" to="c"/> <connect from="b4" to="c"/> <connect from="c" to="d"/> </pipeline> ''' pipeline, processes = my.get_pipeline(pipeline_xml) process = processes.get("c") process.set_json_value("workflow", { 'on_action': ''' print "c: running action" ''' } ) process.commit() # Run the pipeline process = "a" output = { "pipeline": pipeline, "sobject": sobject, "process": process } Trigger.call(my, "process|pending", output)
def _test_multi_input(self): # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a"/> <process type="action" name="b1"/> <process type="action" name="b2"/> <process type="action" name="b3"/> <process type="action" name="b4"/> <process type="action" name="c"/> <process type="action" name="d"/> <connect from="a" to="b1"/> <connect from="a" to="b2"/> <connect from="a" to="b3"/> <connect from="a" to="b4"/> <connect from="b1" to="c"/> <connect from="b2" to="c"/> <connect from="b3" to="c"/> <connect from="b4" to="c"/> <connect from="c" to="d"/> </pipeline> ''' pipeline, processes = self.get_pipeline(pipeline_xml) process = processes.get("c") process.commit() # Run the pipeline process = "a" output = { "pipeline": pipeline, "sobject": sobject, "process": process } Trigger.call(self, "process|pending", output) self.assertEquals( "complete", sobject.get_value("a")) self.assertEquals( "complete", sobject.get_value("b1")) self.assertEquals( "complete", sobject.get_value("b2")) self.assertEquals( "complete", sobject.get_value("b3")) self.assertEquals( "complete", sobject.get_value("b4")) self.assertEquals( "complete", sobject.get_value("c")) self.assertEquals( "complete", sobject.get_value("d"))
def _test_multi_input_complete(self): # DISABLE until check_inputs is called return # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a"/> <process type="manual" name="b1"/> <process type="manual" name="b2"/> <process type="manual" name="b3"/> <process type="action" name="c"/> <connect from="a" to="b1"/> <connect from="a" to="b2"/> <connect from="a" to="b3"/> <connect from="a" to="b4"/> <connect from="b1" to="c"/> <connect from="b2" to="c"/> <connect from="b3" to="c"/> </pipeline> ''' pipeline, processes = self.get_pipeline(pipeline_xml) process = processes.get("c") process.commit() # Run the pipeline process = "a" output = {"pipeline": pipeline, "sobject": sobject, "process": process} Trigger.call(self, "process|pending", output) # Run the pipeline process = "b1" output = {"pipeline": pipeline, "sobject": sobject, "process": process} Trigger.call(self, "process|complete", output) self.assertEquals("complete", sobject.get_value("a")) self.assertEquals("complete", sobject.get_value("b1")) self.assertEquals("pending", sobject.get_value("b2")) self.assertEquals("pending", sobject.get_value("b3")) # THIS WILL FAIL until we implement this correctly self.assertEquals("pending", sobject.get_value("c"))
def _test_trigger(my): # create a dummy sobject sobject = SearchType.create("unittest/person") pipeline_xml = ''' <pipeline> <process type="action" name="a"/> </pipeline> ''' pipeline, processes = my.get_pipeline(pipeline_xml) process = processes.get("a") process.set_value("workflow", "") process.commit() folder = Common.generate_alphanum_key() Trigger.clear_db_cache() event = "process|action" trigger = SearchType.create("config/trigger") trigger.set_value("event", event) trigger.set_value("process", process.get_code()) trigger.set_value("mode", "same process,same transaction") trigger.set_value("script_path", "%s/process_trigger" % folder) trigger.commit() script = SearchType.create("config/custom_script") script.set_value("folder", folder) script.set_value("title", "process_trigger") script.set_value("script", ''' print "---" for key, value in input.items(): print key, value print "---" print "process: ", input.get("process") ''') script.commit() # Run the pipeline process = "a" output = { "pipeline": pipeline, "sobject": sobject, "process": process } Trigger.call(my, "process|pending", output)
def _test_multi_input(self): # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a"/> <process type="action" name="b1"/> <process type="action" name="b2"/> <process type="action" name="b3"/> <process type="action" name="b4"/> <process type="action" name="c"/> <process type="action" name="d"/> <connect from="a" to="b1"/> <connect from="a" to="b2"/> <connect from="a" to="b3"/> <connect from="a" to="b4"/> <connect from="b1" to="c"/> <connect from="b2" to="c"/> <connect from="b3" to="c"/> <connect from="b4" to="c"/> <connect from="c" to="d"/> </pipeline> ''' pipeline, processes = self.get_pipeline(pipeline_xml) process = processes.get("c") process.commit() # Run the pipeline process = "a" output = {"pipeline": pipeline, "sobject": sobject, "process": process} Trigger.call(self, "process|pending", output) self.assertEquals("complete", sobject.get_value("a")) self.assertEquals("complete", sobject.get_value("b1")) self.assertEquals("complete", sobject.get_value("b2")) self.assertEquals("complete", sobject.get_value("b3")) self.assertEquals("complete", sobject.get_value("b4")) self.assertEquals("complete", sobject.get_value("c")) self.assertEquals("complete", sobject.get_value("d"))
def _test_multi_input_reject(self): # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) sobject.set_value("a1", "complete") sobject.set_value("a2", "complete") sobject.set_value("a3", "complete") sobject.set_value("b", "pending") # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a1"/> <process type="action" name="a2"/> <process type="action" name="a3"/> <process type="approval" name="b"/> <connect from="a1" to="b"/> <connect from="a2" to="b"/> <connect from="a3" to="b"/> </pipeline> ''' pipeline, processes = self.get_pipeline(pipeline_xml) # Run the pipeline process = "b" output = { "pipeline": pipeline, "sobject": sobject, "process": process, "reject_process": ['a1', 'a3'] } Trigger.call(self, "process|reject", output) self.assertEquals( "revise", sobject.get_value("a1")) self.assertEquals( "complete", sobject.get_value("a2")) self.assertEquals( "revise", sobject.get_value("a3"))
def _test_multi_input_reject(self): # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) sobject.set_value("a1", "complete") sobject.set_value("a2", "complete") sobject.set_value("a3", "complete") sobject.set_value("b", "pending") # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a1"/> <process type="action" name="a2"/> <process type="action" name="a3"/> <process type="approval" name="b"/> <connect from="a1" to="b"/> <connect from="a2" to="b"/> <connect from="a3" to="b"/> </pipeline> ''' pipeline, processes = self.get_pipeline(pipeline_xml) # Run the pipeline process = "b" output = { "pipeline": pipeline, "sobject": sobject, "process": process, "reject_process": ['a1', 'a3'] } Trigger.call(self, "process|reject", output) self.assertEquals("revise", sobject.get_value("a1")) self.assertEquals("complete", sobject.get_value("a2")) self.assertEquals("revise", sobject.get_value("a3"))
def _test_multi_input_complete(self): # DISABLE until check_inputs is called return # create a dummy sobject sobject = SearchType.create("sthpw/virtual") code = "test%s" % Common.generate_alphanum_key() sobject.set_value("code", code) # simple condition pipeline_xml = ''' <pipeline> <process type="action" name="a"/> <process type="manual" name="b1"/> <process type="manual" name="b2"/> <process type="manual" name="b3"/> <process type="action" name="c"/> <connect from="a" to="b1"/> <connect from="a" to="b2"/> <connect from="a" to="b3"/> <connect from="a" to="b4"/> <connect from="b1" to="c"/> <connect from="b2" to="c"/> <connect from="b3" to="c"/> </pipeline> ''' pipeline, processes = self.get_pipeline(pipeline_xml) process = processes.get("c") process.commit() # Run the pipeline process = "a" output = { "pipeline": pipeline, "sobject": sobject, "process": process } Trigger.call(self, "process|pending", output) # Run the pipeline process = "b1" output = { "pipeline": pipeline, "sobject": sobject, "process": process } Trigger.call(self, "process|complete", output) self.assertEquals( "complete", sobject.get_value("a")) self.assertEquals( "complete", sobject.get_value("b1")) self.assertEquals( "pending", sobject.get_value("b2")) self.assertEquals( "pending", sobject.get_value("b3")) # THIS WILL FAIL until we implement this correctly self.assertEquals( "pending", sobject.get_value("c"))