Split tests into special and normal cases for create_snapshot(), dunder and normal methods
This commit is contained in:
parent
dea221a774
commit
db170b40bc
@ -23,7 +23,63 @@ VALID_SNAPSHOT_NAME = r"[\w._+-]+[^/]*"
|
|||||||
|
|
||||||
|
|
||||||
# ========== Integration Tests ==========
|
# ========== Integration Tests ==========
|
||||||
class TestRepositoryPreCreate(unittest.TestCase):
|
class TestDunderMethods(unittest.TestCase):
|
||||||
|
"""Test dunder methods of the Repository.
|
||||||
|
|
||||||
|
Mocked Modules/Classes
|
||||||
|
----------------------
|
||||||
|
rbackup.struct.repository.Snapshot
|
||||||
|
|
||||||
|
Mocked Attributes
|
||||||
|
-----------------
|
||||||
|
* Repository.read_metadata
|
||||||
|
* Repository.write_metadata
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.patched_path = patch.multiple(
|
||||||
|
Path, exists=DEFAULT, mkdir=DEFAULT, symlink_to=DEFAULT, touch=DEFAULT
|
||||||
|
)
|
||||||
|
self.patched_metadata = patch.multiple(
|
||||||
|
Repository, read_metadata=DEFAULT, write_metadata=DEFAULT
|
||||||
|
)
|
||||||
|
self.patched_snapshot = patch(
|
||||||
|
f"{TESTING_PACKAGE}.repository.Snapshot", spec_set=Snapshot
|
||||||
|
)
|
||||||
|
|
||||||
|
self.mocked_path = self.patched_path.start()
|
||||||
|
self.mocked_metadata = self.patched_metadata.start()
|
||||||
|
self.mocked_snapshot = self.patched_snapshot.start()
|
||||||
|
|
||||||
|
self.mocked_path["exists"].return_value = True
|
||||||
|
|
||||||
|
@given(lists(from_regex(VALID_SNAPSHOT_NAME, fullmatch=True), unique=True))
|
||||||
|
def test_dunder_len(self, snapshots):
|
||||||
|
self.mocked_metadata["read_metadata"].return_value = snapshots.copy()
|
||||||
|
repo = Repository("/tmp/backup")
|
||||||
|
|
||||||
|
self.assertEqual(len(repo), len(snapshots))
|
||||||
|
self.assertEqual(len(repo.snapshots), len(snapshots))
|
||||||
|
|
||||||
|
repo.create_snapshot()
|
||||||
|
|
||||||
|
self.assertEqual(len(repo), len(snapshots) + 1)
|
||||||
|
self.assertEqual(len(repo.snapshots), len(snapshots) + 1)
|
||||||
|
|
||||||
|
@given(from_regex(VALID_SNAPSHOT_NAME, fullmatch=True))
|
||||||
|
def test_dunder_contains(self, name):
|
||||||
|
self.mocked_metadata["read_metadata"].return_value = []
|
||||||
|
repo = Repository("/tmp/backup")
|
||||||
|
|
||||||
|
self.assertFalse(name in repo)
|
||||||
|
repo.create_snapshot(name)
|
||||||
|
self.assertTrue(name in repo)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
patch.stopall()
|
||||||
|
|
||||||
|
|
||||||
|
class TestProperties(unittest.TestCase):
|
||||||
"""Test properties of the Repository before running create_snapshot().
|
"""Test properties of the Repository before running create_snapshot().
|
||||||
|
|
||||||
Mocked Modules/Classes
|
Mocked Modules/Classes
|
||||||
@ -63,20 +119,6 @@ class TestRepositoryPreCreate(unittest.TestCase):
|
|||||||
else:
|
else:
|
||||||
self.assertFalse(repo.empty)
|
self.assertFalse(repo.empty)
|
||||||
|
|
||||||
@given(lists(from_regex(VALID_SNAPSHOT_NAME, fullmatch=True), unique=True))
|
|
||||||
def test_dunder_len(self, snapshots):
|
|
||||||
self.mocked_metadata["read_metadata"].return_value = snapshots.copy()
|
|
||||||
repo = Repository("/tmp/backup")
|
|
||||||
|
|
||||||
self.assertEqual(len(repo.snapshots), len(snapshots))
|
|
||||||
|
|
||||||
@given(text(min_size=1))
|
|
||||||
def test_dunder_contains(self, name):
|
|
||||||
self.mocked_metadata["read_metadata"].return_value = []
|
|
||||||
repo = Repository("/tmp/backup")
|
|
||||||
|
|
||||||
self.assertFalse(name in repo)
|
|
||||||
|
|
||||||
@given(text())
|
@given(text())
|
||||||
def test_valid_name(self, name):
|
def test_valid_name(self, name):
|
||||||
self.mocked_metadata["read_metadata"].return_value = []
|
self.mocked_metadata["read_metadata"].return_value = []
|
||||||
@ -103,7 +145,7 @@ class TestRepositoryPreCreate(unittest.TestCase):
|
|||||||
patch.stopall()
|
patch.stopall()
|
||||||
|
|
||||||
|
|
||||||
class TestRepositoryPostCreate(unittest.TestCase):
|
class TestRepositoryCreateSnapshotNormalCases(unittest.TestCase):
|
||||||
"""Test properties of the Repository after running create_snapshot().
|
"""Test properties of the Repository after running create_snapshot().
|
||||||
|
|
||||||
Mocked Modules/Classes
|
Mocked Modules/Classes
|
||||||
@ -133,38 +175,46 @@ class TestRepositoryPostCreate(unittest.TestCase):
|
|||||||
|
|
||||||
self.mocked_path["exists"].return_value = True
|
self.mocked_path["exists"].return_value = True
|
||||||
|
|
||||||
@given(lists(from_regex(VALID_SNAPSHOT_NAME, fullmatch=True), unique=True))
|
def test_returns_snapshot_object(self):
|
||||||
def test_dunder_len(self, snapshots):
|
|
||||||
self.mocked_metadata["read_metadata"].return_value = snapshots.copy()
|
|
||||||
repo = Repository("/tmp/backup")
|
|
||||||
|
|
||||||
repo.create_snapshot()
|
|
||||||
|
|
||||||
self.assertEqual(len(repo), len(snapshots) + 1)
|
|
||||||
self.assertEqual(len(repo.snapshots), len(snapshots) + 1)
|
|
||||||
|
|
||||||
@given(from_regex(VALID_SNAPSHOT_NAME, fullmatch=True))
|
|
||||||
def test_dunder_contains(self, name):
|
|
||||||
self.mocked_path["exists"].return_value = False
|
|
||||||
repo = Repository("/tmp/backup")
|
|
||||||
|
|
||||||
repo.create_snapshot(name)
|
|
||||||
self.assertTrue(name in repo)
|
|
||||||
|
|
||||||
def test_empty(self):
|
|
||||||
self.mocked_metadata["read_metadata"].return_value = []
|
|
||||||
repo = Repository("/tmp/backup")
|
|
||||||
|
|
||||||
repo.create_snapshot()
|
|
||||||
|
|
||||||
self.assertFalse(repo.empty)
|
|
||||||
|
|
||||||
def test_snapshot_returns_snapshot_object(self):
|
|
||||||
self.mocked_metadata["read_metadata"].return_value = []
|
self.mocked_metadata["read_metadata"].return_value = []
|
||||||
repo = Repository("/tmp/backup")
|
repo = Repository("/tmp/backup")
|
||||||
|
|
||||||
self.assertIsInstance(repo.create_snapshot(), Snapshot)
|
self.assertIsInstance(repo.create_snapshot(), Snapshot)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
patch.stopall()
|
||||||
|
|
||||||
|
|
||||||
|
class TestRepositoryCreateSnapshotSpecialCases(unittest.TestCase):
|
||||||
|
"""Test properties of the Repository after running create_snapshot().
|
||||||
|
|
||||||
|
Mocked Modules/Classes
|
||||||
|
----------------------
|
||||||
|
rbackup.struct.repository.Snapshot
|
||||||
|
|
||||||
|
Mocked Attributes
|
||||||
|
-----------------
|
||||||
|
* Repository.read_metadata
|
||||||
|
* Repository.write_metadata
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.patched_path = patch.multiple(
|
||||||
|
Path, exists=DEFAULT, mkdir=DEFAULT, symlink_to=DEFAULT, touch=DEFAULT
|
||||||
|
)
|
||||||
|
self.patched_metadata = patch.multiple(
|
||||||
|
Repository, read_metadata=DEFAULT, write_metadata=DEFAULT
|
||||||
|
)
|
||||||
|
self.patched_snapshot = patch(
|
||||||
|
f"{TESTING_PACKAGE}.repository.Snapshot", spec_set=Snapshot
|
||||||
|
)
|
||||||
|
|
||||||
|
self.mocked_path = self.patched_path.start()
|
||||||
|
self.mocked_metadata = self.patched_metadata.start()
|
||||||
|
self.mocked_snapshot = self.patched_snapshot.start()
|
||||||
|
|
||||||
|
self.mocked_path["exists"].return_value = True
|
||||||
|
|
||||||
def test_create_duplicate_snapshot(self):
|
def test_create_duplicate_snapshot(self):
|
||||||
# Test that if a snapshot is a duplicate, then return that duplicate snapshot
|
# Test that if a snapshot is a duplicate, then return that duplicate snapshot
|
||||||
self.mocked_metadata["read_metadata"].return_value = []
|
self.mocked_metadata["read_metadata"].return_value = []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user