def test_location_city_region_optout(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data.update(_get_privacy_fields(MOZILLIANS)) form = LocationForm(data=self.data) eq_(form.is_valid(), True) eq_(form.instance.geo_country, self.country) eq_(form.instance.geo_region, None) eq_(form.instance.geo_city, None)
def test_location_region_required_if_city(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data.update({'savecity': True}) self.data.update(_get_privacy_fields(MOZILLIANS)) form = LocationForm(data=self.data) ok_(not form.is_valid()) ok_('saveregion' in form.errors)
def test_lat_lng_does_not_point_to_country(self): # If form includes lat/lng, must point to some country; fails if not user = UserFactory.create(email='*****@*****.**') data = model_to_dict(user.userprofile) # invalid data data['lat'] = data['lng'] = 0.0 form = LocationForm(data=data, instance=user.userprofile) with patch('mozillians.users.models.UserProfile.reverse_geocode'): # Pretend that geocoding doesn't come up with a country user.userprofile.geo_country = None ok_(not form.is_valid())
def test_location_api_not_called_when_latlang_unchanged(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data['lng'] = self.user.userprofile.lng self.data['lat'] = self.user.userprofile.lat self.data.update(_get_privacy_fields(MOZILLIANS)) initial = { 'lat': self.user.userprofile.lat, 'lng': self.user.userprofile.lng } form = LocationForm(data=self.data, initial=initial) ok_(form.is_valid()) ok_(not mock_reverse_geocode.called)
def test_lat_lng_does_point_to_country(self): # If form includes lat/lng, must point to some country; succeeds if so user = UserFactory.create(email='*****@*****.**') data = model_to_dict(user.userprofile) # Try again, with valid data data['lng'] = 35.918596 data['lat'] = -79.083799 country = CountryFactory.create() form = LocationForm(data=data, instance=user.userprofile) with patch('mozillians.users.models.UserProfile.reverse_geocode'): # Pretend that geocoding does come up with a country user.userprofile.geo_country = country ok_(form.is_valid())
def test_location_data_required(self): user = UserFactory.create(email='*****@*****.**') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', 'location_section': '' } data.update(_get_privacy_fields(MOZILLIANS)) form = LocationForm(data=data) eq_(form.is_valid(), False) ok_(form.errors.get('lat')) ok_(form.errors.get('lng'))