Update the test to test models in a memory database.

Add fixtures in the environment.
dev
KKlochko 4 months ago
parent 0abefda95a
commit c8d2b84cfc

@ -0,0 +1,33 @@
Feature: Creating the source
@fixture.in_memory_database
@fixture.backup_plan_repository
Scenario Outline: Create an new unique backup plan
Given the label "<label>"
And the path "<source_path>"
And the destinations <destinations>
When I create the backup plan
Then it should be created successfully
Examples:
| label | source_path | destinations |
| usb | /mnt/usb | [] |
| db | /db | ["/backup/db"] |
| temp | /tmp | ["/backup/tmp1", "/backup/tmp2"] |
@fixture.in_memory_database
@fixture.backup_plan_repository
Scenario Outline: Create an new unique backup plan
Given the label "<label>"
And the path "<source_path>"
And the destinations <destinations>
When I create the backup plan
When I delete the backup plan
Then it should be deleted successfully
Examples:
| label | source_path | destinations |
| usb | /mnt/usb | [] |
| db | /db | ["/backup/db"] |
| temp | /tmp | ["/backup/tmp1", "/backup/tmp2"] |

@ -1,16 +0,0 @@
Feature: Creating the source
Scenario Outline: Create an new unique backup plan
Given the label "<label>"
And the path "<source_path>"
And the destinations <destinations>
And the arguments "<arguments>"
When I create the backup plan
Then it should be created successfully
Examples:
| label | source_path | destinations | arguments |
| usb | /mnt/usb | [] | <empty> |
| db | /db | ["/backup/db"] | -avuP |
| temp | /tmp | ["/backup/tmp1", "/backup/tmp2"] | -avuP --delete |

@ -0,0 +1,23 @@
from behave import fixture, use_fixture
from tui_rsync.core.components.backup_plan.application.repository.backup_plan_repository import BackupPlanRepository
from tui_rsync.infrastructure.orm import InMemoryDatabaseManager
@fixture
def setup_in_memory_database_manager(context):
context.db = InMemoryDatabaseManager()
yield context.db
@fixture
def setup_backup_plan_repository(context):
context.backup_plan_repository = BackupPlanRepository(context.db)
yield context.db
def before_tag(context, tag):
if tag == "fixture.in_memory_database":
use_fixture(setup_in_memory_database_manager, context)
if tag == "fixture.backup_plan_repository":
use_fixture(setup_backup_plan_repository, context)

@ -3,6 +3,7 @@ import json
from tui_rsync.core.components.backup_plan.domain import BackupPlan, Source, Destination from tui_rsync.core.components.backup_plan.domain import BackupPlan, Source, Destination
@given('the label "{label}"') @given('the label "{label}"')
def given_source_label(context, label): def given_source_label(context, label):
context.label = label context.label = label
@ -18,26 +19,30 @@ def given_source_destinations(context, destinations_json):
context.destinations = json.loads(destinations_json) context.destinations = json.loads(destinations_json)
@given('the arguments "{arguments}"')
def given_source_arguments(context, arguments):
context.args = arguments
if arguments == "<empty>":
context.args = ""
@when('I create the backup plan') @when('I create the backup plan')
def add_source(context): def add_backup_plan(context):
try: try:
context.backup_plan = BackupPlan( context.backup_plan = BackupPlan(
label=context.label, label=context.label,
source=Source(context.source_path), source=Source(context.source_path),
destinations=map(lambda path: Destination(path), context.destinations), destinations=list(map(lambda path: Destination(path), context.destinations)),
#context.args,
) )
#context.source = Source.get_source(context.label) context.backup_plan_repository.add(context.backup_plan)
except Exception:
context.backup_plan = context.backup_plan_repository.get_by_id(context.backup_plan.id)
except Exception as e:
context.exception_raised = True
else:
context.exception_raised = False
@when('I delete the backup plan')
def add_backup_plan(context):
try:
context.deleted_result = context.backup_plan_repository.delete(context.backup_plan.id)
context.backup_plan = context.backup_plan_repository.get_by_id(context.backup_plan.id)
except Exception as e:
context.exception_raised = True context.exception_raised = True
else: else:
context.exception_raised = False context.exception_raised = False
@ -49,16 +54,20 @@ def compare_destinations(actual: list[Destination], expected: list[str]) -> bool
@then('it should be created successfully') @then('it should be created successfully')
def path_has_added(context): def backup_plan_has_added(context):
assert context.exception_raised == False assert context.exception_raised == False
assert context.backup_plan is not None
assert context.backup_plan.label == context.label assert context.backup_plan.label == context.label
assert context.backup_plan.source == Source(context.source_path) assert context.backup_plan.source == Source(context.source_path)
print(f'{context.backup_plan.destinations=}')
print(f'{context.destinations=}')
assert compare_destinations( assert compare_destinations(
context.backup_plan.destinations, context.backup_plan.destinations,
context.destinations context.destinations
) )
#assert context.source.args.command == context.args
@then('it should be deleted successfully')
def backup_plan_has_deleted(context):
assert context.exception_raised == False
assert context.backup_plan is None
assert context.deleted_result
Loading…
Cancel
Save