continue refactoring tests
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
j3d1 2023-07-01 21:10:44 +02:00
parent 46a6b4e3d4
commit 24d8edec19
5 changed files with 80 additions and 84 deletions

View file

@ -1,24 +1,42 @@
from toolshed.models import Category, Tag, Property, InventoryItem, ItemProperty from toolshed.models import Category, Tag, Property, InventoryItem, ItemProperty
class InventoryTestMixin: class CategoryTestMixin:
def prepare_inventory(self): def prepare_categories(self):
self.f['local_user1'].friends.add(self.f['local_user2'].public_identity)
self.f['cat1'] = Category.objects.create(name='cat1') self.f['cat1'] = Category.objects.create(name='cat1')
self.f['cat2'] = Category.objects.create(name='cat2') self.f['cat2'] = Category.objects.create(name='cat2')
self.f['tag1'] = Tag.objects.create(name='tag1', category=self.f['cat1']) self.f['cat3'] = Category.objects.create(name='cat3')
self.f['tag2'] = Tag.objects.create(name='tag2', category=self.f['cat1']) self.f['subcat1'] = Category.objects.create(name='subcat1', parent=self.f['cat1'])
self.f['tag3'] = Tag.objects.create(name='tag3') self.f['subcat2'] = Category.objects.create(name='subcat2', parent=self.f['cat1'])
self.f['prop1'] = Property.objects.create(name='prop1') self.f['subcat3'] = Category.objects.create(name='subcat3', parent=self.f['subcat1'])
self.f['prop2'] = Property.objects.create(name='prop2')
self.f['prop3'] = Property.objects.create(name='prop3', category=self.f['cat1'])
self.f['item1'] = InventoryItem.objects.create(owner=self.f['local_user1'], owned_quantity=1, name='test1',
description='test', class TagTestMixin:
category=self.f['cat1'], availability_policy='friends') def prepare_tags(self):
self.f['item2'] = InventoryItem.objects.create(owner=self.f['local_user1'], owned_quantity=1, name='test2', self.f['tag1'] = Tag.objects.create(name='tag1', description='tag1 description', category=self.f['cat1'])
description='test2', self.f['tag2'] = Tag.objects.create(name='tag2', description='tag2 description', category=self.f['cat1'])
category=self.f['cat1'], availability_policy='friends') self.f['tag3'] = Tag.objects.create(name='tag3')
class PropertyTestMixin:
def prepare_properties(self):
self.f['prop1'] = Property.objects.create(name='prop1')
self.f['prop2'] = Property.objects.create(
name='prop2', description='prop2 description', category=self.f['cat1'])
self.f['prop3'] = Property.objects.create(
name='prop3', description='prop3 description', category=self.f['cat1'])
class InventoryTestMixin(CategoryTestMixin, TagTestMixin, PropertyTestMixin):
def prepare_inventory(self):
self.f['local_user1'].friends.add(self.f['local_user2'].public_identity)
self.f['item1'] = InventoryItem.objects.create(
owner=self.f['local_user1'], owned_quantity=1, name='test1', description='test', category=self.f['cat1'],
availability_policy='friends')
self.f['item2'] = InventoryItem.objects.create(
owner=self.f['local_user1'], owned_quantity=1, name='test2', description='test2', category=self.f['cat1'],
availability_policy='friends')
self.f['item2'].tags.add(self.f['tag1'], through_defaults={}) self.f['item2'].tags.add(self.f['tag1'], through_defaults={})
self.f['item2'].tags.add(self.f['tag2'], through_defaults={}) self.f['item2'].tags.add(self.f['tag2'], through_defaults={})
ItemProperty.objects.create(inventory_item=self.f['item2'], property=self.f['prop1'], value='value1').save() ItemProperty.objects.create(inventory_item=self.f['item2'], property=self.f['prop1'], value='value1').save()

View file

@ -1,55 +1,43 @@
from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase
from toolshed.models import Category from toolshed.models import Category
from toolshed.tests import CategoryTestMixin
client = SignatureAuthClient() client = SignatureAuthClient()
class CategoryTestCase(UserTestMixin, ToolshedTestCase): class CategoryTestCase(CategoryTestMixin, UserTestMixin, ToolshedTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.prepare_users() self.prepare_users()
self.f['cat1'] = Category.objects.create(name='cat1') self.prepare_categories()
self.f['cat1'].save()
self.f['cat2'] = Category.objects.create(name='cat2')
self.f['cat2'].save()
self.f['cat3'] = Category.objects.create(name='cat3')
self.f['cat3'].save()
def test_get_categories(self): def test_get_categories(self):
subcat1 = Category.objects.create(name='subcat1', parent=self.f['cat1'])
subcat1.save()
subcat2 = Category.objects.create(name='subcat2', parent=self.f['cat1'])
subcat2.save()
subcat3 = Category.objects.create(name='subcat3', parent=subcat1)
subcat3.save()
self.assertEqual(self.f['cat1'].children.count(), 2) self.assertEqual(self.f['cat1'].children.count(), 2)
self.assertEqual(self.f['cat1'].children.first(), subcat1) self.assertEqual(self.f['cat1'].children.first(), self.f['subcat1'])
self.assertEqual(self.f['cat1'].children.last(), subcat2) self.assertEqual(self.f['cat1'].children.last(), self.f['subcat2'])
self.assertEqual(subcat1.parent, self.f['cat1']) self.assertEqual(self.f['subcat1'].parent, self.f['cat1'])
self.assertEqual(subcat2.parent, self.f['cat1']) self.assertEqual(self.f['subcat2'].parent, self.f['cat1'])
self.assertEqual(subcat3.parent, subcat1) self.assertEqual(self.f['subcat1'].children.count(), 1)
self.assertEqual(str(subcat1), 'cat1/subcat1') self.assertEqual(str(self.f['subcat1']), 'cat1/subcat1')
self.assertEqual(str(subcat2), 'cat1/subcat2') self.assertEqual(str(self.f['subcat2']), 'cat1/subcat2')
self.assertEqual(str(subcat3), 'cat1/subcat1/subcat3') self.assertEqual(str(self.f['subcat3']), 'cat1/subcat1/subcat3')
class CategoryApiTestCase(UserTestMixin, ToolshedTestCase): class CategoryApiTestCase(CategoryTestMixin, UserTestMixin, ToolshedTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.prepare_users() self.prepare_users()
self.f['cat1'] = Category.objects.create(name='cat1') self.prepare_categories()
self.f['cat1'].save()
self.f['cat2'] = Category.objects.create(name='cat2')
self.f['cat2'].save()
self.f['cat3'] = Category.objects.create(name='cat3')
self.f['cat3'].save()
def test_get_categories(self): def test_get_categories(self):
reply = client.get('/api/categories/', self.f['local_user1']) reply = client.get('/api/categories/', self.f['local_user1'])
self.assertEqual(reply.status_code, 200) self.assertEqual(reply.status_code, 200)
self.assertEqual(len(reply.json()), 3) self.assertEqual(len(reply.json()), 6)
self.assertEqual(reply.json()[0], 'cat1') self.assertEqual(reply.json()[0], 'cat1')
self.assertEqual(reply.json()[1], 'cat2') self.assertEqual(reply.json()[1], 'cat2')
self.assertEqual(reply.json()[2], 'cat3') self.assertEqual(reply.json()[2], 'cat3')
self.assertEqual(reply.json()[3], 'cat1/subcat1')
self.assertEqual(reply.json()[4], 'cat1/subcat2')
self.assertEqual(reply.json()[5], 'cat1/subcat1/subcat3')

View file

@ -1,6 +1,6 @@
from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase
from toolshed.models import InventoryItem, Category from toolshed.models import InventoryItem, Category
from toolshed.tests import InventoryTestMixin from toolshed.tests import InventoryTestMixin, CategoryTestMixin, TagTestMixin, PropertyTestMixin
client = SignatureAuthClient() client = SignatureAuthClient()
@ -10,6 +10,9 @@ class InventoryTestCase(UserTestMixin, InventoryTestMixin, ToolshedTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.prepare_users() self.prepare_users()
self.prepare_categories()
self.prepare_tags()
self.prepare_properties()
self.prepare_inventory() self.prepare_inventory()
def test_get_inventory(self): def test_get_inventory(self):

View file

@ -1,22 +1,17 @@
from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase
from toolshed.models import Property, Category from toolshed.models import Property
from toolshed.tests import PropertyTestMixin, CategoryTestMixin
client = SignatureAuthClient() client = SignatureAuthClient()
class PropertyTestCase(UserTestMixin, ToolshedTestCase): class PropertyTestCase(PropertyTestMixin, CategoryTestMixin, UserTestMixin, ToolshedTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.prepare_users() self.prepare_users()
self.f['cat1'] = Category.objects.create(name='cat1') self.prepare_categories()
self.f['cat1'].save() self.prepare_properties()
self.f['prop1'] = Property.objects.create(name='prop1')
self.f['prop1'].save()
self.f['prop2'] = Property.objects.create(name='prop2', description='prop2 description', category=self.f['cat1'])
self.f['prop2'].save()
self.f['prop3'] = Property.objects.create(name='prop3', description='prop3 description', category=self.f['cat1'])
self.f['prop3'].save()
def test_properties(self): def test_properties(self):
self.assertEqual(len(Property.objects.all()), 3) self.assertEqual(len(Property.objects.all()), 3)
@ -37,21 +32,24 @@ class PropertyTestCase(UserTestMixin, ToolshedTestCase):
self.assertEqual(self.f['cat1'].properties.last(), self.f['prop3']) self.assertEqual(self.f['cat1'].properties.last(), self.f['prop3'])
class PropertyApiTestCase(UserTestMixin, ToolshedTestCase): class PropertyApiTestCase(PropertyTestMixin, CategoryTestMixin, UserTestMixin, ToolshedTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.prepare_users() self.prepare_users()
self.f['cat1'] = Category.objects.create(name='cat1') self.prepare_categories()
self.f['cat1'].save() self.prepare_properties()
self.f['cat2'] = Category.objects.create(name='cat2')
self.f['cat2'].save()
self.f['cat3'] = Category.objects.create(name='cat3')
self.f['cat3'].save()
def test_get_properties(self): def test_get_properties(self):
reply = client.get('/api/properties/', self.f['local_user1']) reply = client.get('/api/properties/', self.f['local_user1'])
self.assertEqual(reply.status_code, 200) self.assertEqual(reply.status_code, 200)
self.assertEqual(len(reply.json()), 0) self.assertEqual(len(reply.json()), 3)
prop1 = Property.objects.create(name='prop1') self.assertEqual(reply.json()[0]['name'], 'prop1')
prop1.save() self.assertEqual(reply.json()[0]['description'], None)
self.assertEqual(reply.json()[0]['category'], None)
self.assertEqual(reply.json()[1]['name'], 'prop2')
self.assertEqual(reply.json()[1]['description'], 'prop2 description')
self.assertEqual(reply.json()[1]['category'], 'cat1')
self.assertEqual(reply.json()[2]['name'], 'prop3')
self.assertEqual(reply.json()[2]['description'], 'prop3 description')
self.assertEqual(reply.json()[2]['category'], 'cat1')

View file

@ -1,22 +1,17 @@
from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase
from toolshed.models import Tag, Category from toolshed.models import Tag
from toolshed.tests import TagTestMixin, CategoryTestMixin
client = SignatureAuthClient() client = SignatureAuthClient()
class TagTestCase(UserTestMixin, ToolshedTestCase): class TagTestCase(TagTestMixin, CategoryTestMixin, UserTestMixin, ToolshedTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.prepare_users() self.prepare_users()
self.f['cat1'] = Category.objects.create(name='cat1') self.prepare_categories()
self.f['cat1'].save() self.prepare_tags()
self.f['tag1'] = Tag.objects.create(name='tag1', description='tag1 description', category=self.f['cat1'])
self.f['tag1'].save()
self.f['tag2'] = Tag.objects.create(name='tag2', description='tag2 description', category=self.f['cat1'])
self.f['tag2'].save()
self.f['tag3'] = Tag.objects.create(name='tag3')
self.f['tag3'].save()
def test_tags(self): def test_tags(self):
self.assertEqual(len(Tag.objects.all()), 3) self.assertEqual(len(Tag.objects.all()), 3)
@ -37,19 +32,13 @@ class TagTestCase(UserTestMixin, ToolshedTestCase):
self.assertEqual(self.f['cat1'].tags.last(), self.f['tag2']) self.assertEqual(self.f['cat1'].tags.last(), self.f['tag2'])
class TagApiTestCase(UserTestMixin, ToolshedTestCase): class TagApiTestCase(TagTestMixin, CategoryTestMixin, UserTestMixin, ToolshedTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.prepare_users() self.prepare_users()
self.f['cat1'] = Category.objects.create(name='cat1') self.prepare_categories()
self.f['cat1'].save() self.prepare_tags()
self.f['tag1'] = Tag.objects.create(name='tag1', description='tag1 description', category=self.f['cat1'])
self.f['tag1'].save()
self.f['tag2'] = Tag.objects.create(name='tag2', description='tag2 description', category=self.f['cat1'])
self.f['tag2'].save()
self.f['tag3'] = Tag.objects.create(name='tag3')
self.f['tag3'].save()
def test_get_tags(self): def test_get_tags(self):
reply = client.get('/api/tags/', self.f['local_user1']) reply = client.get('/api/tags/', self.f['local_user1'])