forked from mirrors/bookwyrm
Starts adding tests for custom model fields
This commit is contained in:
parent
142a39cf55
commit
aa6e312cfb
1 changed files with 77 additions and 0 deletions
77
bookwyrm/tests/models/test_fields.py
Normal file
77
bookwyrm/tests/models/test_fields.py
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
''' testing models '''
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.db import models
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
from bookwyrm.models import fields
|
||||||
|
|
||||||
|
class ActivitypubFields(TestCase):
|
||||||
|
def test_validate_remote_id(self):
|
||||||
|
self.assertIsNone(fields.validate_remote_id(
|
||||||
|
'http://www.example.com'
|
||||||
|
))
|
||||||
|
self.assertIsNone(fields.validate_remote_id(
|
||||||
|
'https://www.example.com'
|
||||||
|
))
|
||||||
|
self.assertIsNone(fields.validate_remote_id(
|
||||||
|
'http://example.com/dlfjg-23/x'
|
||||||
|
))
|
||||||
|
self.assertRaises(
|
||||||
|
ValidationError, fields.validate_remote_id,
|
||||||
|
'http:/example.com/dlfjg-23/x'
|
||||||
|
)
|
||||||
|
self.assertRaises(
|
||||||
|
ValidationError, fields.validate_remote_id,
|
||||||
|
'www.example.com/dlfjg-23/x'
|
||||||
|
)
|
||||||
|
self.assertRaises(
|
||||||
|
ValidationError, fields.validate_remote_id,
|
||||||
|
'http://www.example.com/dlfjg 23/x'
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_activitypub_field_mixin(self):
|
||||||
|
instance = fields.ActivitypubFieldMixin()
|
||||||
|
self.assertEqual(instance.field_to_activity('fish'), 'fish')
|
||||||
|
self.assertEqual(instance.field_from_activity('fish'), 'fish')
|
||||||
|
|
||||||
|
instance = fields.ActivitypubFieldMixin(
|
||||||
|
activitypub_wrapper='endpoints', activitypub_field='outbox'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
instance.field_to_activity('fish'),
|
||||||
|
{'outbox': 'fish'}
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
instance.field_from_activity({'outbox': 'fish'}),
|
||||||
|
'fish'
|
||||||
|
)
|
||||||
|
self.assertEqual(instance.get_activitypub_field(), 'endpoints')
|
||||||
|
|
||||||
|
instance = fields.ActivitypubFieldMixin()
|
||||||
|
instance.name = 'snake_case_name'
|
||||||
|
self.assertEqual(instance.get_activitypub_field(), 'snakeCaseName')
|
||||||
|
|
||||||
|
def test_remote_id_field(self):
|
||||||
|
instance = fields.RemoteIdField()
|
||||||
|
self.assertEqual(instance.max_length, 255)
|
||||||
|
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
instance.run_validators('http://www.example.com/dlfjg 23/x')
|
||||||
|
|
||||||
|
def test_username_field(self):
|
||||||
|
instance = fields.UsernameField()
|
||||||
|
self.assertEqual(instance.activitypub_field, 'preferredUsername')
|
||||||
|
self.assertEqual(instance.max_length, 150)
|
||||||
|
self.assertEqual(instance.unique, True)
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
instance.run_validators('one two')
|
||||||
|
instance.run_validators('a*&')
|
||||||
|
instance.run_validators('trailingwhite ')
|
||||||
|
self.assertIsNone(instance.run_validators('aksdhf'))
|
||||||
|
|
||||||
|
self.assertEqual(instance.field_to_activity('test@example.com'), 'test')
|
||||||
|
|
||||||
|
def test_foreign_key(self):
|
||||||
|
instance = fields.ForeignKey('User', on_delete=models.CASCADE)
|
||||||
|
item = namedtuple('Serializable', ('to_activity'))(lambda: {'a': 'b'})
|
||||||
|
self.assertEqual(instance.field_to_activity(item), {'a': 'b'})
|
Loading…
Reference in a new issue