test_describe.py¶
Last source¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | """Module holding BDD tests for isshub Repository code_repository entity."""
from functools import partial
from uuid import uuid4
import pytest
from pytest import mark
from pytest_bdd import given, parsers, scenario, scenarios, then
from isshub.domain.utils.testing.validation import (
FrozenAttributeError,
check_field,
check_field_not_nullable,
check_field_value,
string_only,
uuid4_only,
)
from ...namespace.tests.fixtures import namespace
from .fixtures import repository_factory
FEATURE_FILE = "../features/describe.feature"
scenario = partial(scenario, FEATURE_FILE)
@mark.parametrize(["value", "exception"], uuid4_only)
@scenario("A repository identifier is a uuid")
def test_repository_identifier_is_a_uuid(value, exception):
pass
@mark.parametrize(["value", "exception"], string_only)
@scenario("A repository name is a string")
def test_repository_name_is_a_string(value, exception):
pass
@mark.parametrize(
["value", "exception"],
[(pytest.lazy_fixture("namespace"), None), ("foo", TypeError), (1, TypeError)],
)
@scenario("A repository namespace is a Namespace")
def test_repository_namespace_is_a_namespace(value, exception):
pass
@given("a repository", target_fixture="repository")
def a_repository(repository_factory):
return repository_factory()
@then(parsers.parse("it must have a field named {field_name:w}"))
def repository_has_field(repository, field_name):
check_field(repository, field_name)
@then(parsers.parse("its {field_name:w} must be a {field_type}"))
def repository_field_is_of_a_certain_type(
repository_factory,
field_name,
field_type,
# next args are for parametrize
value,
exception,
):
check_field_value(repository_factory, field_name, value, exception)
@then(parsers.parse("its {field_name:w} is mandatory"))
def repository_field_is_mandatory(repository_factory, field_name):
check_field_not_nullable(repository_factory, field_name)
@scenario("A repository identifier cannot be changed")
def test_repository_identifier_cannot_be_changed():
pass
@then("its identifier cannot be changed")
def repository_identifier_cannot_be_changed(repository):
with pytest.raises(FrozenAttributeError):
repository.identifier = uuid4()
# To make pytest-bdd fail if some scenarios are not implemented. KEEP AT THE END
scenarios(FEATURE_FILE)
|
Changes¶
feat(repository): Add domain repositories¶
- Commit
- Hash
- Date
2020-10-06 17:30:45 +0200
- Type
Modified
- Stats
+14 -8
@@ -1,4 +1,5 @@
"""Module holding BDD tests for isshub Repository code_repository entity."""
+from functools import partial
from uuid import uuid4
import pytest
@@ -18,14 +19,18 @@ from ...namespace.tests.fixtures import namespace
from .fixtures import repository_factory
+FEATURE_FILE = "../features/describe.feature"
+scenario = partial(scenario, FEATURE_FILE)
+
+
@mark.parametrize(["value", "exception"], uuid4_only)
-@scenario("../features/describe.feature", "A Repository identifier is a uuid")
+@scenario("A repository identifier is a uuid")
def test_repository_identifier_is_a_uuid(value, exception):
pass
@mark.parametrize(["value", "exception"], string_only)
-@scenario("../features/describe.feature", "A Repository name is a string")
+@scenario("A repository name is a string")
def test_repository_name_is_a_string(value, exception):
pass
@@ -34,15 +39,12 @@ def test_repository_name_is_a_string(value, exception):
["value", "exception"],
[(pytest.lazy_fixture("namespace"), None), ("foo", TypeError), (1, TypeError)],
)
-@scenario("../features/describe.feature", "A Repository namespace is a Namespace")
+@scenario("A repository namespace is a Namespace")
def test_repository_namespace_is_a_namespace(value, exception):
pass
-scenarios("../features/describe.feature")
-
-
-@given("a Repository", target_fixture="repository")
+@given("a repository", target_fixture="repository")
def a_repository(repository_factory):
return repository_factory()
@@ -69,7 +71,7 @@ def repository_field_is_mandatory(repository_factory, field_name):
check_field_not_nullable(repository_factory, field_name)
-@scenario("../features/describe.feature", "A Repository identifier cannot be changed")
+@scenario("A repository identifier cannot be changed")
def test_repository_identifier_cannot_be_changed():
pass
@@ -78,3 +80,7 @@ def test_repository_identifier_cannot_be_changed():
def repository_identifier_cannot_be_changed(repository):
with pytest.raises(FrozenAttributeError):
repository.identifier = uuid4()
+
+
+# To make pytest-bdd fail if some scenarios are not implemented. KEEP AT THE END
+scenarios(FEATURE_FILE)
fix(entity): id changed from int to uuid4, renamed to identifier¶
- Commit
- Hash
- Date
2020-10-05 10:51:49 +0200
- Type
Modified
- Stats
+10 -9
@@ -1,4 +1,5 @@
"""Module holding BDD tests for isshub Repository code_repository entity."""
+from uuid import uuid4
import pytest
from pytest import mark
@@ -9,17 +10,17 @@ from isshub.domain.utils.testing.validation import (
check_field,
check_field_not_nullable,
check_field_value,
- positive_integer_only,
string_only,
+ uuid4_only,
)
from ...namespace.tests.fixtures import namespace
from .fixtures import repository_factory
-@mark.parametrize(["value", "exception"], positive_integer_only)
-@scenario("../features/describe.feature", "A Repository id is a positive integer")
-def test_repository_id_is_a_positive_integer(value, exception):
+@mark.parametrize(["value", "exception"], uuid4_only)
+@scenario("../features/describe.feature", "A Repository identifier is a uuid")
+def test_repository_identifier_is_a_uuid(value, exception):
pass
@@ -68,12 +69,12 @@ def repository_field_is_mandatory(repository_factory, field_name):
check_field_not_nullable(repository_factory, field_name)
-@scenario("../features/describe.feature", "A Repository id cannot be changed")
-def test_repository_id_cannot_be_changed():
+@scenario("../features/describe.feature", "A Repository identifier cannot be changed")
+def test_repository_identifier_cannot_be_changed():
pass
-@then("its id cannot be changed")
-def repository_id_cannot_be_changed(repository):
+@then("its identifier cannot be changed")
+def repository_identifier_cannot_be_changed(repository):
with pytest.raises(FrozenAttributeError):
- repository.id = repository.id + 1
+ repository.identifier = uuid4()
fix(entities): Entities id field are frozen once set¶
- Commit
- Hash
- Date
2020-09-27 09:56:59 +0200
- Type
Modified
- Stats
+12 -0
@@ -5,6 +5,7 @@ from pytest import mark
from pytest_bdd import given, parsers, scenario, scenarios, then
from isshub.domain.utils.testing.validation import (
+ FrozenAttributeError,
check_field,
check_field_not_nullable,
check_field_value,
@@ -65,3 +66,14 @@ def repository_field_is_of_a_certain_type(
@then(parsers.parse("its {field_name:w} is mandatory"))
def repository_field_is_mandatory(repository_factory, field_name):
check_field_not_nullable(repository_factory, field_name)
+
+
+@scenario("../features/describe.feature", "A Repository id cannot be changed")
+def test_repository_id_cannot_be_changed():
+ pass
+
+
+@then("its id cannot be changed")
+def repository_id_cannot_be_changed(repository):
+ with pytest.raises(FrozenAttributeError):
+ repository.id = repository.id + 1
fix(bdd): Rename “can/cannot be none” describing scenarios¶
- Commit
- Hash
- Date
2020-09-26 17:13:51 +0200
- Type
Modified
- Stats
+2 -2
@@ -62,6 +62,6 @@ def repository_field_is_of_a_certain_type(
check_field_value(repository_factory, field_name, value, exception)
-@then(parsers.parse("its {field_name:w} cannot be none"))
-def repository_field_cannot_be_none(repository_factory, field_name):
+@then(parsers.parse("its {field_name:w} is mandatory"))
+def repository_field_is_mandatory(repository_factory, field_name):
check_field_not_nullable(repository_factory, field_name)
chore: Fix breaking changes from updated dependencies¶
- Commit
- Hash
- Date
2020-09-25 22:54:00 +0200
- Type
Modified
- Stats
+2 -2
@@ -40,8 +40,8 @@ def test_repository_namespace_is_a_namespace(value, exception):
scenarios("../features/describe.feature")
-@given("a Repository")
-def repository(repository_factory):
+@given("a Repository", target_fixture="repository")
+def a_repository(repository_factory):
return repository_factory()
refactor(core): Rename core domain context to code_repository¶
- Commit
- Hash
- Date
2019-08-15 23:31:33 +0200
- Type
Renamed
- Old path
isshub/domain/contexts/core/entities/repository/tests/test_describe.py
- Stats
+1 -1
@@ -1,4 +1,4 @@
-"""Module holding BDD tests for isshub Repository core entity."""
+"""Module holding BDD tests for isshub Repository code_repository entity."""
import pytest
from pytest import mark