def __init__(self, data): self.data = data self.sm = SMGenerator() self.sm.load_data(data)
class SpecGenerator(): def __init__(self, data): self.data = data self.sm = SMGenerator() self.sm.load_data(data) def _header(self): return 'import unittest\n'+\ 'from should_dsl import should\n'+\ 'from StateMachine import MyStateMachine\n\n'+\ 'class FluidityTest(unittest.TestCase):\n\n'+\ '\tdef setUp(self):\n'+\ '\t\tself.machine = MyStateMachine()\n' def create_initial_state_test(self): initial_state = self.sm._get_initial_state() phrase = '\n\tdef test_it_has_an_initial_state(self):\n'+\ '\t\tself.machine.initial_state |should| equal_to("{ini_state}")\n'.format(ini_state=initial_state)+\ '\t\tself.machine.current_state |should| equal_to("{ini_state}")\n'.format(ini_state=initial_state) return phrase def create_states_test(self): states = self.sm._get_states() states_name = [] for state in states: states_name.append(state["state"]) phrase = '\n\tdef test_it_defines_states_using_method_calls(self):\n'+\ '\t\tself.machine |should| have({total}).states\n'.format(total=len(states_name))+\ '\t\tself.machine.states() |should| include_all_of({states_list})'.format(states_list=states_name) return phrase def create_transition_respond_test(self): transitions = self.sm._get_transitions() transitions_name = [] phrase = '\n\n\tdef test_its_declaration_creates_a_method_with_its_name(self):\n' for transition in transitions: phrase += '\t\tself.machine |should| respond_to("{transition_name}")\n'.format(transition_name=transition["event"]) return phrase def create_action_test(self): transitions = self.sm._get_transitions() phrase = '\n\tdef test_it_changes_machine_state(self):\n' +\ '\t\tself.machine.current_state |should| equal_to("{source}")\n'.format(source=transitions[0]["from"]) for transition in transitions: phrase += '\t\tself.machine.{event_name}()\n'.format(event_name=transition["event"])+\ '\t\tself.machine.current_state |should| equal_to("{target}")\n'.format(target=transition["to"]) return phrase def generate_content(self): content = self._header() content += self.create_initial_state_test() content += self.create_states_test() content += self.create_transition_respond_test() content += self.create_action_test() return content def create_test_file(self): content = self.generate_content() with open('/home/hudson/.dia/python/dia_bldd/resources/TestStateMachine.py', 'w') as test_file: test_file.write(content)