Skip to content

Commit ef7a621

Browse files
committed
first tests of orm [orm_tests]
1 parent 58d05e4 commit ef7a621

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

conftest.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import pytest
2+
from sqlalchemy import create_engine
3+
from sqlalchemy.orm import sessionmaker, clear_mappers
4+
5+
from orm import metadata, start_mappers
6+
7+
8+
@pytest.fixture
9+
def in_memory_db():
10+
engine = create_engine("sqlite:///:memory:")
11+
metadata.create_all(engine)
12+
return engine
13+
14+
15+
@pytest.fixture
16+
def session(in_memory_db):
17+
start_mappers()
18+
yield sessionmaker(bind=in_memory_db)()
19+
clear_mappers()

test_orm.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import model
2+
3+
4+
def test_orderline_mapper_can_load_lines(session):
5+
session.execute(
6+
"INSERT INTO order_lines (orderid, sku, qty) VALUES "
7+
'("order1", "RED-CHAIR", 12),'
8+
'("order1", "RED-TABLE", 13),'
9+
'("order2", "BLUE-LIPSTICK", 14)'
10+
)
11+
expected = [
12+
model.OrderLine("order1", "RED-CHAIR", 12),
13+
model.OrderLine("order1", "RED-TABLE", 13),
14+
model.OrderLine("order2", "BLUE-LIPSTICK", 14),
15+
]
16+
assert session.query(model.OrderLine).all() == expected
17+
18+
19+
def test_orderline_mapper_can_save_lines(session):
20+
new_line = model.OrderLine("order1", "DECORATIVE-WIDGET", 12)
21+
session.add(new_line)
22+
session.commit()
23+
24+
rows = list(session.execute('SELECT orderid, sku, qty FROM "order_lines"'))
25+
assert rows == [("order1", "DECORATIVE-WIDGET", 12)]

0 commit comments

Comments
 (0)