Skip to content

Commit eca7ba4

Browse files
committed
add tests
1 parent fe1193e commit eca7ba4

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

mergin/test/test_mergin_project.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import tempfile
55
import pytest
66
from mergin.merginproject import MerginProject
7+
from pygeodiff import GeoDiffLibError
78
from mergin.common import DeltaChangeType, PullActionType, ClientError
89
from mergin.models import ProjectDeltaChange, ProjectDeltaItemDiff
910
from mergin.client_pull import PullAction
@@ -418,3 +419,56 @@ def username(self):
418419
assert not mp.geodiff.has_changes(os.path.join(tmp_dir, "live-server.diff"))
419420
assert not mp.geodiff.has_changes(os.path.join(tmp_dir, "live-base.diff"))
420421
assert mp.geodiff.has_changes(os.path.join(tmp_dir, "live-conflict.diff"))
422+
423+
424+
def test_set_tables_to_skip():
425+
"""Tables in set_tables_to_skip are excluded from changeset creation."""
426+
base = os.path.join(TEST_DATA_DIR, "two_tables.gpkg")
427+
modified = os.path.join(TEST_DATA_DIR, "two_tables_1_A.gpkg")
428+
429+
with tempfile.TemporaryDirectory() as tmp_dir:
430+
mp = MerginProject(tmp_dir)
431+
diff = os.path.join(tmp_dir, "diff.diff")
432+
433+
mp.geodiff.create_changeset(base, modified, diff)
434+
assert mp.geodiff.has_changes(diff)
435+
436+
mp.set_tables_to_skip(["survey"])
437+
mp.geodiff.create_changeset(base, modified, diff)
438+
assert not mp.geodiff.has_changes(diff)
439+
440+
mp.set_tables_to_skip([])
441+
mp.geodiff.create_changeset(base, modified, diff)
442+
assert mp.geodiff.has_changes(diff)
443+
444+
445+
def test_set_tables_to_include():
446+
"""Only tables in set_tables_to_include appear in the changeset."""
447+
# two_tables.gpkg -> two_tables_1_A.gpkg: only survey changes, simple is unchanged
448+
base = os.path.join(TEST_DATA_DIR, "two_tables.gpkg")
449+
modified = os.path.join(TEST_DATA_DIR, "two_tables_1_A.gpkg")
450+
451+
with tempfile.TemporaryDirectory() as tmp_dir:
452+
mp = MerginProject(tmp_dir)
453+
diff = os.path.join(tmp_dir, "diff.diff")
454+
455+
mp.set_tables_to_include(["simple"])
456+
mp.geodiff.create_changeset(base, modified, diff)
457+
assert not mp.geodiff.has_changes(diff)
458+
459+
mp.set_tables_to_include(["survey"])
460+
mp.geodiff.create_changeset(base, modified, diff)
461+
assert mp.geodiff.has_changes(diff)
462+
463+
mp.set_tables_to_include([])
464+
mp.geodiff.create_changeset(base, modified, diff)
465+
assert mp.geodiff.has_changes(diff)
466+
467+
468+
def test_tables_to_skip_and_include_mutually_exclusive():
469+
"""Setting both skip and include lists should raise an error."""
470+
with tempfile.TemporaryDirectory() as tmp_dir:
471+
mp = MerginProject(tmp_dir)
472+
mp.set_tables_to_skip(["table_a"])
473+
with pytest.raises(GeoDiffLibError):
474+
mp.set_tables_to_include(["table_b"])

0 commit comments

Comments
 (0)