Skip to content

Commit 56f9f94

Browse files
committed
add tests
1 parent b767f9f commit 56f9f94

4 files changed

Lines changed: 57 additions & 8 deletions

File tree

testing_orm.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
from dictdatabase.object_mapper import DictModel, FileDictItemModel, FileDictModel
2-
import dictdatabase as DDB
1+
32

43

54
class WorkTime(DictModel):
@@ -21,7 +20,6 @@ def full_name(self):
2120

2221
class Users(FileDictModel[User]):
2322
__file__ = "users"
24-
__item_model__ = User
2523

2624

2725

@@ -45,8 +43,8 @@ class Users(FileDictModel[User]):
4543
assert u.work_times[1].end == "17:00"
4644
assert len(u.work_times) == 2
4745

48-
print("check")
49-
print(u)
46+
47+
print("u type:", type(u))
5048

5149

5250

tests/conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
from tests import TEST_DIR
33
import pytest
44
import shutil
5+
import os
56

67

78
@pytest.fixture(scope="session")
89
def use_test_dir(request):
910
DDB.config.storage_directory = TEST_DIR
11+
os.makedirs(TEST_DIR, exist_ok=True)
1012
request.addfinalizer(lambda: shutil.rmtree(TEST_DIR))
1113

1214

tests/test_object_mapper.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from dictdatabase.object_mapper import DictModel, FileDictItemModel, FileDictModel
2+
import dictdatabase as DDB
3+
import pytest
4+
5+
6+
def test_object_mapper_docs_example(use_test_dir):
7+
name = "object_mapper_docs_example_users"
8+
DDB.at(name).create({
9+
"u1": {
10+
"first_name": "John",
11+
"last_name": "Doe",
12+
"age": 21
13+
},
14+
"u2": {
15+
"first_name": "Jane",
16+
"last_name": "Smith",
17+
"age": 30,
18+
"phone": "0123456"
19+
},
20+
}, force_overwrite=True)
21+
22+
class User(FileDictItemModel):
23+
first_name: str
24+
last_name: str
25+
age: int
26+
phone: str | None
27+
28+
def full_name(self):
29+
return f"{self.first_name} {self.last_name}"
30+
31+
class Users(FileDictModel[User]):
32+
__file__ = name
33+
34+
u1: User = Users.get_at_key("u1")
35+
assert u1.full_name() == "John Doe"
36+
assert u1.age == 21
37+
assert u1.phone is None
38+
39+
with pytest.raises(AttributeError):
40+
u1.no
41+
42+
u2: User = Users.get_at_key("u2")
43+
assert u2.full_name() == "Jane Smith"
44+
assert u2.age == 30
45+
assert u2.phone == "0123456"
46+
47+
48+
49+
for uid, user in Users.get_all().items():
50+
assert user.age in [21, 30]

tests/test_read.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def test_invalid_params(use_test_dir, use_compression, use_orjson, indent):
2828

2929

3030

31-
def test_read_integrity():
31+
def test_read_integrity(use_test_dir, use_compression, use_orjson, indent):
3232
cases = [
3333
r'{"a": "\\", "b": 2}',
3434
r'{"a": "\\\\", "b": 2}',
@@ -42,8 +42,7 @@ def test_read_integrity():
4242
r'{"a": "\\\"\"", "b": 2}',
4343
]
4444

45-
46-
for i, case in enumerate(cases):
45+
for case in cases:
4746
with open(f"{DDB.config.storage_directory}/test_read_integrity.json", "w") as f:
4847
f.write(case)
4948
dd = DDB.at("test_read_integrity", key="a").read()

0 commit comments

Comments
 (0)