def test_with_locale(self): """ If the request has a set locale, the form should only accept banners available in that locale. """ fr_banner = FacebookBannerFactory.create() FacebookBannerLocaleFactory.create(banner=fr_banner, locale='fr') en_banner = FacebookBannerFactory.create() FacebookBannerLocaleFactory.create(banner=en_banner, locale='en-us') form = self.form('fr', {'text': 'asdf', 'banner': fr_banner.id}) ok_(form.is_valid()) form = self.form('fr', {'text': 'asdf', 'banner': en_banner.id}) ok_(not form.is_valid())
def test_no_locale(self): """ If the request has no set locale, the form should accept any banner in any locale. """ fr_banner = FacebookBannerFactory.create() FacebookBannerLocaleFactory.create(banner=fr_banner, locale='fr') en_banner = FacebookBannerFactory.create() FacebookBannerLocaleFactory.create(banner=en_banner, locale='en-us') form = self.form(None, {'text': 'asdf', 'banner': fr_banner.id}) ok_(form.is_valid()) form = self.form(None, {'text': 'asdf', 'banner': en_banner.id}) ok_(form.is_valid())
def test_image_for_locale_no_locale(self): """ If a banner is not available in the requested locale, return the default image. """ banner = FacebookBannerFactory.create(image='test') ok_(banner.image_for_locale('es').name.endswith('test'))
def test_notify_new_instance(self): """ If the instance being saved is new, no notification should be created. """ user = FacebookUserFactory.create() banner = FacebookBannerFactory.create() instance = FacebookBannerInstanceFactory(user=user, banner=banner) instance.save() eq_(user.appnotification_set.exists(), False)
def test_image_for_locale_found(self): """ If the banner is available in the requested locale, return the image for that locale. """ banner = FacebookBannerFactory.create(image='banner') FacebookBannerLocaleFactory.create(banner=banner, locale='pt-BR', image='locale') ok_(banner.image_for_locale('pt-BR').name.endswith('locale'))
def test_image_for_locale_blank_default(self): """ If a banner is available in the requested locale but the image is blank, return the default image. """ banner = FacebookBannerFactory.create(image='banner') FacebookBannerLocaleFactory.create(banner=banner, locale='es', image='') ok_(banner.image_for_locale('es').name.endswith('banner'))
def test_image_for_locale_fallback(self): """ If the banner is available in a certain language and the requested locale is a subset of that language that isn't available, return the image for the fallback language. """ banner = FacebookBannerFactory.create(image='banner') FacebookBannerLocaleFactory.create(banner=banner, locale='de', image='locale') ok_(banner.image_for_locale('de-ch').name.endswith('locale'))
def test_similar_locales(self): """ Regression test for a bug where a user in the de locale would get a banner choice for each de locale (de, de-at, de-ch, de-de), causing duplicate choices and form processing errors. """ banner = FacebookBannerFactory.create() FacebookBannerLocaleFactory.create(banner=banner, locale='de') FacebookBannerLocaleFactory.create(banner=banner, locale='de-at') FacebookBannerLocaleFactory.create(banner=banner, locale='de-ch') FacebookBannerLocaleFactory.create(banner=banner, locale='de-de') form = self.form('de') eq_(len(form.fields['banner'].choices), 1)
def test_no_profile_image(self): """ If the user did not check `use_profile_image`, create the banner instance and return a 201 Created. """ banner = FacebookBannerFactory.create() response = self.banner_create(banner=banner.id, text='asdf', next_action='', use_profile_image=False) ok_(FacebookBannerInstance.objects.filter(banner=banner, user=self.user) .exists()) eq_(response.status_code, 201) response_data = json.loads(response.content) with self.activate('en-US'): eq_(response_data['next'], absolutify(reverse('facebook.banner_list')))
def test_save_and_share(self): """ If the user clicks the `Save and Share` button, the `next` link should point to the share page for the new banner instance. """ banner = FacebookBannerFactory.create() response = self.banner_create(banner=banner.id, text='asdf', next_action='share', use_profile_image=False) instance = FacebookBannerInstance.objects.get(banner=banner, user=self.user) response_data = json.loads(response.content) with self.activate('en-US'): eq_(response_data['next'], absolutify(reverse('facebook.banners.share', args=[instance.id])))
def test_use_profile_image(self, delay): """ If the user checked `use_profile_image`, create a banner instance, trigger the celery task and return a 202 Accepted. """ banner = FacebookBannerFactory.create() response = self.banner_create(banner=banner.id, text='asdf', next_action='', use_profile_image=True) # Asserts that banner instance exists. instance = FacebookBannerInstance.objects.get(banner=banner, user=self.user) delay.assert_called_with(instance.id) # Assert response contians the expected links. eq_(response.status_code, 202) response_data = json.loads(response.content) with self.activate('en-US'): eq_(response_data['next'], absolutify(reverse('facebook.banner_list'))) eq_(response_data['check_url'], reverse('facebook.banners.create_image_check', args=[instance.id]))
def test_fb_banner_thumbnail_rename(self): banner = FacebookBannerFactory.create(name='Test banner') filename = fb_banner_thumbnail_rename(banner, 'test.png') eq_(filename, 'simple/path/thumb_test-banner.png')