def test_can_filter_by_owner(self): collection1 = collection_factory(initial_items=0, owner=user_factory()) collection_factory(initial_items=0, owner=user_factory()) assert Collection.objects.count() > 1 res = self.app.get(self.url, params={'owner': collection1.owner.pk}) self.assertEqual(res.status_code, 200) self.assertEqual(res.json['count'], 1) self.assertEqual(collection1.id, res.json['results'][0]['id'])
def test_favorited_by_me(self): item = item_factory() user_who_favorited = user_factory() other_user = user_factory() FavoritedItem.objects.create(item=item, user=user_who_favorited) res = self.app.get(self.url, user=user_who_favorited) self.assertEqual(res.json["results"][0]["favorited_by_me"], True) res = self.app.get(self.url, user=other_user) self.assertEqual(res.json["results"][0]["favorited_by_me"], False)
def test_filter_favorited_by(self): item1 = item_factory() item2 = item_factory() user = user_factory() FavoritedItem.objects.create(item=item1, user=user) res = self.app.get(self.url, params={"favorited_by": user.pk}) self.assertEqual({item1.id}, {obj["id"] for obj in res.json["results"]})
def test_user_cannot_add_items_to_others_collections(self): item = item_factory() user = user_factory() url = reverse('collecteditem-create-list') print("hitting", url) res = self.app.post(url, json.dumps({'item': item.pk, 'collection': self.collection.pk}), content_type='application/json', user=user, expect_errors=True) self.assertEqual(res.status_code, 403)
def test_user_cannot_remove_item_from_others_collection(self): item = item_factory() user = user_factory() CollectedItem.objects.create(item=item, collection=self.collection) assert {item} == set(self.collection.items.all()) url = reverse('collecteditem-delete-detail', args=(self.collection.pk,)) res = self.app.delete(url, json.dumps({'item': item.pk}), content_type='application/json', user=user, expect_errors=True) self.assertEqual(res.status_code, 403)
def test_can_filter_by_public(self): owner = user_factory() collection1 = collection_factory(initial_items=0, owner=owner, public=False) collection2 = collection_factory(initial_items=0, owner=owner, public=True) res = self.app.get(self.url, user=owner, params={'owner': owner.pk, 'public': 'False'}) self.assertEqual(res.status_code, 200) self.assertEqual(res.json['count'], 1) self.assertEqual(collection1.id, res.json['results'][0]['id']) res = self.app.get(self.url, params={'owner': owner.pk, 'public': 'True'}) self.assertEqual(res.status_code, 200) self.assertEqual(res.json['count'], 1) self.assertEqual(collection2.id, res.json['results'][0]['id'])
def collection_factory(initial_items=3, **kwargs): if 'owner' not in kwargs: if UserProfile.objects.count() == 0: kwargs['owner'] = user_factory() else: kwargs['owner'] = UserProfile.objects.order_by('?')[0] if 'title' not in kwargs: kwargs['title'] = nextname('Collection') if 'description' not in kwargs: kwargs['description'] = lorem collection = G(Collection, **kwargs) if 'items' not in kwargs: if Item.objects.count() < initial_items: for _ in range(initial_items - Item.objects.count()): item_args = subargs(kwargs, 'item') item_factory(**item_args) if initial_items: for item in Item.objects.order_by('?')[:initial_items]: CollectedItem.objects.create(item=item, collection=collection) return collection
def setUp(self): self.user = user_factory()
def test_403_if_not_owner(self): other_user = user_factory() new_about_me = self.user.about_me + u' ❤ ☀ ☆ ☂ ☻ ♞ ' res = self.app.patch(self.url, json.dumps({'about_me': new_about_me}), content_type='application/json', user=other_user, expect_errors=True) self.assertEqual(res.status_code, 403)
def setUp(self): self.user = user_factory() self.url = reverse('userprofile-update-detail', args=[self.user.pk])
def test_anonymous_can_retrieve(self): user = user_factory() url = reverse('userprofile-detail', args=(user.pk,)) res = self.app.get(url) self.assertEqual(res.status_code, 200) self.assertEqual(user.get_full_name(), res.json['name'])
def test_non_owner_cannot_delete(self): non_owner = user_factory() res = self.app.delete(self.url, user=non_owner, expect_errors=True) self.assertEqual(res.status_code, 403)
def test_private_collections_only_listed_for_owner__also_if_use_filter(self): collection1 = collection_factory(initial_items=0, owner=user_factory(), public=False) res = self.app.get(self.url, params={'owner': collection1.owner.pk, 'public': 'False'}) self.assertEqual(res.status_code, 200) self.assertEqual(res.json['count'], 0)
def setUp(self): self.user = user_factory() self.collection = collection_factory(initial_items=0, owner=self.user) self.item1 = item_factory() self.item2 = item_factory() self.url = reverse('collection-update-detail', args=[self.collection.pk])
def setUp(self): self.url = reverse('collection-create-list') self.user = user_factory() self.title = u'a ❤ ☀ ☆ ☂ ☻ ♞ title'