예제 #1
0
    def test_map_existing_value(self):
        reader = self.map_reader()
        mapper = m.Mapper('id', ['a', 'b'], reader, appender=None)

        mapped_id = mapper.map(('aa', 'bb'))

        self.assertEqual(1, mapped_id)
예제 #2
0
    def test_instantiate_with_non_matching_header_line_is_an_error(self):
        with self.assertRaises(m.MissingFieldError):
            reader = self.map_reader()
            m.Mapper('idx', ['a', 'b'], reader, appender=None)

        with self.assertRaises(m.MissingFieldError):
            reader = self.map_reader()
            m.Mapper('id', ['ax', 'b'], reader, appender=None)

        with self.assertRaises(m.ExtraFieldError):
            reader = self.map_reader()
            m.Mapper('id', ['b'], reader, appender=None)

        with self.assertRaises(m.InvalidReferenceFieldError):
            reader = self.map_reader()
            m.Mapper('id', ['id', 'a', 'b'], reader, appender=None)
예제 #3
0
    def test_map_new_value(self):
        reader = self.map_reader()
        appender = ReaderWriter()
        mapper = m.Mapper('id', ['a', 'b'], reader, appender)

        mapped_id = mapper.map(('aaa', 'bbb'))

        self.assertEqual(2, mapped_id)
        self.assertEqual(1, len(appender.rows))
        self.assertListEqual([2, 'aaa', 'bbb'], appender.rows[0])
예제 #4
0
    def test_map_with_different_field_order_read_in_properly(self):
        reader = csv_reader('''\
            b,id,a
            b,1,a
            ''')
        appender = ReaderWriter()
        mapper = m.Mapper('id', ['a', 'b'], reader, appender)

        mapped_id = mapper.map(('a', 'b'))

        self.assertEqual(1, mapped_id)
예제 #5
0
    def test_map_with_different_field_order_is_written_properly(self):
        reader = csv_reader('''\
            b,id,a
            b,1,a
            ''')
        appender = ReaderWriter()
        mapper = m.Mapper('id', ['a', 'b'], reader, appender)

        mapped_id = mapper.map(('aa', 'bb'))

        self.assertEqual(2, mapped_id)
        self.assertListEqual([['bb', 2, 'aa']], appender.rows)
예제 #6
0
    def test_unsorted_map_with_gaps_works_correctly(self):
        reader = csv_reader('''\
            id,a,b
            5,aaa,bbb
            1,aa,bb
            ''')
        appender = ReaderWriter()
        mapper = m.Mapper('id', ['a', 'b'], reader, appender)

        mapped_id = mapper.map(('a3', 'b3'))

        self.assertEqual(6, mapped_id)