def test_remove_from_xml_names(self, xml_stub): # Arrange import __builtin__ open_mock = MagicMock(name='mockOpen') xmlDocMock = MagicMock(name='xmlDocMock') __builtin__.open = open_mock open_mock.return_value = xmlDocMock removeFromNames = ProjectNamesList.ProjectNamesList() name = 'Asset_01' fakeFile = MagicMock(name='proj_names.xml') xmlFileMock = MagicMock(name='xmlFileMock') parentNodeMock = MagicMock(name='parentNameMock') childNodeMock = MagicMock(name='childNameMock') xml_stub.parse.return_value = xmlFileMock xmlFileMock.childNodes[0] = parentNodeMock xmlFileMock.childNodes[0].childNodes = [childNodeMock] childNodeMock.nodeType = 2 childNodeMock.attributes['name'].value = name parentNodeMock.removeChild.return_value = childNodeMock #xmlFileMock.createElement.return_value = childNameMock # Act result = removeFromNames._remove_from_xml_names(name=name, fileName=fakeFile) # Assert self.assertTrue(call.parse(fakeFile) in xml_stub.mock_calls) self.assertEqual(result, True)
def test__get_output_bodies__parse_yielded_no_items(self): self.mock.configure_mock(**{'parse.return_value': iter([])}) with self.assertRaises(ValueError): self.meth.get_output_bodies(sentinel.data, FilePagedSequence._instance_mock()) self.assertEqual(self.mock.method_calls, [ call.parse(sentinel.data), ])
def test__get_output_bodies(self): parsed = [MagicMock(**{'__class__': RecordDict, 'used_as_context_manager': True, 'get_ready_json.return_value': getattr(sentinel, 'output_body{}'.format(i))}) for i in (1, 2)] self.mock.configure_mock(**{ 'parse.return_value': parsed, 'get_output_message_id.side_effect': [ sentinel.msg_A, sentinel.msg_B, ], 'setting_error_event_info': MagicMock(), 'postprocess_parsed.side_effect': ( lambda data, parsed, total, item_no: parsed ), }) seq_mock = FilePagedSequence._instance_mock() output_bodies = self.meth.get_output_bodies(sentinel.data, seq_mock) self.assertIs(output_bodies, seq_mock) self.assertEqual(seq_mock._list, [ sentinel.output_body1, sentinel.output_body2, ]) self.assertEqual(parsed[0].mock_calls, [ call.__setitem__('id', sentinel.msg_A), call.get_ready_json(), ]) self.assertEqual(parsed[1].mock_calls, [ call.__setitem__('id', sentinel.msg_B), call.get_ready_json(), ]) self.assertEqual(self.mock.mock_calls, [ call.parse(sentinel.data), call.get_output_message_id(parsed[0]), call.delete_too_long_address(parsed[0]), call.get_output_message_id(parsed[1]), call.delete_too_long_address(parsed[1]), call.setting_error_event_info(parsed[0]), call.setting_error_event_info().__enter__(), call.postprocess_parsed(sentinel.data, parsed[0], 2, item_no=1), call.setting_error_event_info().__exit__(None, None, None), call.setting_error_event_info(parsed[1]), call.setting_error_event_info().__enter__(), call.postprocess_parsed(sentinel.data, parsed[1], 2, item_no=2), call.setting_error_event_info().__exit__(None, None, None), ])
def test__get_output_bodies__parse_yielded_no_items__allow_empty_results(self): self.mock.configure_mock(**{'parse.return_value': iter([]), 'allow_empty_results': True}) seq_mock = FilePagedSequence._instance_mock() output_bodies = self.meth.get_output_bodies(sentinel.data, seq_mock) self.assertIs(output_bodies, seq_mock) self.assertEqual(seq_mock._list, []) # just empty self.assertEqual(self.mock.mock_calls, [ call.parse(sentinel.data), ])
def test__get_output_bodies__record_dict_not_used_as_context_manager(self): parsed = [MagicMock(**{'__class__': RecordDict, 'used_as_context_manager': False}) for i in (1, 2)] self.mock.configure_mock(**{'parse.return_value': parsed}) with self.assertRaises(AssertionError): self.meth.get_output_bodies(sentinel.data, FilePagedSequence._instance_mock()) self.assertEqual(self.mock.method_calls, [ call.parse(sentinel.data), ])
def test_complex_(self): # parser -> args -> dbs (later) -> job (earlier) m = Mock() class T1(object): pass class T2(object): pass class T3(object): pass def parser(): m.parser() return T1() @requires(T1) def args(obj): m.args(type(obj)) @requires(T2) def dbs(obj): m.dbs(type(obj)) return T3() @requires(last(T1)) def parse(obj): m.parse(type(obj)) return T2() runner = Runner(parser, args, dbs, parse) @requires(T1) def more_args(obj): m.more_args(type(obj)) @requires(T2, T3) def job(o1, o2): m.job(type(o1), type(o2)) runner.add(more_args) runner.add(job) runner() compare([ call.parser(), call.args(T1), call.more_args(T1), call.parse(T1), call.dbs(T2), call.job(T2, T3), ], m.mock_calls)
def test_simple_chain(self): m = Mock() class T1(object): pass class T2(object): pass t1 = T1() t2 = T2() def parser(): m.parser() return t1 @requires(T1) def base_args(obj): m.base_args(obj) @requires(last(T1)) def parse(obj): m.parse(obj) return t2 runner = Runner(parser, base_args, parse) @requires(T1) def my_args(obj): m.my_args(obj) runner.add(my_args) @requires(T2) def job(obj): m.job(obj) runner.add(job) runner() compare([ call.parser(), call.base_args(t1), call.my_args(t1), call.parse(t1), call.job(t2), ], m.mock_calls)
def test_add_to_xml_names(self, xml_stub): # Arrange import __builtin__ open_mock = MagicMock(name='mockOpen') xmlDocMock = MagicMock(name='xmlDocMock') __builtin__.open = open_mock open_mock.return_value = xmlDocMock addToNames = ProjectNamesList.ProjectNamesList() name = 'Asset_01' fakeFile = MagicMock(name='proj_names.xml') xmlFileMock = MagicMock(name='xmlFileMock') childNameMock = MagicMock(name='childNameMock') xml_stub.parse.return_value = xmlFileMock xmlFileMock.createElement.return_value = childNameMock # Act result = addToNames._add_to_xml_names(name=name, fileName=fakeFile) # Assert self.assertEqual(result, True) self.assertTrue(call.parse(fakeFile) in xml_stub.mock_calls)