コード例 #1
0
ファイル: test_fields.py プロジェクト: odtvince/udata
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
ファイル: test_fields.py プロジェクト: odtvince/udata
    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)
コード例 #5
0
ファイル: test_fields.py プロジェクト: odtvince/udata
    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)
コード例 #6
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)
コード例 #7
0
ファイル: test_fields.py プロジェクト: odtvince/udata
    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)
コード例 #8
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)
コード例 #9
0
    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)
コード例 #10
0
ファイル: test_fields.py プロジェクト: odtvince/udata
    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)
コード例 #11
0
ファイル: test_fields.py プロジェクト: odtvince/udata
    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)
コード例 #12
0
ファイル: test_fields.py プロジェクト: odtvince/udata
    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])
コード例 #13
0
    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])
コード例 #14
0
    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)