def test_user_collection_list(self): c1 = Collection(uuid='eb4e3cd8-5cf1-4832-86fb-a90fc6d3765c') c2 = Collection(uuid='61780943-e159-4206-8acd-0ae9f63f294c', nickname='my_collection') heading = 'My Heading' response = unicode(user_collection_list([c1, c2], heading)) # heading eq_(pq(response)('h3').text(), heading) # both items # TODO reverse URLs assert c1.get_url_path() in response, 'Collection UUID link missing.' assert c2.get_url_path() in response, ( 'Collection nickname link missing.') # empty collection, empty response response = unicode(user_collection_list([], heading)) self.assertFalse(response, 'empty collection should not create a list')
def test_form_uneditable_slug(self): """ Editing a mobile or favorite collection should have an uneditable slug. """ u = UserProfile.objects.get(username='******') Collection(author=u, slug='mobile', type=amo.COLLECTION_MOBILE).save() url = reverse('collections.edit', args=['admin', 'mobile']) r = self.client.get(url, follow=True) doc = pq(r.content) eq_(len(doc('#id_slug')), 0)
def test_remove_other_collection(self): "403 when you try to add to a collection that isn't yours." c = Collection(author=self.other) c.save() r = self.client.post(reverse('collections.ajax_remove'), { 'addon_id': 3615, 'id': c.id }, follow=True) eq_(r.status_code, 403)
def test_listed(self): """Make sure the manager's listed() filter works.""" listed_count = Collection.objects.listed().count() # make a private collection private = Collection( name="Hello", uuid="4e2a1acc-39ae-47ec-956f-46e080ac7f69", listed=False, author=self.user) private.save() listed = Collection.objects.listed() eq_(len(listed), listed_count)
def test_form_uneditable_slug_submit(self): """ Ignore the slug request change, if some jackass thinks he can change it. """ u = UserProfile.objects.get(username='******') Collection(author=u, slug='mobile', type=amo.COLLECTION_MOBILE).save() url = reverse('collections.edit', args=['admin', 'mobile']) self.client.post(url, {'name': 'HALP', 'slug': 'halp', 'listed': True}, follow=True) assert not Collection.objects.filter(slug='halp', author=u) assert Collection.objects.filter(slug='mobile', author=u)
def test_icon_url(self): # Has no icon. c = Collection(pk=512, modified=datetime.datetime.now()) assert c.icon_url.endswith('img/icons/collection.png') c.icontype = 'image/png' url = c.icon_url.split('?')[0] assert url.endswith('0/512.png') c.id = 12341234 url = c.icon_url.split('?')[0] assert url.endswith('12341/12341234.png') c.icontype = None c.type = amo.COLLECTION_FAVORITES assert c.icon_url.endswith('img/icons/heart.png')
def collection_factory(**kw): data = { 'type': amo.COLLECTION_NORMAL, 'application': amo.FIREFOX.id, 'name': 'Collection %s' % abs(hash(datetime.now())), 'addon_count': random.randint(200, 2000), 'subscribers': random.randint(1000, 5000), 'monthly_subscribers': random.randint(100, 500), 'weekly_subscribers': random.randint(10, 50), 'upvotes': random.randint(100, 500), 'downvotes': random.randint(100, 500), 'listed': True, } data.update(kw) c = Collection(**data) c.slug = data['name'].replace(' ', '-').lower() c.rating = (c.upvotes - c.downvotes) * math.log(c.upvotes + c.downvotes) c.created = c.modified = datetime(2011, 11, 11, random.randint(0, 23), random.randint(0, 59)) c.save() return c
def create_collection(application): """Create a Collection for the given `application`.""" data = { 'type': amo.COLLECTION_NORMAL, 'application': application, 'name': 'Collection %s' % abs(hash(datetime.now())), 'addon_count': random.randint(200, 2000), 'subscribers': random.randint(1000, 5000), 'monthly_subscribers': random.randint(100, 500), 'weekly_subscribers': random.randint(10, 50), 'upvotes': random.randint(100, 500), 'downvotes': random.randint(100, 500), 'listed': True, } c = Collection(**data) c.slug = slugify(data['name']) c.rating = (c.upvotes - c.downvotes) * math.log(c.upvotes + c.downvotes) c.created = c.modified = datetime(2014, 10, 27, random.randint(0, 23), random.randint(0, 59)) c.save() return c
def test_barometer(self): self.client.get('/') jingo.load_helpers() collection = Collection(upvotes=1, slug='mccrackin', author=UserProfile(username='******')) # Mock logged out. c = { 'request': Mock(path='yermom', GET=Mock(urlencode=lambda: '')), 'user': Mock(), 'settings': Mock() } c['request'].user.is_authenticated.return_value = False doc = pq(barometer(c, collection)) eq_(doc('form')[0].action, '/en-US/firefox/users/login?to=yermom') # Mock logged in. c['request'].amo_user.votes.filter.return_value = [Mock(vote=1)] c['request'].user.is_authenticated.return_value = True barometer(c, collection) doc = pq(barometer(c, collection)) eq_( doc('form')[0].action, reverse('collections.vote', args=['clouserw', 'mccrackin', 'up']))
def test_is_subscribed(self): c = Collection(pk=512) c.following.create(user=self.user) assert c.is_subscribed(self.user)
def test_publishable_by(self): c = Collection(pk=512, author=self.other) CollectionUser(collection=c, user=self.user).save() eq_(c.publishable_by(self.user), True)