def setUp(self): self.data = [[ 'Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA' ], [ 'region1', 'district1', 'county1', 'ea_containing_parish', 'parish_1', '' ], [ 'region1', 'district1', 'county1', 'ea_containing_parish', 'parish_1b', '' ], [ 'region2', 'district2', 'county2', '', 'parish2', 'ea_under_parish' ], [ 'region2', 'district2', 'county2', '', 'parish2', 'ea_under_parish' ]] self.write_to_csv('wb', self.data) self.filename = 'test.csv' _file = open(self.filename, 'rb') self.uploader = UploadEA(_file) self.survey = Survey.objects.create(name="Survey A")
def test_should_return_false__and_message_if_location_is_blank(self): EMPTY_PARISH_NAME = '' data = [[ 'Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA' ], [ 'region1', 'district1', 'county1', 'ea_containing_parish', EMPTY_PARISH_NAME, '' ]] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') rtype = LocationType.objects.create(name="Region", slug="region") region = Location.objects.create(name="region1", type=rtype) dtype = LocationType.objects.create(name="District", slug="district", parent=rtype) district = Location.objects.create(name="district1", parent=region, type=dtype) ctype = LocationType.objects.create(name="County", slug="county", parent=dtype) Location.objects.create(name="county1", parent=district, type=ctype) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(1, error_log.count()) self.assertEqual(1, error_log[0].row_number) self.assertEqual('There is no parishtype with name: , in county1.', error_log[0].error)
def test_should_return_false__and_message_if_no_EA_is_provided(self): EMPTY_EA_NAME = '' data = [[ 'Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA' ], ['region1', 'district1', 'county1', '', 'parish_1', EMPTY_EA_NAME]] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') rtype1 = LocationType.objects.create(name="Region1", slug="region") region = Location.objects.create(name="r1", type=rtype1) dtype1 = LocationType.objects.create(name="District", slug="district", parent=rtype1) district = Location.objects.create(name="district1", parent=region, type=dtype1) ctype1 = LocationType.objects.create(name="County", slug="county", parent=dtype1) county = Location.objects.create(name="county1", parent=district, type=ctype1) ptype1 = LocationType.objects.create(name="Parish", slug="parish", parent=ctype1) l = Location.objects.create(name="parish_1", parent=county, type=ptype1) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(1, error_log.count()) self.assertEqual(1, error_log[0].row_number)
def test_not_csv_file(self): EnumerationArea.objects.all().delete() self.filename = 'not_csv.xls' self.generate_non_csv_file(self.filename) file = open(self.filename,'rb') uploader = UploadEA(file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.failUnless(error_log.filter(error='Enumeration Areas not uploaded. %s is not a valid csv file.' % self.filename)) self.failIf(EnumerationArea.objects.all())
def test_should_return_false__and_message_if_location_is_blank(self): EMPTY_PARISH_NAME = '' data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', 'ea_containing_parish', EMPTY_PARISH_NAME, '']] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') region = Location.objects.create(name="region1") district = Location.objects.create(name="district1", tree_parent=region) Location.objects.create(name="county1", tree_parent=district) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(1, error_log.count()) self.assertEqual(1, error_log[0].row_number) self.assertEqual('There is no parishtype with name: , in county1.', error_log[0].error)
def test_should_return_false__and_message_if_no_EA_is_provided(self): EMPTY_EA_NAME = '' data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', '', 'parish_1', EMPTY_EA_NAME]] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') region = Location.objects.create(name="region1") district = Location.objects.create(name="district1", tree_parent=region) county = Location.objects.create(name="county1", tree_parent=district) Location.objects.create(name="parish_1", tree_parent=county) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(1, error_log.count()) self.assertEqual(1, error_log[0].row_number) self.assertEqual('Enumeration Area name required.', error_log[0].error)
def test_should_return_true__and_success_message_if_valid_csv_provided(self): data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', '', 'parish_1', 'ea_under_parish']] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') region = Location.objects.create(name="region1") district = Location.objects.create(name="district1", tree_parent=region) county = Location.objects.create(name="county1", tree_parent=district) parish = Location.objects.create(name="parish_1", tree_parent=county) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.failIf(error_log) retrieved_ea = EnumerationArea.objects.filter(name=data[1][-1], survey=self.survey) self.failUnless(retrieved_ea) self.assertIn(parish, retrieved_ea[0].locations.all())
def setUp(self): self.data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', 'ea_containing_parish', 'parish_1', ''], ['region1', 'district1', 'county1', 'ea_containing_parish', 'parish_1b', ''], ['region2', 'district2', 'county2', '', 'parish2', 'ea_under_parish'], ['region2', 'district2', 'county2', '', 'parish2', 'ea_under_parish']] self.write_to_csv('wb', self.data) self.filename = 'test.csv' _file = open(self.filename, 'rb') self.uploader = UploadEA(_file) self.survey = Survey.objects.create(name="Survey A")
class EAUploadTest(BaseTest): def setUp(self): self.data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', 'ea_containing_parish', 'parish_1', ''], ['region1', 'district1', 'county1', 'ea_containing_parish', 'parish_1b', ''], ['region2', 'district2', 'county2', '', 'parish2', 'ea_under_parish'], ['region2', 'district2', 'county2', '', 'parish2', 'ea_under_parish']] self.write_to_csv('wb', self.data) self.filename = 'test.csv' _file = open(self.filename, 'rb') self.uploader = UploadEA(_file) self.survey = Survey.objects.create(name="Survey A") def tearDown(self): os.system("rm -rf %s" % self.filename) def test_should_return_false__and_message_if_location_not_found(self): Location.objects.all().delete() self.uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(4, error_log.count()) self.failUnless(error_log.filter(row_number=1, error='There is no parishtype with name: parish_1, in county1.')) self.failUnless(error_log.filter(row_number=2, error='There is no parishtype with name: parish_1b, in county1.')) self.failUnless(error_log.filter(row_number=3, error='There is no parishtype with name: parish2, in county2.')) self.failUnless(error_log.filter(row_number=4, error='There is no parishtype with name: parish2, in county2.')) def test_should_return_false__and_message_if_location_is_blank(self): EMPTY_PARISH_NAME = '' data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', 'ea_containing_parish', EMPTY_PARISH_NAME, '']] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') region = Location.objects.create(name="region1") district = Location.objects.create(name="district1", tree_parent=region) Location.objects.create(name="county1", tree_parent=district) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(1, error_log.count()) self.assertEqual(1, error_log[0].row_number) self.assertEqual('There is no parishtype with name: , in county1.', error_log[0].error) def test_should_return_false__and_message_if_location_tree_parent_does_not_match_one_provided(self): region = Location.objects.create(name="region name not matching the one in first row of file") district = Location.objects.create(name="district1", tree_parent=region) county = Location.objects.create(name="county1", tree_parent=district) l = Location.objects.create(name="parish_1", tree_parent=county) self.uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(4, error_log.count()) self.assertEqual('The location hierarchy region1 >> district1 >> county1 >> parish_1 does not exist.', error_log.get(row_number=1).error) def test_should_return_false__and_message_if_no_EA_is_provided(self): EMPTY_EA_NAME = '' data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', '', 'parish_1', EMPTY_EA_NAME]] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') region = Location.objects.create(name="region1") district = Location.objects.create(name="district1", tree_parent=region) county = Location.objects.create(name="county1", tree_parent=district) Location.objects.create(name="parish_1", tree_parent=county) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.assertEqual(1, error_log.count()) self.assertEqual(1, error_log[0].row_number) self.assertEqual('Enumeration Area name required.', error_log[0].error) def test_should_return_true__and_success_message_if_valid_csv_provided(self): data = [ ['Regiontype', 'Districttype', 'Counttype', 'EA', 'Parishtype', 'EA'], ['region1', 'district1', 'county1', '', 'parish_1', 'ea_under_parish']] self.write_to_csv('wb', data) _file = open(self.filename, 'rb') region = Location.objects.create(name="region1") district = Location.objects.create(name="district1", tree_parent=region) county = Location.objects.create(name="county1", tree_parent=district) parish = Location.objects.create(name="parish_1", tree_parent=county) uploader = UploadEA(_file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.failIf(error_log) retrieved_ea = EnumerationArea.objects.filter(name=data[1][-1], survey=self.survey) self.failUnless(retrieved_ea) self.assertIn(parish, retrieved_ea[0].locations.all()) def test_not_csv_file(self): EnumerationArea.objects.all().delete() self.filename = 'not_csv.xls' self.generate_non_csv_file(self.filename) file = open(self.filename,'rb') uploader = UploadEA(file) uploader.upload(self.survey) error_log = UploadErrorLog.objects.filter(model=self.uploader.MODEL, filename=self.filename) self.failUnless(error_log.filter(error='Enumeration Areas not uploaded. %s is not a valid csv file.' % self.filename)) self.failIf(EnumerationArea.objects.all())