Select Git revision
test_query.py
-
Henrik tom Wörden authoredHenrik tom Wörden authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
test_state.py 2.40 KiB
import pytest
import linkahead as db
from linkahead import State, Transition
from linkahead.common.models import parse_xml, ACL
from lxml import etree
def test_state_xml():
state = State(model="model1", name="state1")
xml = etree.tostring(state.to_xml())
assert xml == b'<State name="state1" model="model1"/>'
state = State.from_xml(etree.fromstring(xml))
assert state.name == "state1"
assert state.model == "model1"
assert xml == etree.tostring(state.to_xml())
def test_entity_xml():
r = db.Record()
assert r.state is None
r.state = State(model="model1", name="state1")
xml = etree.tostring(r.to_xml())
assert xml == b'<Record><State name="state1" model="model1"/></Record>'
r = parse_xml(xml)
assert r.state == State(model="model1", name="state1")
def test_description():
xml = b'<State name="state1" model="model1"/>'
state = State.from_xml(etree.fromstring(xml))
assert state.description is None
with pytest.raises(AttributeError):
state.description = "test"
xml = b'<State name="state1" model="model1" description="test2"/>'
state = State.from_xml(etree.fromstring(xml))
assert state.description == "test2"
def test_id():
xml = b'<State name="state1" model="model1"/>'
state = State.from_xml(etree.fromstring(xml))
assert state.id is None
with pytest.raises(AttributeError):
state.id = "2345"
xml = b'<State name="state1" model="model1" id="1234"/>'
state = State.from_xml(etree.fromstring(xml))
assert state.id == "1234"
def test_create_state_acl():
acl = ACL()
acl.grant(role="role1", permission="DO:IT")
acl.grant(role="?OWNER?", permission="DO:THAT")
state_acl = State.create_state_acl(acl)
assert state_acl.get_permissions_for_role("?STATE?role1?") == {"DO:IT"}
assert state_acl.get_permissions_for_role("?STATE??OWNER??") == {"DO:THAT"}
def test_transitions():
xml = b'<State name="state1" model="model1"/>'
state = State.from_xml(etree.fromstring(xml))
assert state.transitions is None
with pytest.raises(AttributeError):
state.transitions = []
xml = b'<State name="state1" model="model1" id="1234"><Transition name="t1"><FromState name="state1"/><ToState name="state2"/></Transition></State>'
state = State.from_xml(etree.fromstring(xml))
assert state.transitions == set([Transition(name="t1", from_state="state1", to_state="state2")])