This commit is contained in:
58
lemur/tests/test_schemas.py
Normal file
58
lemur/tests/test_schemas.py
Normal file
@ -0,0 +1,58 @@
|
||||
import pytest
|
||||
from marshmallow.exceptions import ValidationError
|
||||
|
||||
from lemur.tests.factories import RoleFactory
|
||||
|
||||
|
||||
def test_get_object_attribute():
|
||||
from lemur.schemas import get_object_attribute
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
get_object_attribute({})
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
get_object_attribute([{}], many=True)
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
get_object_attribute([{}, {'id': 1}], many=True)
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
get_object_attribute([{}, {'name': 'test'}], many=True)
|
||||
|
||||
assert get_object_attribute({'name': 'test'}) == 'name'
|
||||
assert get_object_attribute({'id': 1}) == 'id'
|
||||
assert get_object_attribute([{'name': 'test'}], many=True) == 'name'
|
||||
assert get_object_attribute([{'id': 1}], many=True) == 'id'
|
||||
|
||||
|
||||
def test_fetch_objects(session):
|
||||
from lemur.roles.models import Role
|
||||
from lemur.schemas import fetch_objects
|
||||
|
||||
role = RoleFactory()
|
||||
role1 = RoleFactory()
|
||||
session.commit()
|
||||
|
||||
data = {'id': role.id}
|
||||
found_role = fetch_objects(Role, data)
|
||||
assert found_role == role
|
||||
|
||||
data = {'name': role.name}
|
||||
found_role = fetch_objects(Role, data)
|
||||
assert found_role == role
|
||||
|
||||
data = [{'id': role.id}, {'id': role1.id}]
|
||||
found_roles = fetch_objects(Role, data, many=True)
|
||||
assert found_roles == [role, role1]
|
||||
|
||||
data = [{'name': role.name}, {'name': role1.name}]
|
||||
found_roles = fetch_objects(Role, data, many=True)
|
||||
assert found_roles == [role, role1]
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
data = [{'name': 'blah'}, {'name': role1.name}]
|
||||
fetch_objects(Role, data, many=True)
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
data = {'name': 'nah'}
|
||||
fetch_objects(Role, data)
|
Reference in New Issue
Block a user