예제 #1
0
    def test_import_csv_no_location(self):
        """
        tests locationless places are not imported.
        """
        assert Place.objects.all().count() == 0
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0\nFlapper Jacks,,,,\nDonut House,124 Fakey St.,1.001,2.001\nSoup Sacks,,,"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001
예제 #2
0
    def test_import_csv_geocoding(self, mock_get_metro):
        """
        tests importing some locations with only 
        addresses specified
        """
        mock_get_metro.return_value = {
            'city_name': 'CHICAGO',
            'multiple_cities': False
        }

        assert Place.objects.all().count() == 0
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO("Donut Arms Hotel, 205 South Wabash St.,,")
        csv_file.name = 'test.csv'

        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 1

        place = Place.objects.get(normalized_name='DONUT ARMS HOTEL')
        assert place.address == '205 South Wabash St.'
        assert place.location.x - -87.626153836734701 < 0.1
        assert place.location.y - 41.879488336734696 < 0.1
예제 #3
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_csv_synonyms(self):
        """
        test importing synonyms
        """
        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,,House of D, D House")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 2
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0
        
        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

                
        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms
예제 #4
0
    def test_import_csv(self):
        """
        test importing a csv full of places with no errors
        """

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0\nDonut House,124 Fakey St.,1.001,2.001"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 2)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)
예제 #5
0
    def test_import_same_name(self):
        """
        tests that the importer can handle places with the same name.
        """

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0,http://www.example.org/bs/0\nDonut Mountain,99 Fakley St.,99.0,22.0,http://www.example.org/bs/1"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)
        self.assertEqual(Place.objects.all().count(), 2)

        locs = []
        for place in Place.objects.filter(
                normalized_name='DONUT MOUNTAIN').all():
            locs.append(
                (place.address, place.location.x, place.location.y, place.url))

        assert ('123 Fakey St.', 2.0, 1.0,
                'http://www.example.org/bs/0') in locs
        assert ('99 Fakley St.', 22.0, 99.0,
                'http://www.example.org/bs/1') in locs
예제 #6
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_same_name_synonym(self):
        """
        tests that the importer can handle places with the same name.
        and maintain separate synonym lists.
        """

        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0,http://www.example.org/bs/0,123 D House, Mount D\nDonut Mountain,99 Fakley St.,99.0,22.0,http://www.example.org/bs/1,99 D House, Mount D")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        locs = []
        for place in Place.objects.filter(normalized_name='DONUT MOUNTAIN').all():
            synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
            ll = [place.address, place.location.x, place.location.y, place.url]
            ll.extend(sorted(synonyms))
            locs.append(tuple(ll))

        assert ('123 Fakey St.', 2.0, 1.0, 'http://www.example.org/bs/0', '123 D HOUSE', 'MOUNT D') in locs
        assert ('99 Fakley St.', 22.0, 99.0, 'http://www.example.org/bs/1', '99 D HOUSE', 'MOUNT D') in locs
예제 #7
0
    def test_import_csv_geocoding(self, mock_get_metro):
        """
        tests importing some locations with only 
        addresses specified
        """
        mock_get_metro.return_value = {
            'city_name': 'CHICAGO',
            'multiple_cities': False
        }

        self.assertEqual(Place.objects.all().count(), 0)
        self.assertEqual(
            True,
            test_client_login(self.client,
                              username='******',
                              password='******'))

        csv_file = StringIO("Donut Arms Hotel, 205 South Wabash St.,,")
        csv_file.name = 'test.csv'

        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)
        self.assertEqual(Place.objects.all().count(), 1)

        place = Place.objects.get(normalized_name='DONUT ARMS HOTEL')
        self.assertEqual(place.address, '205 South Wabash St.')
        self.assertAlmostEqual(place.location.x, -87.626153836734701, places=4)
        self.assertAlmostEqual(place.location.y, 41.879488336734696, places=4)
예제 #8
0
    def test_import_csv_lat_lon_priority(self, mock_get_metro):
        """
        tests importing locations prioritizes 
        lat lon over address geocoding.
        """
        mock_get_metro.return_value = {
            'city_name': 'CHICAGO',
            'multiple_cities': False
        }

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO("Donut Arms Hotel, 205 South Wabash St.,1.0,2.0")
        csv_file.name = 'test.csv'

        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 1)

        place = Place.objects.get(normalized_name='DONUT ARMS HOTEL')
        self.assertEqual(place.address, '205 South Wabash St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)
예제 #9
0
    def test_export_csv_synonyms(self):
        """
        test exporting a place with synonyms
        """
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        place_type = PlaceType.objects.get(slug='poi')
        place = Place(pretty_name='Donut Palace',
                      place_type=place_type,
                      address='100 Bubble Street',
                      location=geos.Point(1.0, 2.0))
        place.save()
        ps = PlaceSynonym(pretty_name='Donut Hole', place=place)
        ps.save()
        ps = PlaceSynonym(pretty_name='Donut Pally', place=place)
        ps.save()

        place = Place(pretty_name='Donut Sanctuary',
                      place_type=place_type,
                      address='101 Bubble Street',
                      location=geos.Point(3.0, 4.0),
                      url='http://www.example.org/bs')
        place.save()
        ps = PlaceSynonym(pretty_name='Sancy D', place=place)
        ps.save()
        ps = PlaceSynonym(pretty_name='D Sanc', place=place)
        ps.save()

        response = self.client.post(self.export_url,
                                    {'place_type': place_type.id})
        self.assertEqual(response.status_code, 200)

        rows = csv.reader(StringIO(response.content))

        count = 0
        for row in rows:
            self.assertEqual(len(row), 7)
            synonyms = set(row[5:])
            if row[0] == 'Donut Palace':
                self.assertEqual(row[1], '100 Bubble Street')
                self.assertEqual(row[2], '2.0')
                self.assertEqual(row[3], '1.0')
                self.assertEqual(row[4], '')
                assert 'Donut Hole' in synonyms
                assert 'Donut Pally' in synonyms
            elif row[0] == 'Donut Sanctuary':
                self.assertEqual(row[1], '101 Bubble Street')
                self.assertEqual(row[2], '4.0')
                self.assertEqual(row[3], '3.0')
                self.assertEqual(row[4], 'http://www.example.org/bs')
                assert 'Sancy D' in synonyms
                assert 'D Sanc' in synonyms
            else:
                self.fail('Unexpected Place!' % row[0])
            count += 1

        self.assertEqual(count, 2)
예제 #10
0
    def test_import_export(self):
        """
        tests that the results of an export can be imported
        """
        assert Place.objects.all().count() == 0
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0\nFlapper Jacks,,,,\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs\nSoup Sacks,,,"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001
        assert place.url == 'http://www.example.org/bs'

        response = self.client.post(self.export_url,
                                    {'place_type': place.place_type.id})
        assert response.status_code == 200

        Place.objects.all().delete()
        assert Place.objects.all().count() == 0

        csv_file = StringIO(response.content)
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001
        assert place.url == 'http://www.example.org/bs'
예제 #11
0
파일: tests.py 프로젝트: mesrut/openblock
 def test_export_csv_synonyms(self):
     """
     test exporting a place with synonyms
     """
     assert test_client_login(self.client, username='******', password='******') == True
     
     place_type = PlaceType.objects.get(slug='poi')
     place = Place(pretty_name='Donut Palace', place_type=place_type,
                   address='100 Bubble Street', location=geos.Point(1.0, 2.0))
     place.save()
     ps = PlaceSynonym(pretty_name='Donut Hole', place=place)
     ps.save()
     ps = PlaceSynonym(pretty_name='Donut Pally', place=place)
     ps.save()
     
 
     place = Place(pretty_name='Donut Sanctuary', place_type=place_type,
                   address='101 Bubble Street', location=geos.Point(3.0, 4.0),
                   url='http://www.example.org/bs')
     place.save()
     ps = PlaceSynonym(pretty_name='Sancy D', place=place)
     ps.save()
     ps = PlaceSynonym(pretty_name='D Sanc', place=place)
     ps.save()
     
     response = self.client.post(self.export_url, {'place_type': place_type.id})
     assert response.status_code == 200
     
     rows = csv.reader(StringIO(response.content))
     
     count = 0
     for row in rows:
         assert len(row) == 7
         synonyms = set(row[5:])
         if row[0] == 'Donut Palace':
             assert row[1] == '100 Bubble Street'
             assert row[2] == '2.0'
             assert row[3] == '1.0'
             assert row[4] == ''
             assert 'Donut Hole' in synonyms
             assert 'Donut Pally' in synonyms
         elif row[0] == 'Donut Sanctuary':
             assert row[1] == '101 Bubble Street'
             assert row[2] == '4.0'
             assert row[3] == '3.0'
             assert row[4] == 'http://www.example.org/bs'
             assert 'Sancy D' in synonyms
             assert 'D Sanc' in synonyms
         else: 
             assert 0, 'Unexpected Place!'       
         count += 1
         
     assert count == 2
예제 #12
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_export(self):
        """
        tests that the results of an export can be imported
        """
        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0\nFlapper Jacks,,,,\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs\nSoup Sacks,,,")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 2
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0
                
        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001
        assert place.url == 'http://www.example.org/bs'

        response = self.client.post(self.export_url, {'place_type': place.place_type.id})
        assert response.status_code == 200
        
        Place.objects.all().delete()
        assert Place.objects.all().count() == 0

        csv_file = StringIO(response.content)
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 2
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0
                
        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001
        assert place.url == 'http://www.example.org/bs'
예제 #13
0
    def test_import_csv_changes_place_types(self):
        """
        test importing a place that changes a placetype
        """
        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 1)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)
        self.assertEqual(place.place_type.id, 1)

        new_type = PlaceType(name='ZZZZ',
                             plural_name='ZZZZs',
                             indefinite_article='a',
                             slug='funhouse',
                             is_geocodable=False,
                             is_mappable=True)
        new_type.save()

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '%d' % new_type.id,
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 1)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)
        self.assertEqual(place.place_type.id, new_type.id)
예제 #14
0
    def test_import_csv_synonyms(self):
        """
        test importing synonyms
        """
        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,,House of D, D House"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 2)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        self.assertEqual(len(synonyms), 2)
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        self.assertEqual(len(synonyms), 2)
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms
예제 #15
0
    def test_export_csv(self):
        """
        test exporting a place type as csv
        """
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        place_type = PlaceType.objects.get(slug='poi')
        place = Place(pretty_name='Donut Palace',
                      place_type=place_type,
                      address='100 Bubble Street',
                      location=geos.Point(1.0, 2.0))
        place.save()
        place = Place(pretty_name='Donut Sanctuary',
                      place_type=place_type,
                      address='101 Bubble Street',
                      location=geos.Point(3.0, 4.0),
                      url='http://www.example.org/bs')
        place.save()

        response = self.client.post(self.export_url,
                                    {'place_type': place_type.id})
        assert response.status_code == 200

        rows = csv.reader(StringIO(response.content))

        count = 0
        for row in rows:
            assert len(row) == 5
            if row[0] == 'Donut Palace':
                assert row[1] == '100 Bubble Street'
                assert row[2] == '2.0'
                assert row[3] == '1.0'
                assert row[4] == ''
            elif row[0] == 'Donut Sanctuary':
                assert row[1] == '101 Bubble Street'
                assert row[2] == '4.0'
                assert row[3] == '3.0'
                assert row[4] == 'http://www.example.org/bs'
            else:
                assert 0, 'Unexpected Place!'
            count += 1

        assert count == 2
예제 #16
0
    def test_import_same_name(self):
        """
        tests that the importer can handle places with the same name.
        """

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0,http://www.example.org/bs/0\nDonut Mountain,99 Fakley St.,99.0,22.0,http://www.example.org/bs/1")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        self.assertEqual(response.status_code, 200)
        self.assertEqual(Place.objects.all().count(), 2)

        locs = []
        for place in Place.objects.filter(normalized_name='DONUT MOUNTAIN').all():
            locs.append((place.address, place.location.x, place.location.y, place.url))

        assert ('123 Fakey St.', 2.0, 1.0, 'http://www.example.org/bs/0') in locs
        assert ('99 Fakley St.', 22.0, 99.0, 'http://www.example.org/bs/1') in locs
예제 #17
0
    def test_export_csv(self):
        """
        test exporting a place type as csv
        """
        assert test_client_login(self.client, username='******', password='******') == True
        
        place_type = PlaceType.objects.get(slug='poi')
        place = Place(pretty_name='Donut Palace', place_type=place_type,
                      address='100 Bubble Street', location=geos.Point(1.0, 2.0))
        place.save()
        place = Place(pretty_name='Donut Sanctuary', place_type=place_type,
                      address='101 Bubble Street', location=geos.Point(3.0, 4.0),
                      url='http://www.example.org/bs')
        place.save()

        
        response = self.client.post(self.export_url, {'place_type': place_type.id})
        assert response.status_code == 200
        
        rows = csv.reader(StringIO(response.content))
        
        count = 0
        for row in rows:
            self.assertEqual(len(row), 5)
            if row[0] == 'Donut Palace':
                self.assertEqual(row[1], '100 Bubble Street')
                self.assertEqual(row[2], '2.0')
                self.assertEqual(row[3], '1.0')
                self.assertEqual(row[4], '')
            elif row[0] == 'Donut Sanctuary':
                self.assertEqual(row[1], '101 Bubble Street')
                self.assertEqual(row[2], '4.0')
                self.assertEqual(row[3], '3.0')
                self.assertEqual(row[4], 'http://www.example.org/bs')
            else: 
                self.fail('Unexpected Place! %s' % row[0])
            count += 1

        self.assertEqual(count, 2)
예제 #18
0
    def test_import_same_name_synonym(self):
        """
        tests that the importer can handle places with the same name.
        and maintain separate synonym lists.
        """

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0,http://www.example.org/bs/0,123 D House, Mount D\nDonut Mountain,99 Fakley St.,99.0,22.0,http://www.example.org/bs/1,99 D House, Mount D"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 2)

        locs = []
        for place in Place.objects.filter(
                normalized_name='DONUT MOUNTAIN').all():
            synonyms = set([
                x.normalized_name
                for x in PlaceSynonym.objects.filter(place=place).all()
            ])
            ll = [place.address, place.location.x, place.location.y, place.url]
            ll.extend(sorted(synonyms))
            locs.append(tuple(ll))

        assert ('123 Fakey St.', 2.0, 1.0, 'http://www.example.org/bs/0',
                '123 D HOUSE', 'MOUNT D') in locs
        assert ('99 Fakley St.', 22.0, 99.0, 'http://www.example.org/bs/1',
                '99 D HOUSE', 'MOUNT D') in locs
예제 #19
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_csv_lat_lon_priority(self, mock_get_metro):
        """
        tests importing locations prioritizes 
        lat lon over address geocoding.
        """
        mock_get_metro.return_value = {'city_name': 'CHICAGO',
                                       'multiple_cities': False}

        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Arms Hotel, 205 South Wabash St.,1.0,2.0")
        csv_file.name = 'test.csv'

        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 1
        
        place = Place.objects.get(normalized_name='DONUT ARMS HOTEL')
        assert place.address == '205 South Wabash St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0
예제 #20
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_csv_geocoding(self, mock_get_metro):
        """
        tests importing some locations with only 
        addresses specified
        """
        mock_get_metro.return_value = {'city_name': 'CHICAGO',
                                       'multiple_cities': False}

        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Arms Hotel, 205 South Wabash St.,,")
        csv_file.name = 'test.csv'

        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 1
        
        place = Place.objects.get(normalized_name='DONUT ARMS HOTEL')
        assert place.address == '205 South Wabash St.'
        assert place.location.x - -87.626153836734701 < 0.1
        assert place.location.y - 41.879488336734696 < 0.1
예제 #21
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_csv_no_location(self):
        """
        tests locationless places are not imported.
        """
        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0\nFlapper Jacks,,,,\nDonut House,124 Fakey St.,1.001,2.001\nSoup Sacks,,,")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 2
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0
                
        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001
예제 #22
0
    def test_import_csv_geocoding(self, mock_get_metro):
        """
        tests importing some locations with only 
        addresses specified
        """
        mock_get_metro.return_value = {'city_name': 'CHICAGO',
                                       'multiple_cities': False}

        self.assertEqual(Place.objects.all().count(), 0)
        self.assertEqual(True,
                         test_client_login(self.client, username='******', password='******'))

        csv_file = StringIO("Donut Arms Hotel, 205 South Wabash St.,,")
        csv_file.name = 'test.csv'

        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        self.assertEqual(response.status_code, 200)
        self.assertEqual(Place.objects.all().count(), 1)

        place = Place.objects.get(normalized_name='DONUT ARMS HOTEL')
        self.assertEqual(place.address, '205 South Wabash St.')
        self.assertAlmostEqual(place.location.x, -87.626153836734701, places=4)
        self.assertAlmostEqual(place.location.y, 41.879488336734696, places=4)
예제 #23
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_csv_changes_place_types(self):
        """
        test importing a place that changes a placetype
        """
        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 1
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0
        assert place.place_type.id == 1

        new_type = PlaceType(name='ZZZZ', plural_name='ZZZZs', 
                             indefinite_article='a', slug='funhouse',
                             is_geocodable=False, is_mappable=True)
        new_type.save()
        
        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '%d' % new_type.id, 'csv_file': csv_file})
        assert response.status_code == 200
        
        assert Place.objects.all().count() == 1
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0
        assert place.place_type.id == new_type.id
예제 #24
0
    def test_import_csv(self):
        """
        test importing a csv full of places with no errors
        """
        
        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0\nDonut House,124 Fakey St.,1.001,2.001")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        self.assertEqual(response.status_code, 200)
        
        self.assertEqual(Place.objects.all().count(), 2)
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)
        
        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)
예제 #25
0
    def test_import_update_synonyms(self):
        """
        tests that the results of an export can be re-imported'
        to modify things, and no duplicates are formed.
        """

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs,House of D, D House"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 2)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        self.assertEqual(len(synonyms), 2)
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        # re-import
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)
        self.assertEqual(Place.objects.all().count(), 2)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        self.assertEqual(len(synonyms), 2)
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        self.assertEqual(len(synonyms), 2)
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        # re-import change an address slightly, change synonyms
        csv_file = StringIO(
            "Donut Mountain,121 Fakey St.,1.0,2.0,,Big Doughy, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs, D House,Meye Donuts"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        self.assertEqual(response.status_code, 200)
        self.assertEqual(Place.objects.all().count(), 2)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '121 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        self.assertEqual(len(synonyms), 2)
        assert 'BIG DOUGHY' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        self.assertEqual(len(synonyms), 2)
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' not in synonyms
        assert 'MEYE DONUTS' in synonyms
예제 #26
0
    def test_import_export_synonyms(self):
        """
        tests that the results of an export can be imported
        including synonyms
        """

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client, username='******', password='******') == True


        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs,House of D, D House")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 2)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        response = self.client.post(self.export_url, {'place_type': place.place_type.id})
        self.assertEqual(response.status_code, 200)

        Place.objects.all().delete()
        self.assertEqual(Place.objects.all().count(), 0)

        csv_file = StringIO(response.content)
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        self.assertEqual(response.status_code, 200)

        self.assertEqual(Place.objects.all().count(), 2)

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms
예제 #27
0
    def test_import_csv_synonym_change(self):
        """
        test changing synonyms via import
        """

        self.assertEqual(Place.objects.all().count(), 0)
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,,House of D, D House")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        self.assertEqual(response.status_code, 200)
        
        self.assertEqual(Place.objects.all().count(), 2)
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)
        
        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

                
        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        # now change one synonym of each
        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0,,Ole Doughy, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,,Dunky H, D House")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        self.assertEqual(response.status_code, 200)
        
        self.assertEqual(Place.objects.all().count(), 2)
        
        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        self.assertEqual(place.address, '123 Fakey St.')
        self.assertEqual(place.location.x, 2.0)
        self.assertEqual(place.location.y, 1.0)
        
        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'OLE DOUGHY' in synonyms
        assert 'DOUGH MO' in synonyms

                
        place = Place.objects.get(normalized_name='DONUT HOUSE')
        self.assertEqual(place.address, '124 Fakey St.')
        self.assertEqual(place.location.x, 2.001)
        self.assertEqual(place.location.y, 1.001)

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        self.assertEqual(len(synonyms), 2)
        assert 'DUNKY H' in synonyms
        assert 'D HOUSE' in synonyms
예제 #28
0
    def test_import_csv_synonym_change(self):
        """
        test changing synonyms via import
        """

        assert Place.objects.all().count() == 0
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,,House of D, D House"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        # now change one synonym of each
        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0,,Ole Doughy, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,,Dunky H, D House"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'OLE DOUGHY' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'DUNKY H' in synonyms
        assert 'D HOUSE' in synonyms
예제 #29
0
    def test_import_export_synonyms(self):
        """
        tests that the results of an export can be imported
        including synonyms
        """

        assert Place.objects.all().count() == 0
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        csv_file = StringIO(
            "Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs,House of D, D House"
        )
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        response = self.client.post(self.export_url,
                                    {'place_type': place.place_type.id})
        assert response.status_code == 200

        Place.objects.all().delete()
        assert Place.objects.all().count() == 0

        csv_file = StringIO(response.content)
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {
            'place_type': '1',
            'csv_file': csv_file
        })
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms

        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([
            x.normalized_name
            for x in PlaceSynonym.objects.filter(place=place).all()
        ])
        assert len(synonyms) == 2
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms
예제 #30
0
파일: tests.py 프로젝트: mesrut/openblock
    def test_import_update_synonyms(self):
        """
        tests that the results of an export can be re-imported'
        to modify things, and no duplicates are formed.
        """

        assert Place.objects.all().count() == 0
        assert test_client_login(self.client, username='******', password='******') == True

        csv_file = StringIO("Donut Mountain,123 Fakey St.,1.0,2.0,,Big Dough, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs,House of D, D House")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms


        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        # re-import
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '123 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'BIG DOUGH' in synonyms
        assert 'DOUGH MO' in synonyms


        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' in synonyms

        # re-import change an address slightly, change synonyms
        csv_file = StringIO("Donut Mountain,121 Fakey St.,1.0,2.0,,Big Doughy, Dough Mo\nDonut House,124 Fakey St.,1.001,2.001,http://www.example.org/bs, D House,Meye Donuts")
        csv_file.name = 'test.csv'
        response = self.client.post(self.import_url, {'place_type': '1', 'csv_file': csv_file})
        assert response.status_code == 200

        assert Place.objects.all().count() == 2

        place = Place.objects.get(normalized_name='DONUT MOUNTAIN')
        assert place.address == '121 Fakey St.'
        assert place.location.x == 2.0
        assert place.location.y == 1.0

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'BIG DOUGHY' in synonyms
        assert 'DOUGH MO' in synonyms


        place = Place.objects.get(normalized_name='DONUT HOUSE')
        assert place.address == '124 Fakey St.'
        assert place.location.x == 2.001
        assert place.location.y == 1.001

        synonyms = set([x.normalized_name for x in PlaceSynonym.objects.filter(place=place).all()])
        assert len(synonyms) == 2
        assert 'D HOUSE' in synonyms
        assert 'HOUSE OF D' not in synonyms
        assert 'MEYE DONUTS' in synonyms