def test_validate_invalid_input_interface(self): """Tests calling RecipeDefinition.validate() with an invalid input interface""" input_interface = MagicMock() input_interface.validate.side_effect = InvalidInterface('', '') definition = RecipeDefinition(input_interface) with self.assertRaises(InvalidDefinition) as context: definition.validate({}, {}) self.assertEqual(context.exception.error.name, 'INPUT_INTERFACE')
def test_validate_invalid_connection(self): """Tests calling RecipeDefinition.validate() with an invalid connection to a node's input interface""" input_interface = Interface() definition = RecipeDefinition(input_interface) definition.add_job_node('A', 'job_type_1', '1.0', 1) definition.add_recipe_node('B', 'recipe_type_1', 1) definition.add_dependency('A', 'B') definition.add_dependency_input_connection('B', 'input_1', 'A', 'output_1') mocked_interfaces = {'A': MagicMock(), 'B': MagicMock()} mocked_interfaces[ 'B'].validate_connection.side_effect = InvalidInterfaceConnection( '', '') with self.assertRaises(InvalidDefinition) as context: definition.validate(mocked_interfaces, mocked_interfaces) self.assertEqual(context.exception.error.name, 'NODE_INTERFACE')
def test_validate_missing_dependency(self): """Tests calling RecipeDefinition.validate() with a connection that has a missing dependency""" input_interface = Interface() input_interface.parameters = {'recipe_input_1': MagicMock()} definition = RecipeDefinition(input_interface) definition.add_job_node('A', 'job_type_1', '1.0', 1) definition.add_recipe_node('B', 'recipe_type_1', 1) definition.add_job_node('C', 'job_type_2', '1.0', 1) definition.add_dependency('B', 'C') definition.add_dependency_input_connection('B', 'input_1', 'A', 'output_1') mocked_interfaces = { 'A': MagicMock(), 'B': MagicMock(), 'C': MagicMock() } with self.assertRaises(InvalidDefinition) as context: definition.validate(mocked_interfaces, mocked_interfaces) self.assertEqual(context.exception.error.name, 'NODE_INTERFACE')
def test_validate_successful(self): """Tests calling RecipeDefinition.validate() successfully""" input_interface = Interface() definition = RecipeDefinition(input_interface) definition.add_job_node('A', 'job_type_1', '1.0', 1) definition.add_recipe_node('B', 'recipe_type_1', 1) definition.add_dependency('A', 'B') definition.add_dependency_input_connection('B', 'input_1', 'A', 'output_1') mocked_interfaces = {'A': MagicMock(), 'B': MagicMock()} warnings = definition.validate(mocked_interfaces, mocked_interfaces) self.assertListEqual(warnings, [])
def test_validate_successful(self): """Tests calling RecipeDefinition.validate() successfully""" recipe_interface = Interface() recipe_interface.add_parameter( JsonParameter('recipe_input_1', 'integer')) definition = RecipeDefinition(recipe_interface) definition.add_job_node('A', 'job_type_1', '1.0', 1) condition_interface = Interface() condition_interface.add_parameter( JsonParameter('cond_param', 'integer')) definition.add_condition_node('B', condition_interface, DataFilter(True)) definition.add_recipe_node('C', 'recipe_type_1', 1) definition.add_dependency('A', 'B') definition.add_dependency('B', 'C') definition.add_recipe_input_connection('A', 'a_input_1', 'recipe_input_1') definition.add_dependency_input_connection('B', 'cond_param', 'A', 'a_output_1') definition.add_dependency_input_connection('C', 'c_input_1', 'A', 'a_output_1') definition.add_dependency_input_connection('C', 'c_input_2', 'B', 'cond_param') job_input_interface = Interface() job_input_interface.add_parameter(JsonParameter( 'a_input_1', 'integer')) job_output_interface = Interface() job_output_interface.add_parameter( JsonParameter('a_output_1', 'integer')) recipe_input_interface = Interface() recipe_input_interface.add_parameter( JsonParameter('c_input_1', 'integer')) recipe_input_interface.add_parameter( JsonParameter('c_input_2', 'integer')) input_interfaces = { 'A': job_input_interface, 'C': recipe_input_interface } output_interfaces = {'A': job_output_interface, 'C': Interface()} warnings = definition.validate(input_interfaces, output_interfaces) self.assertListEqual(warnings, [])