Skip to content

Commit 9553f81

Browse files
committed
tests: use always create_test_store() (all entities) #25
1 parent 7bf7405 commit 9553f81

12 files changed

Lines changed: 57 additions & 88 deletions

tests/common.py

Lines changed: 18 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,32 @@
1-
from datetime import timezone
2-
3-
import objectbox
4-
import os
51
from os import path
6-
import shutil
72
import pytest
8-
import numpy as np
9-
from typing import *
3+
import objectbox
4+
from objectbox.logger import logger
5+
from objectbox.store import Store
6+
from objectbox.model.sync_model import sync_model
107
from tests.model import *
8+
import numpy as np
9+
from datetime import timezone
1110

12-
test_dir = 'testdata'
13-
14-
15-
def create_default_model() -> objectbox.Model:
11+
def create_default_model():
1612
model = objectbox.Model()
17-
model.entity(TestEntity, last_property_id=IdUid(28, 1028))
18-
model.last_entity_id = IdUid(2, 2)
19-
model.last_index_id = IdUid(2, 10002)
13+
model.entity(TestEntity)
14+
model.entity(TestEntityDatetime)
15+
model.entity(TestEntityFlex)
16+
model.entity(VectorEntity)
17+
sync_model(model) # Assign IDs/UIDs
2018
return model
2119

2220

23-
def load_empty_test_default_store(db_name: str = test_dir) -> objectbox.Store:
24-
model = create_default_model()
25-
return objectbox.Store(model=model, directory=db_name)
26-
27-
28-
def load_empty_test_datetime_store(name: str = "") -> objectbox.Store:
29-
model = objectbox.Model()
30-
model.entity(TestEntityDatetime, last_property_id=IdUid(4, 2004))
31-
model.last_entity_id = IdUid(2, 2)
32-
33-
db_name = test_dir if len(name) == 0 else test_dir + "/" + name
34-
35-
return objectbox.Store(model=model, directory=db_name)
36-
37-
38-
def load_empty_test_flex_store(name: str = "") -> objectbox.Store:
39-
model = objectbox.Model()
40-
model.entity(TestEntityFlex, last_property_id=IdUid(2, 3002))
41-
model.last_entity_id = IdUid(3, 3)
42-
43-
db_name = test_dir if len(name) == 0 else test_dir + "/" + name
44-
45-
return objectbox.Store(model=model, directory=db_name)
46-
47-
48-
def create_test_store(db_name: Optional[str] = None, clear_db: bool = True) -> objectbox.Store:
21+
def create_test_store(db_path: str = "testdata", clear_db: bool = True) -> objectbox.Store:
4922
""" Creates a Store instance with all entities. """
5023

51-
db_path = test_dir if db_name is None else path.join(test_dir, db_name)
52-
print(f"DB path: \"{db_path}\"")
53-
54-
if clear_db and path.exists(db_path):
55-
shutil.rmtree(db_path)
56-
57-
model = objectbox.Model()
58-
model.entity(TestEntity, last_property_id=IdUid(28, 1028))
59-
model.entity(TestEntityDatetime, last_property_id=IdUid(4, 2004))
60-
model.entity(TestEntityFlex, last_property_id=IdUid(2, 3002))
61-
model.entity(VectorEntity, last_property_id=IdUid(5, 4005))
62-
model.last_entity_id = IdUid(4, 4)
63-
model.last_index_id = IdUid(5, 40003)
24+
is_inmemory = db_path.startswith("memory:")
25+
logger.info(f"DB path: {db_path} ({'in-memory' if is_inmemory else ''})")
6426

65-
return objectbox.Store(model=model, directory=db_path)
27+
if clear_db:
28+
Store.remove_db_files(db_path)
29+
return objectbox.Store(model=create_default_model(), directory=db_path)
6630

6731

6832
def assert_equal_prop(actual, expected, default):

tests/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
from common import *
44
from objectbox.store import Store
55

6+
67
# Fixtures in this file are used by all files in the same directory:
78
# https://docs.pytest.org/en/7.1.x/reference/fixtures.html#conftest-py-sharing-fixtures-across-multiple-files
89

910

1011
def _clear_test_db():
11-
Store.remove_db_files(test_dir)
12+
Store.remove_db_files("testdata")
1213

1314

1415
@pytest.fixture(autouse=True)

tests/test_basics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# limitations under the License.
1313

1414
import objectbox
15-
from tests.common import load_empty_test_default_store
15+
from tests.common import create_test_store
1616

1717

1818
def test_version():
@@ -30,4 +30,4 @@ def test_version():
3030

3131

3232
def test_open():
33-
load_empty_test_default_store()
33+
create_test_store()

tests/test_box.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
def test_box_basics():
12-
store = load_empty_test_default_store()
12+
store = create_test_store()
1313
box = store.box(TestEntity)
1414

1515
assert box.is_empty()
@@ -98,7 +98,7 @@ def test_box_basics():
9898

9999

100100
def test_box_bulk():
101-
store = load_empty_test_default_store()
101+
store = create_test_store()
102102
box = store.box(TestEntity)
103103

104104
box.put(TestEntity(str="first"))
@@ -134,7 +134,7 @@ def test_box_bulk():
134134

135135

136136
def test_datetime():
137-
store = load_empty_test_datetime_store()
137+
store = create_test_store()
138138
box = store.box(TestEntityDatetime)
139139

140140
assert box.is_empty()
@@ -189,7 +189,7 @@ def test_datetime():
189189

190190

191191
def test_datetime_special_values():
192-
store = load_empty_test_datetime_store()
192+
store = create_test_store()
193193
box = store.box(TestEntityDatetime)
194194
assert box.is_empty()
195195

@@ -224,7 +224,7 @@ def test_put_get(object: TestEntity, box: objectbox.Box, property):
224224
read = box.get(object.id)
225225
assert read.flex == object.flex
226226

227-
store = load_empty_test_default_store()
227+
store = create_test_store()
228228
box = store.box(TestEntity)
229229
object = TestEntity()
230230

tests/test_deprecated.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
import pytest
22
import tests.common
33
import objectbox
4-
import objectbox.store_options
4+
from objectbox import ObjectBox
5+
from objectbox.c import *
6+
from objectbox.store_options import StoreOptions
7+
from tests.common import *
8+
59

610
def test_deprecated_ObjectBox():
711
model = tests.common.create_default_model()
8-
model._finish()
9-
options = objectbox.store_options.StoreOptions()
12+
options = StoreOptions()
1013
options.model(model)
11-
c_store = objectbox.c.obx_store_open(options._c_handle)
14+
c_store = obx_store_open(options._c_handle)
1215
with pytest.deprecated_call():
13-
ob = objectbox.objectbox.ObjectBox(c_store)
14-
box = objectbox.Box(ob, tests.model.TestEntity)
16+
ob = ObjectBox(c_store)
17+
box = objectbox.Box(ob, TestEntity)
1518
assert box.count() == 0
16-
19+
20+
1721
def test_deprecated_Builder():
1822
model = tests.common.create_default_model()
1923
with pytest.deprecated_call():
20-
ob = objectbox.Builder().model(model).directory(tests.common.test_dir).build()
24+
ob = objectbox.Builder().model(model).directory("testdata").build()

tests/test_hnsw.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import random
44
from common import *
55
from objectbox.query_builder import QueryBuilder
6-
6+
from typing import *
77

88
def _find_expected_nn(points: np.ndarray, query: np.ndarray, n: int):
99
""" Given a set of points of shape (N, P) and a query of shape (P), finds the n points nearest to query. """

tests/test_index.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
@pytest.mark.skip(reason="Test indices implementation")
1313
def test_index_basics():
14-
store = load_empty_test_default_store()
14+
store = create_test_store()
1515
box = store.box(TestEntity)
1616

1717
# create
@@ -36,13 +36,13 @@ def test_index_basics():
3636

3737
@pytest.mark.skip(reason="Test indices implementation")
3838
def test_index_error():
39-
@Entity(id=3, uid=3)
39+
@Entity()
4040
class TestEntityInvalidIndex:
41-
id = Id(id=1, uid=3001)
41+
id = Id()
4242

4343
# Cannot set index type when index is False
4444
try:
45-
str = Property(str, id=2, uid=3002, index=False, index_type=IndexType.hash)
45+
str = Property(str, index=False, index_type=IndexType.hash)
4646
except Exception:
4747
assert pytest.raises(Exception,
4848
match='trying to set index type on property of id 2 while index is set to False')

tests/test_inmemory.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import objectbox
2-
from tests.common import load_empty_test_default_store
2+
from tests.common import create_test_store
33
from tests.model import TestEntity
44
import os.path
55
import shutil
@@ -8,7 +8,7 @@
88
def test_inmemory():
99
# Use default path for persistent store
1010
db_name = "testdata"
11-
store = load_empty_test_default_store()
11+
store = create_test_store()
1212
box = store.box(TestEntity)
1313
object = TestEntity()
1414
id = box.put(object)
@@ -21,7 +21,7 @@ def test_inmemory():
2121

2222
# Expect no path for in-memory store
2323
db_name = "memory:testdata"
24-
store = load_empty_test_default_store(db_name)
24+
store = create_test_store(db_name)
2525
box = store.box(TestEntity)
2626
object = TestEntity()
2727
id = box.put(object)

tests/test_query.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ def test_flex_contains_key_value():
316316

317317

318318
def test_offset_limit():
319-
store = load_empty_test_default_store()
319+
store = create_test_store()
320320

321321
box = store.box(TestEntity)
322322
box.put(TestEntity())

tests/test_store_options.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_set_options():
5252
def test_store_with_options():
5353
store = objectbox.Store(
5454
model=tests.common.create_default_model(),
55-
directory=tests.common.test_dir,
55+
directory="testdata",
5656
max_db_size_in_kb=1<<20,
5757
max_data_size_in_kb=(1<<20)-(1<<10),
5858
file_mode=int('664',8),

0 commit comments

Comments
 (0)