add Tags, Properties and Categories
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
j3d1 2023-06-22 04:08:52 +02:00
parent 91cd5c57b3
commit 7e1b92a162
10 changed files with 414 additions and 1 deletions

View file

@ -0,0 +1,54 @@
from django.test import TestCase, Client
from authentication.tests import UserTestCase, SignatureAuthClient
from toolshed.models import Category, Tag, Property
anonymous_client = Client()
client = SignatureAuthClient()
class CombinedApiTestCase(UserTestCase):
def setUp(self):
super().setUp()
self.cat1 = Category.objects.create(name='cat1')
self.cat2 = Category.objects.create(name='cat2')
self.cat3 = Category.objects.create(name='cat3')
self.tag1 = Tag.objects.create(name='tag1')
self.tag2 = Tag.objects.create(name='tag2')
self.tag3 = Tag.objects.create(name='tag3')
self.prop1 = Property.objects.create(name='prop1')
self.prop2 = Property.objects.create(name='prop2')
self.prop3 = Property.objects.create(name='prop3')
def test_domains_anonymous(self):
response = anonymous_client.get('/api/domains/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), ['example.com'])
def test_domains_authenticated(self):
response = client.get('/api/domains/', self.local_user1)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), ['example.com'])
def test_combined_api_anonymous(self):
response = anonymous_client.get('/api/info/')
self.assertEqual(response.status_code, 403)
def test_combined_api(self):
response = client.get('/api/info/', self.local_user1)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()['policies'], ['private', 'friends', 'internal', 'public'])
self.assertEqual(response.json()['categories'], ['cat1', 'cat2', 'cat3'])
self.assertEqual(response.json()['tags'], ['tag1', 'tag2', 'tag3'])
self.assertEqual(response.json()['properties'], ['prop1', 'prop2', 'prop3'])
def test_policy_api_anonymous(self):
response = anonymous_client.get('/api/availability_policies/')
self.assertEqual(response.status_code, 403)
def test_policy_api(self):
response = client.get('/api/availability_policies/', self.local_user1)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), ['private', 'friends', 'internal', 'public'])

View file

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

View file

@ -0,0 +1,55 @@
from authentication.tests import UserTestCase, SignatureAuthClient
from toolshed.models import Property, Category
client = SignatureAuthClient()
class PropertyTestCase(UserTestCase):
def setUp(self):
super().setUp()
self.cat1 = Category.objects.create(name='cat1')
self.cat1.save()
self.prop1 = Property.objects.create(name='prop1')
self.prop1.save()
self.prop2 = Property.objects.create(name='prop2', description='prop2 description', category=self.cat1)
self.prop2.save()
self.prop3 = Property.objects.create(name='prop3', description='prop3 description', category=self.cat1)
self.prop3.save()
def test_properties(self):
self.assertEqual(len(Property.objects.all()), 3)
self.assertEqual(self.prop1.name, 'prop1')
self.assertEqual(self.prop1.description, None)
self.assertEqual(self.prop1.category, None)
self.assertEqual(self.prop2.name, 'prop2')
self.assertEqual(self.prop2.description, 'prop2 description')
self.assertEqual(self.prop2.category, self.cat1)
self.assertEqual(self.prop3.name, 'prop3')
self.assertEqual(self.prop3.description, 'prop3 description')
self.assertEqual(self.prop3.category, self.cat1)
self.assertEqual(str(self.prop1), 'prop1')
self.assertEqual(str(self.prop2), 'prop2')
self.assertEqual(str(self.prop3), 'prop3')
self.assertEqual(self.cat1.properties.count(), 2)
self.assertEqual(self.cat1.properties.first(), self.prop2)
self.assertEqual(self.cat1.properties.last(), self.prop3)
class PropertyApiTestCase(UserTestCase):
def setUp(self):
super().setUp()
self.cat1 = Category.objects.create(name='cat1')
self.cat1.save()
self.cat2 = Category.objects.create(name='cat2')
self.cat2.save()
self.cat3 = Category.objects.create(name='cat3')
self.cat3.save()
def test_get_properties(self):
reply = client.get('/api/properties/', self.local_user1)
self.assertEqual(reply.status_code, 200)
self.assertEqual(len(reply.json()), 0)
prop1 = Property.objects.create(name='prop1')
prop1.save()

View file

@ -0,0 +1,58 @@
from authentication.tests import UserTestCase, SignatureAuthClient
from toolshed.models import Tag, Category
client = SignatureAuthClient()
class TagTestCase(UserTestCase):
def setUp(self):
super().setUp()
self.cat1 = Category.objects.create(name='cat1')
self.cat1.save()
self.tag1 = Tag.objects.create(name='tag1', description='tag1 description', category=self.cat1)
self.tag1.save()
self.tag2 = Tag.objects.create(name='tag2', description='tag2 description', category=self.cat1)
self.tag2.save()
self.tag3 = Tag.objects.create(name='tag3')
self.tag3.save()
def test_tags(self):
self.assertEqual(len(Tag.objects.all()), 3)
self.assertEqual(self.tag1.name, 'tag1')
self.assertEqual(self.tag1.description, 'tag1 description')
self.assertEqual(self.tag1.category, self.cat1)
self.assertEqual(self.tag2.name, 'tag2')
self.assertEqual(self.tag2.description, 'tag2 description')
self.assertEqual(self.tag2.category, self.cat1)
self.assertEqual(self.tag3.name, 'tag3')
self.assertEqual(self.tag3.description, None)
self.assertEqual(self.tag3.category, None)
self.assertEqual(str(self.tag1), 'tag1')
self.assertEqual(str(self.tag2), 'tag2')
self.assertEqual(str(self.tag3), 'tag3')
self.assertEqual(self.cat1.tags.count(), 2)
self.assertEqual(self.cat1.tags.first(), self.tag1)
self.assertEqual(self.cat1.tags.last(), self.tag2)
class TagApiTestCase(UserTestCase):
def setUp(self):
super().setUp()
self.cat1 = Category.objects.create(name='cat1')
self.cat1.save()
self.tag1 = Tag.objects.create(name='tag1', description='tag1 description', category=self.cat1)
self.tag1.save()
self.tag2 = Tag.objects.create(name='tag2', description='tag2 description', category=self.cat1)
self.tag2.save()
self.tag3 = Tag.objects.create(name='tag3')
self.tag3.save()
def test_get_tags(self):
reply = client.get('/api/tags/', self.local_user1)
self.assertEqual(reply.status_code, 200)
self.assertEqual(len(reply.json()), 3)
self.assertEqual(reply.json()[0], 'tag1')
self.assertEqual(reply.json()[1], 'tag2')
self.assertEqual(reply.json()[2], 'tag3')