def test_name_summary_lengths(self): delicious = Addon.objects.get() short_data = { 'name': u'n', 'summary': u's', 'slug': u'bar', 'description': u'1234567890'} over_70_data = { 'name': u'this is a name that hits the 50 char limit almost', 'summary': u'this is a summary that doesn`t get close to the ' u'existing 250 limit but is over 70', 'slug': u'bar', 'description': u'1234567890'} under_70_data = { 'name': u'this is a name that is over the 50 char limit by a few', 'summary': u'ab', 'slug': u'bar', 'description': u'1234567890'} # short name and summary - both allowed with DescribeForm form = forms.DescribeForm( short_data, request=self.request, instance=delicious) assert form.is_valid() # but not with DescribeFormContentOptimization form = forms.DescribeFormContentOptimization( short_data, request=self.request, instance=delicious) assert not form.is_valid() assert form.errors['name'] == [ u'Ensure this value has at least 2 characters (it has 1).'] assert form.errors['summary'] == [ u'Ensure this value has at least 2 characters (it has 1).'] # As are long names and summaries form = forms.DescribeForm( over_70_data, request=self.request, instance=delicious) assert form.is_valid() # but together are over 70 chars so no longer allowed form = forms.DescribeFormContentOptimization( over_70_data, request=self.request, instance=delicious) assert not form.is_valid() assert len(over_70_data['name']) + len(over_70_data['summary']) == 130 assert form.errors['name'] == [ u'Ensure name and summary combined are at most 70 characters ' u'(they have 130).'] assert 'summary' not in form.errors # DescribeForm has a lower limit for name length form = forms.DescribeForm( under_70_data, request=self.request, instance=delicious) assert not form.is_valid() assert form.errors['name'] == [ u'Ensure this value has at most 50 characters (it has 54).'] # DescribeFormContentOptimization only cares that the total is <= 70 form = forms.DescribeFormContentOptimization( under_70_data, request=self.request, instance=delicious) assert form.is_valid() assert len(under_70_data['name']) + len(under_70_data['summary']) == 56
def test_name_summary_auto_cropping(self): delicious = Addon.objects.get() assert delicious.default_locale == 'en-US' summary_needs_cropping = { 'name_en-us': 'a' * 25, 'name_fr': 'b' * 30, 'summary_en-us': 'c' * 45, 'summary_fr': 'd' * 45, # 30 + 45 is > 70 'slug': 'slug', 'description_en-us': 'z' * 10, } form = forms.DescribeFormContentOptimization( summary_needs_cropping, request=self.request, instance=delicious, should_auto_crop=True, ) assert form.is_valid(), form.errors assert form.cleaned_data['name']['en-us'] == 'a' * 25 # no change assert form.cleaned_data['summary']['en-us'] == 'c' * 45 # no change assert form.cleaned_data['name']['fr'] == 'b' * 30 # no change assert form.cleaned_data['summary']['fr'] == 'd' * 40 # 45 to 40 summary_needs_cropping_no_name = { 'name_en-us': 'a' * 25, 'summary_en-us': 'c' * 45, 'summary_fr': 'd' * 50, 'slug': 'slug', 'description_en-us': 'z' * 10, } form = forms.DescribeFormContentOptimization( summary_needs_cropping_no_name, request=self.request, instance=delicious, should_auto_crop=True, ) assert form.is_valid(), form.errors assert form.cleaned_data['name']['en-us'] == 'a' * 25 assert form.cleaned_data['summary']['en-us'] == 'c' * 45 assert 'fr' not in form.cleaned_data['name'] # we've not added it assert form.cleaned_data['summary']['fr'] == 'd' * 45 # 50 to 45 name_needs_cropping = { 'name_en-us': 'a' * 67, 'name_fr': 'b' * 69, 'summary_en-us': 'c' * 2, 'summary_fr': 'd' * 3, 'slug': 'slug', 'description_en-us': 'z' * 10, } form = forms.DescribeFormContentOptimization( name_needs_cropping, request=self.request, instance=delicious, should_auto_crop=True, ) assert form.is_valid(), form.errors assert form.cleaned_data['name']['en-us'] == 'a' * 67 # no change assert form.cleaned_data['summary']['en-us'] == 'c' * 2 # no change assert form.cleaned_data['name']['fr'] == 'b' * 68 # 69 to 68 assert form.cleaned_data['summary']['fr'] == 'd' * 2 # 3 to 2 name_needs_cropping_no_summary = { 'name_en-us': 'a' * 50, 'name_fr': 'b' * 69, 'summary_en-us': 'c' * 20, 'slug': 'slug', 'description_en-us': 'z' * 10, } form = forms.DescribeFormContentOptimization( name_needs_cropping_no_summary, request=self.request, instance=delicious, should_auto_crop=True, ) assert form.is_valid(), form.errors assert form.cleaned_data['name']['en-us'] == 'a' * 50 # no change assert form.cleaned_data['summary']['en-us'] == 'c' * 20 # no change assert form.cleaned_data['name']['fr'] == 'b' * 50 # 69 to 50 assert 'fr' not in form.cleaned_data['summary']