def test_logs_deserialization_errors(self):
     loader = SchemaLoader(supervisor_schema)
     copy_row = copy.copy(self.sample_row)
     copy_row['super_email'] = 'not a valid email'
     loader.slice_and_add(copy_row)
     with self.assertLogs( current_app.logger, level='ERROR' ) as cm:
         loader.save_models_or_report_errors()
 def test_slicing_data(self):
     loader = SchemaLoader(supervisor_schema)
     copy_row = copy.copy(self.sample_row)
     # add a row
     index = loader.slice_and_add( self.sample_row )
     self.assertEqual(index, 0)
     self.assertNotIn('permit_number', loader.raw_data[0])
     # editing unused fields shouldn't matter
     copy_row['inspector_id'] = 'LAKSJDHFL'
     index = loader.slice_and_add( copy_row )
     self.assertEqual(index, 0)
 def test_adding_rows(self):
     # can be created with no schema
     loader = SchemaLoader(None)
     # add a row
     index = loader.add( self.sample_row )
     self.assertEqual(index, 0)
     # add another row
     index = loader.add( self.random_rows[0] )
     self.assertEqual(index, 1)
     self.assertEqual( len(loader.raw_data), 2 )
     # adding the same row returns the same index
     index = loader.add( self.sample_row )
     self.assertEqual(index, 0)
class TestSchemaLoader(TestCase):

    def setUp(self):
        self.datum = { "a": 1, "b": 2, "c": 3, "d": 4 }
        self.datum2 = { "a": 1, "b": 2  }
        self.data = [self.datum, self.datum2]
        self.loader = SchemaLoader(FakeModelSchema())

    def test_slice(self):
        sliced = self.loader._slice(self.datum)
        self.assertSetEqual(set(['a','b','c']), set(sliced.keys()))

    def test_slice_and_add_data(self):
        self.assertEquals(self.loader.slice_and_add(self.datum), 0)
        self.assertEquals(self.loader.slice_and_add(self.datum2), 1)
        self.assertEquals(self.loader.slice_and_add(self.datum), 0)

    def test_slice_and_add_empty(self):
        self.assertEquals(self.loader.slice_and_add({}), 0)

    def test_slice_and_add_multiple(self):
        for ix, d in enumerate(self.data):
            self.assertEqual(self.loader.slice_and_add(d), ix)
 def test_logs_successful_deserialization(self):
     loader = SchemaLoader(supervisor_schema)
     loader.slice_and_add(self.sample_row)
     with self.assertLogs( current_app.logger, level='INFO' ) as cm:
         loader.save_models_or_report_errors()
 def setUp(self):
     self.datum = { "a": 1, "b": 2, "c": 3, "d": 4 }
     self.datum2 = { "a": 1, "b": 2  }
     self.data = [self.datum, self.datum2]
     self.loader = SchemaLoader(FakeModelSchema())