restructuring for poetry-slam
This commit is contained in:
+6
-7
@@ -7,8 +7,7 @@ import pytest
|
||||
from ttfrog.db import schema
|
||||
from ttfrog.db.manager import db as _db
|
||||
|
||||
|
||||
FIXTURE_PATH = Path(__file__).parent / 'fixtures'
|
||||
FIXTURE_PATH = Path(__file__).parent / "fixtures"
|
||||
|
||||
|
||||
def load_fixture(db, fixture_name):
|
||||
@@ -23,20 +22,20 @@ def load_fixture(db, fixture_name):
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def db(monkeypatch):
|
||||
monkeypatch.setattr('ttfrog.db.manager.database', MagicMock(return_value=""))
|
||||
monkeypatch.setenv('DATABASE_URL', "sqlite:///:memory:")
|
||||
monkeypatch.setenv('DEBUG', '1')
|
||||
monkeypatch.setattr("ttfrog.db.manager.database", MagicMock(return_value=""))
|
||||
monkeypatch.setenv("DATABASE_URL", "sqlite:///:memory:")
|
||||
monkeypatch.setenv("DEBUG", "1")
|
||||
_db.init()
|
||||
return _db
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def classes(db):
|
||||
load_fixture(db, 'classes')
|
||||
load_fixture(db, "classes")
|
||||
return dict((rec.name, rec) for rec in db.session.query(schema.CharacterClass).all())
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def ancestries(db):
|
||||
load_fixture(db, 'ancestry')
|
||||
load_fixture(db, "ancestry")
|
||||
return dict((rec.name, rec) for rec in db.session.query(schema.Ancestry).all())
|
||||
|
||||
+16
-16
@@ -3,54 +3,54 @@ from ttfrog.db import schema
|
||||
|
||||
def test_create_character(db, classes, ancestries):
|
||||
with db.transaction():
|
||||
darkvision = db.session.query(schema.AncestryTrait).filter_by(name='Darkvision')[0]
|
||||
darkvision = db.session.query(schema.AncestryTrait).filter_by(name="Darkvision")[0]
|
||||
|
||||
# create a human character (the default)
|
||||
char = schema.Character(name='Test Character')
|
||||
char = schema.Character(name="Test Character")
|
||||
db.add(char)
|
||||
assert char.id == 1
|
||||
assert char.armor_class == 10
|
||||
assert char.name == 'Test Character'
|
||||
assert char.ancestry.name == 'human'
|
||||
assert char.name == "Test Character"
|
||||
assert char.ancestry.name == "human"
|
||||
assert darkvision not in char.traits
|
||||
|
||||
# switch ancestry to tiefling
|
||||
char.ancestry = ancestries['tiefling']
|
||||
char.ancestry = ancestries["tiefling"]
|
||||
db.add(char)
|
||||
char = db.session.get(schema.Character, 1)
|
||||
assert char.ancestry.name == 'tiefling'
|
||||
assert char.ancestry.name == "tiefling"
|
||||
assert darkvision in char.traits
|
||||
|
||||
# assign a class and level
|
||||
char.add_class(classes['fighter'], level=1)
|
||||
char.add_class(classes["fighter"], level=1)
|
||||
db.add(char)
|
||||
assert char.levels == {'fighter': 1}
|
||||
assert char.levels == {"fighter": 1}
|
||||
assert char.level == 1
|
||||
assert char.class_attributes == []
|
||||
|
||||
# level up
|
||||
char.add_class(classes['fighter'], level=2)
|
||||
char.add_class(classes["fighter"], level=2)
|
||||
db.add(char)
|
||||
assert char.levels == {'fighter': 2}
|
||||
assert char.levels == {"fighter": 2}
|
||||
assert char.level == 2
|
||||
assert char.class_attributes == []
|
||||
|
||||
# multiclass
|
||||
char.add_class(classes['rogue'], level=1)
|
||||
char.add_class(classes["rogue"], level=1)
|
||||
db.add(char)
|
||||
assert char.level == 3
|
||||
assert char.levels == {'fighter': 2, 'rogue': 1}
|
||||
assert char.levels == {"fighter": 2, "rogue": 1}
|
||||
|
||||
# remove a class
|
||||
char.remove_class(classes['rogue'])
|
||||
char.remove_class(classes["rogue"])
|
||||
db.add(char)
|
||||
assert char.levels == {'fighter': 2}
|
||||
assert char.levels == {"fighter": 2}
|
||||
assert char.level == 2
|
||||
|
||||
# remove all remaining classes
|
||||
char.remove_class(classes['fighter'])
|
||||
char.remove_class(classes["fighter"])
|
||||
db.add(char)
|
||||
|
||||
# ensure we're not persisting any orphan records in the map table
|
||||
dump = db.dump()
|
||||
assert dump['class_map'] == []
|
||||
assert dump["class_map"] == []
|
||||
|
||||
Reference in New Issue
Block a user