Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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),
     ])
Ejemplo n.º 3
0
    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),
        ])
Ejemplo n.º 4
0
 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),
     ])
Ejemplo n.º 5
0
 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),
     ])
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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)