mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
89 lines
2.7 KiB
Python
89 lines
2.7 KiB
Python
|
from django.contrib.auth.models import User
|
||
|
from django.test import TestCase
|
||
|
|
||
|
from users.models import UserConfig
|
||
|
|
||
|
|
||
|
class UserConfigTest(TestCase):
|
||
|
|
||
|
def setUp(self):
|
||
|
|
||
|
user = User.objects.create_user(username='testuser')
|
||
|
initial_data = {
|
||
|
'a': True,
|
||
|
'b': {
|
||
|
'foo': 101,
|
||
|
'bar': 102,
|
||
|
},
|
||
|
'c': {
|
||
|
'foo': {
|
||
|
'x': 201,
|
||
|
},
|
||
|
'bar': {
|
||
|
'y': 202,
|
||
|
},
|
||
|
'baz': {
|
||
|
'z': 203,
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
self.userconfig = UserConfig(user=user, data=initial_data)
|
||
|
|
||
|
def test_get(self):
|
||
|
userconfig = self.userconfig
|
||
|
|
||
|
# Retrieve root and nested values
|
||
|
self.assertEqual(userconfig.get('a'), True)
|
||
|
self.assertEqual(userconfig.get('b.foo'), 101)
|
||
|
self.assertEqual(userconfig.get('c.baz.z'), 203)
|
||
|
|
||
|
# Invalid values should return None
|
||
|
self.assertIsNone(userconfig.get('invalid'))
|
||
|
self.assertIsNone(userconfig.get('a.invalid'))
|
||
|
self.assertIsNone(userconfig.get('b.foo.invalid'))
|
||
|
self.assertIsNone(userconfig.get('b.foo.x.invalid'))
|
||
|
|
||
|
def test_set(self):
|
||
|
userconfig = self.userconfig
|
||
|
|
||
|
# Overwrite existing values
|
||
|
userconfig.set('a', 'abc')
|
||
|
userconfig.set('c.foo.x', 'abc')
|
||
|
self.assertEqual(userconfig.data['a'], 'abc')
|
||
|
self.assertEqual(userconfig.data['c']['foo']['x'], 'abc')
|
||
|
|
||
|
# Create new values
|
||
|
userconfig.set('d', 'abc')
|
||
|
userconfig.set('b.baz', 'abc')
|
||
|
self.assertEqual(userconfig.data['d'], 'abc')
|
||
|
self.assertEqual(userconfig.data['b']['baz'], 'abc')
|
||
|
self.assertIsNone(userconfig.pk)
|
||
|
|
||
|
# Set a value and commit to the database
|
||
|
userconfig.set('a', 'def', commit=True)
|
||
|
self.assertEqual(userconfig.data['a'], 'def')
|
||
|
self.assertIsNotNone(userconfig.pk)
|
||
|
|
||
|
# Attempt to change a branch node to a leaf node
|
||
|
with self.assertRaises(TypeError):
|
||
|
userconfig.set('b', 1)
|
||
|
|
||
|
# Attempt to change a leaf node to a branch node
|
||
|
with self.assertRaises(TypeError):
|
||
|
userconfig.set('a.x', 1)
|
||
|
|
||
|
def test_clear(self):
|
||
|
userconfig = self.userconfig
|
||
|
|
||
|
# Clear existing values
|
||
|
userconfig.clear('a')
|
||
|
userconfig.clear('b.foo')
|
||
|
self.assertTrue('a' not in userconfig.data)
|
||
|
self.assertTrue('foo' not in userconfig.data['b'])
|
||
|
self.assertEqual(userconfig.data['b']['bar'], 102)
|
||
|
|
||
|
# Clear an invalid value
|
||
|
with self.assertRaises(KeyError):
|
||
|
userconfig.clear('invalid')
|