From 29db2ee5139baaa7cf4e9989e5916afca6f98bf1 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Sun, 30 May 2021 22:28:43 -0700 Subject: [PATCH] add Term SQLAlchemy ORM model Signed-off-by: Kevin Morris --- aurweb/models/term.py | 15 +++++++++++++++ test/test_term.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 aurweb/models/term.py create mode 100644 test/test_term.py diff --git a/aurweb/models/term.py b/aurweb/models/term.py new file mode 100644 index 00000000..1b4902f7 --- /dev/null +++ b/aurweb/models/term.py @@ -0,0 +1,15 @@ +from sqlalchemy.orm import mapper + +from aurweb.schema import Terms + + +class Term: + def __init__(self, + Description: str = None, URL: str = None, + Revision: int = None): + self.Description = Description + self.URL = URL + self.Revision = Revision + + +mapper(Term, Terms) diff --git a/test/test_term.py b/test/test_term.py new file mode 100644 index 00000000..4ae1e1cd --- /dev/null +++ b/test/test_term.py @@ -0,0 +1,30 @@ +import pytest + +from sqlalchemy.exc import IntegrityError + +from aurweb.db import create, delete +from aurweb.models.term import Term + + +def test_term_creation(): + term = create(Term, Description="Term description", + URL="https://fake_url.io") + assert bool(term.ID) + assert term.Description == "Term description" + assert term.URL == "https://fake_url.io" + assert term.Revision == 1 + delete(Term, Term.ID == term.ID) + + +def test_term_null_description_raises_exception(): + from aurweb.db import session + with pytest.raises(IntegrityError): + create(Term, URL="https://fake_url.io") + session.rollback() + + +def test_term_null_url_raises_exception(): + from aurweb.db import session + with pytest.raises(IntegrityError): + create(Term, Description="Term description") + session.rollback()