def test_resolve_zones_from_json(self): Fake, FakeForm = self.factory() zone = GeoZoneFactory() zone = GeoZoneFactory(validity__end=END_OF_TIME) for i in range(3): start = zone.validity.start - (i + 1) * A_YEAR end = zone.validity.start - i * A_YEAR GeoZoneFactory(code=zone.code, validity__start=start, validity__end=end) validity = faker.date_between(start_date=zone.validity.start, end_date=zone.validity.end) geoid = '{0.level}:{0.code}@{1}'.format(zone, validity.isoformat()) fake = Fake() form = FakeForm.from_json({ 'spatial': { 'zones': [geoid], 'granularity': faker.spatial_granularity() } }) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 1) self.assertEqual(fake.spatial.zones[0], zone)
def test_resolve_zones_from_json(self): Fake, FakeForm = self.factory() zone = GeoZoneFactory() zone = GeoZoneFactory(validity__end=END_OF_TIME) for i in range(3): start = zone.validity.start - (i + 1) * A_YEAR end = zone.validity.start - i * A_YEAR GeoZoneFactory(code=zone.code, validity__start=start, validity__end=end) validity = faker.date_between(start_date=zone.validity.start, end_date=zone.validity.end) geoid = '{0.level}:{0.code}@{1}'.format(zone, validity.isoformat()) fake = Fake() form = FakeForm.from_json({ 'spatial': { 'zones': [geoid], 'granularity': faker.spatial_granularity() } }) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 1) self.assertEqual(fake.spatial.zones[0], zone)
def test_with_initial_granularity(self): Fake, FakeForm = self.factory() fake = Fake(spatial=SpatialCoverage( granularity=faker.spatial_granularity())) granularity = faker.spatial_granularity() data = MultiDict({'spatial-granularity': granularity}) form = FakeForm(data, fake) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(fake.spatial.granularity, granularity)
def test_with_initial_granularity(self): Fake, FakeForm = self.factory() fake = Fake(spatial=SpatialCoverage( granularity=faker.spatial_granularity() )) granularity = faker.spatial_granularity() data = MultiDict({'spatial-granularity': granularity}) form = FakeForm(data, obj=fake) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(fake.spatial.granularity, granularity)
def test_with_zone_empty_string(self): Fake, FakeForm = self.factory() fake = Fake() form = FakeForm(MultiDict({ 'spatial-zones': '', 'spatial-granularity': faker.spatial_granularity() })) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 0)
def test_with_zone_empty_string(self): Fake, FakeForm = self.factory() fake = Fake() form = FakeForm( MultiDict({ 'spatial-zones': '', 'spatial-granularity': faker.spatial_granularity() })) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 0)
def test_with_valid_zone(self): Fake, FakeForm = self.factory() zone = GeoZoneFactory() fake = Fake() form = FakeForm(MultiDict({ 'spatial-zones': zone.id, 'spatial-granularity': faker.spatial_granularity() })) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 1) self.assertEqual(fake.spatial.zones[0], zone)
def test_with_valid_zone(self): Fake, FakeForm = self.factory() zone = GeoZoneFactory() fake = Fake() form = FakeForm( MultiDict({ 'spatial-zones': zone.id, 'spatial-granularity': faker.spatial_granularity() })) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 1) self.assertEqual(fake.spatial.zones[0], zone)
def test_with_valid_zone_from_json(self): Fake, FakeForm = self.factory() zone = GeoZoneFactory() fake = Fake() form = FakeForm.from_json({ 'spatial': { 'zones': zone.id, 'granularity': faker.spatial_granularity() } }) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 1) self.assertEqual(fake.spatial.zones[0], zone)
def test_with_valid_zone_from_json(self): Fake, FakeForm = self.factory() zone = GeoZoneFactory() fake = Fake() form = FakeForm.from_json({ 'spatial': { 'zones': zone.id, 'granularity': faker.spatial_granularity() } }) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), 1) self.assertEqual(fake.spatial.zones[0], zone)
def test_resolve_zones_from_json_failure(self): Fake, FakeForm = self.factory() GeoZoneFactory.create_batch(3) form = FakeForm.from_json({ 'spatial': { 'zones': [ '{0}:{0}@{0}'.format(faker.unique_string()) for _ in range(2) ], 'granularity': faker.spatial_granularity() } }) form.validate() self.assertIn('spatial', form.errors) self.assertEqual(len(form.errors['spatial']), 1) self.assertIn('zones', form.errors['spatial']) self.assertEqual(len(form.errors['spatial']['zones']), 1)
def test_with_valid_zone_ids(self): Fake, FakeForm = self.factory() zones = [GeoZoneFactory() for _ in range(3)] fake = Fake() form = FakeForm(MultiDict({ 'spatial-zones': ','.join([z.id for z in zones]), 'spatial-granularity': faker.spatial_granularity() })) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), len(zones)) expected_zones = dict((z.id, z) for z in zones) for zone in fake.spatial.zones: self.assertIn(zone.id, expected_zones) self.assertEqual(zone, expected_zones[zone.id])
def test_with_valid_zone_ids(self): Fake, FakeForm = self.factory() zones = [GeoZoneFactory() for _ in range(3)] fake = Fake() form = FakeForm( MultiDict({ 'spatial-zones': ','.join([z.id for z in zones]), 'spatial-granularity': faker.spatial_granularity() })) form.validate() self.assertEqual(form.errors, {}) form.populate_obj(fake) self.assertEqual(len(fake.spatial.zones), len(zones)) expected_zones = dict((z.id, z) for z in zones) for zone in fake.spatial.zones: self.assertIn(zone.id, expected_zones) self.assertEqual(zone, expected_zones[zone.id])
def test_resolve_zones_from_json_failure(self): Fake, FakeForm = self.factory() GeoZoneFactory.create_batch(3) form = FakeForm.from_json({ 'spatial': { 'zones': [ '{0}:{0}@{0}'.format(faker.unique_string()) for _ in range(2) ], 'granularity': faker.spatial_granularity() } }) form.validate() self.assertIn('spatial', form.errors) self.assertEqual(len(form.errors['spatial']), 1) self.assertIn('zones', form.errors['spatial']) self.assertEqual(len(form.errors['spatial']['zones']), 1)