- 5 tests
+ 14 tests
|
@@ -237,60 +237,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -352,8 +352,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -363,7 +363,7 @@ Features
@@ -373,10 +373,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -386,7 +386,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -398,8 +444,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -409,7 +478,7 @@ Features
@@ -419,7 +488,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -469,25 +538,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -498,8 +663,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -510,20 +675,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -589,7 +766,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -685,7 +862,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -768,7 +945,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -836,9 +1013,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -846,57 +1033,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.html b/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.html
index 38c0bf9..daaba85 100644
--- a/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.html
+++ b/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.html
@@ -156,7 +156,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 08:27
diff --git a/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.json b/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.json
index 441dafb..1298976 100644
--- a/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.json
+++ b/docs/serenity/021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.json
@@ -1 +1 @@
-{"name":"givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]/[method:givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]","testCaseName":"be.sddevelopment.validation.CheckedTest","methodName":"givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered","userStory":{"id":"be.sddevelopment.validation.CheckedTest","storyName":"CheckedTest","displayName":"CheckedTest","storyClassName":"be.sddevelopment.validation.CheckedTest","path":"be.sddevelopment.validation.CheckedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"CheckedTest","description":"CheckedTest"}],"narrative":"","type":"feature"},"title":"Given checked with data when applying rule its evaluation is remembered","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be/sddevelopment/validation/CheckedTest","type":"feature","displayName":"CheckedTest"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-23T11:09:36.087196878Z[Etc/UTC]","duration":4,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
+{"name":"givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]/[method:givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]","testCaseName":"be.sddevelopment.validation.CheckedTest","methodName":"givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered","userStory":{"id":"be.sddevelopment.validation.CheckedTest","storyName":"CheckedTest","displayName":"CheckedTest","storyClassName":"be.sddevelopment.validation.CheckedTest","path":"be.sddevelopment.validation.CheckedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"CheckedTest","description":"CheckedTest"}],"narrative":"","type":"feature"},"title":"Given checked with data when applying rule its evaluation is remembered","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be/sddevelopment/validation/CheckedTest","type":"feature","displayName":"Checked test"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T08:27:16.204649648Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.html b/docs/serenity/056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.html
index 2edf963..0195d94 100644
--- a/docs/serenity/056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.html
+++ b/docs/serenity/056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.html
@@ -156,7 +156,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 08:27
@@ -241,7 +241,7 @@
@@ -353,8 +353,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -364,7 +364,7 @@ Features
@@ -374,10 +374,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -387,7 +387,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -399,8 +445,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -410,7 +479,7 @@ Features
@@ -420,7 +489,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -470,25 +539,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -499,8 +664,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -511,20 +676,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -590,7 +767,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -686,7 +863,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -769,7 +946,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -837,9 +1014,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -847,57 +1034,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html b/docs/serenity/1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html
index 3956aee..314b551 100644
--- a/docs/serenity/1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html
+++ b/docs/serenity/1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html
@@ -154,7 +154,7 @@
$("#requirements-tabs").tabs();
$("#test-tabs").tabs();
- var requirementsTree = [{"text":"Checked test","type":"feature","href":"1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]}];
+ var requirementsTree = [{"text":"Checked test","type":"feature","href":"1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e4 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e4 test cases\u003c/span\u003e"]}];
$('#tree').treeview({
data: requirementsTree,
@@ -234,7 +234,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 08:27
@@ -298,6 +298,39 @@ Feature Coverage By Scenario
Overview
+
+
+
+
+ Scenario: Guard throws a validation exception given invalid source data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -373,11 +439,37 @@ Overview
Total Number of Test Cases
- 2
+ 4
Fastest Test
- 4ms
+ 3ms
@@ -500,30 +618,30 @@ Key Statistics
Slowest
Test
- 27ms
+ 16ms
Tests Started
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 08:27:16
Average
Execution Time
- 15ms
+ 6ms
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 08:27:16
Total
Execution Time
- 31ms
+ 25ms
@@ -545,6 +663,21 @@
Automated Tests
+
+
+ CheckedTest
+
+
+ Guard has no effect given valid source data
+
+
+
+ 0
+ 08:27:16
+ 003ms
+ SUCCESS
+
+
CheckedTest
@@ -555,8 +688,23 @@ Automated Tests
0
- 11:09:36
- 027ms
+ 08:27:16
+ 016ms
+ SUCCESS
+
+
+
+
+ CheckedTest
+
+
+ Guard throws a validation exception given invalid source data
+
+
+
+ 0
+ 08:27:16
+ 003ms
SUCCESS
@@ -570,8 +718,8 @@ Automated Tests
0
- 11:09:36
- 004ms
+ 08:27:16
+ 003ms
SUCCESS
@@ -630,7 +778,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 4}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -725,7 +873,7 @@ Manual Tests
datasets: [{
label: 'Feature Coverage',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 4}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -821,7 +969,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [2,0,0,0,0,0,0,0],
+ data: [4,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -904,7 +1052,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['2','0','0','0','0','0','0','0'],
+ data: ['4','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
diff --git a/docs/serenity/27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.html b/docs/serenity/27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.html
new file mode 100644
index 0000000..1f9c4bc
--- /dev/null
+++ b/docs/serenity/27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.html
@@ -0,0 +1,297 @@
+
+
+
+
+ Invalid object exception must contain all errors given multiple errors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0.02s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.json b/docs/serenity/27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.json
new file mode 100644
index 0000000..285ebdf
--- /dev/null
+++ b/docs/serenity/27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.json
@@ -0,0 +1 @@
+{"name":"invalidObjectExceptionMustContainAllErrors_givenMultipleErrors()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.InvalidObjectExceptionTest]/[method:invalidObjectExceptionMustContainAllErrors_givenMultipleErrors()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.InvalidObjectExceptionTest]","testCaseName":"be.sddevelopment.validation.InvalidObjectExceptionTest","methodName":"invalidObjectExceptionMustContainAllErrors_givenMultipleErrors","userStory":{"id":"be.sddevelopment.validation.InvalidObjectExceptionTest","storyName":"InvalidObjectExceptionTest","displayName":"InvalidObjectExceptionTest","storyClassName":"be.sddevelopment.validation.InvalidObjectExceptionTest","path":"be.sddevelopment.validation.InvalidObjectExceptionTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"InvalidObjectExceptionTest","description":"InvalidObjectExceptionTest"}],"narrative":"","type":"feature"},"title":"Invalid object exception must contain all errors given multiple errors","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/InvalidObjectExceptionTest","type":"feature","displayName":"InvalidObjectExceptionTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:43.495178250Z[Etc/UTC]","duration":18,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.html b/docs/serenity/290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.html
new file mode 100644
index 0000000..b72addb
--- /dev/null
+++ b/docs/serenity/290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.html
@@ -0,0 +1,297 @@
+
+
+
+
+ Rules are chainable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.json b/docs/serenity/290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.json
new file mode 100644
index 0000000..abb9612
--- /dev/null
+++ b/docs/serenity/290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.json
@@ -0,0 +1 @@
+{"name":"rules_areChainable()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]/[method:rules_areChainable()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]","testCaseName":"be.sddevelopment.validation.ValidationRuleTest","methodName":"rules_areChainable","userStory":{"id":"be.sddevelopment.validation.ValidationRuleTest","storyName":"ValidationRuleTest","displayName":"ValidationRuleTest","storyClassName":"be.sddevelopment.validation.ValidationRuleTest","path":"be.sddevelopment.validation.ValidationRuleTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationRuleTest","description":"ValidationRuleTest"}],"narrative":"","type":"feature"},"title":"Rules are chainable","tags":[{"name":"be/sddevelopment/validation/ValidationRuleTest","type":"feature","displayName":"ValidationRuleTest"},{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:43.271723922Z[Etc/UTC]","duration":0,"projectKey":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.html b/docs/serenity/291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.html
new file mode 100644
index 0000000..3e59e4a
--- /dev/null
+++ b/docs/serenity/291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.html
@@ -0,0 +1,299 @@
+
+
+
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 08:27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0.01s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.json b/docs/serenity/291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.json
new file mode 100644
index 0000000..453fe68
--- /dev/null
+++ b/docs/serenity/291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.json
@@ -0,0 +1 @@
+{"name":"checkedShouldAllowForFluentUsage_whenUsingItAsAGuard_givenInvalidObject()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidatorDogfoodTest]/[nested-class:CheckedUsages]/[method:checkedShouldAllowForFluentUsage_whenUsingItAsAGuard_givenInvalidObject()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidatorDogfoodTest]/[nested-class:CheckedUsages]","testCaseName":"be.sddevelopment.validation.ValidatorDogfoodTest.CheckedUsages","methodName":"checkedShouldAllowForFluentUsage_whenUsingItAsAGuard_givenInvalidObject","userStory":{"id":"be.sddevelopment.validation.ValidatorDogfoodTest.CheckedUsages","storyName":"CheckedUsages","displayName":"CheckedUsages","storyClassName":"be.sddevelopment.validation.ValidatorDogfoodTest$CheckedUsages","path":"be.sddevelopment.validation.ValidatorDogfoodTest.CheckedUsages","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidatorDogfoodTest","description":"ValidatorDogfoodTest"},{"name":"CheckedUsages","description":"CheckedUsages"}],"narrative":"","type":"feature"},"title":"Checked should allow for fluent usage when using it as a guard given invalid object","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/ValidatorDogfoodTest/CheckedUsages","type":"feature","displayName":"Checked usages"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be/sddevelopment/validation/ValidatorDogfoodTest","type":"story","displayName":"Validator dogfood test"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T08:27:15.985190829Z[Etc/UTC]","duration":13,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/2a4631d87648e59c428d4cf0e9247f9d286e4679f436ca2ce872e931eb4dfd58.html b/docs/serenity/2a4631d87648e59c428d4cf0e9247f9d286e4679f436ca2ce872e931eb4dfd58.html
index 6336ac2..6ea3cf5 100644
--- a/docs/serenity/2a4631d87648e59c428d4cf0e9247f9d286e4679f436ca2ce872e931eb4dfd58.html
+++ b/docs/serenity/2a4631d87648e59c428d4cf0e9247f9d286e4679f436ca2ce872e931eb4dfd58.html
@@ -146,7 +146,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -190,8 +190,8 @@ Test Outcomes for Stories
validation
- 5
- 5
+ 14
+ 14
100%
@@ -210,11 +210,11 @@ Test Outcomes for Stories
Test Outcomes for Stories
style="width: 0%; background-color:#cbddea;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -240,9 +240,9 @@
Test Outcomes for Stories
style="width: 0%; background-color:#cccdc7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -254,9 +254,9 @@ Test Outcomes for Stories
style="width: 0%; background-color:#e3c281;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -268,9 +268,9 @@ Test Outcomes for Stories
style="width: 0%; background-color:#f9c7a7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -282,9 +282,9 @@ Test Outcomes for Stories
style="width: 0%; background-color:#fd938e;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -296,9 +296,9 @@ Test Outcomes for Stories
style="width: 0%; background-color:#fab186;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -310,9 +310,148 @@ Test Outcomes for Stories
style="width: 0%; background-color:#fab0f3;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
+ - Failing tests: 0 (0%)
+ - Tests with errors: 0 (0%)
+ - Compromised tests 0 (0%)
+ - Aborted tests: 0 (0%)
+ - Pending tests: 0 (0%)
+ - Ignored or skipped tests: 0 (0%)">
+
+
+
+
+
+
+
+
+
+ ValidatorDogfoodTest
+ 2
+ 2
+ 100%
+
+
+ 1
+
+
+
+
+
+
+
+
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Stories
-
Report generated 23-12-2023 11:09:38
+
Report generated 26-12-2023 09:48:47
@@ -200,7 +200,7 @@
Duration Under 1 Second
- 5 tests
+ 14 tests
|
@@ -240,60 +240,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -355,8 +355,8 @@ Features
Sddevelopment
- 5
- 5
+ 14
+ 14
100%
@@ -366,7 +366,7 @@ Features
@@ -376,10 +376,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -389,7 +389,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -401,8 +447,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -412,7 +481,7 @@ Features
@@ -422,7 +491,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -472,25 +541,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -501,8 +666,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -513,20 +678,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -592,7 +769,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -688,7 +865,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -771,7 +948,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -839,9 +1016,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -849,57 +1036,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/2ec28a0c7bb9e7b60c6362d39250c507ded3dc231cdbc313af77e4dfdd52f0a4.html b/docs/serenity/2ec28a0c7bb9e7b60c6362d39250c507ded3dc231cdbc313af77e4dfdd52f0a4.html
index f01ce8f..b920f92 100644
--- a/docs/serenity/2ec28a0c7bb9e7b60c6362d39250c507ded3dc231cdbc313af77e4dfdd52f0a4.html
+++ b/docs/serenity/2ec28a0c7bb9e7b60c6362d39250c507ded3dc231cdbc313af77e4dfdd52f0a4.html
@@ -185,7 +185,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 08:27:19
@@ -201,7 +201,7 @@ Feature: Be/Sddevelopment/Validation/Checkedtest
- 2 tests
+ 4 tests
|
@@ -241,60 +241,60 @@
Key Statistics
Number of Scenarios
-
2
+
4
Total Number of Test Cases
- 2
+ 4
Tests Started
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 08:27:16
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 08:27:16
Total
Duration
- 68ms
+ 86ms
Fastest Test
- 4ms
+ 3ms
Slowest
Test
- 27ms
+ 16ms
Average
Execution Time
- 15ms
+ 6ms
Total
Execution Time
- 31ms
+ 25ms
@@ -356,8 +356,8 @@
Features
Sddevelopment
-
2
-
2
+
4
+
4
100%
@@ -367,7 +367,7 @@ Features
@@ -379,8 +379,8 @@
Features
Checked test
-
2
-
2
+
4
+
4
100%
@@ -390,7 +390,7 @@ Features
@@ -425,6 +425,18 @@
Automated Tests
+
+
+ CheckedTest
+
+ Guard has no effect given valid source data
+
+ 0
+ 08:27:16
+ 003ms
+ SUCCESS
+
+
CheckedTest
@@ -432,8 +444,20 @@ Automated Tests
Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 027ms
+ 08:27:16
+ 016ms
+ SUCCESS
+
+
+
+
+ CheckedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 08:27:16
+ 003ms
SUCCESS
@@ -444,8 +468,8 @@ Automated Tests
Given checked with data when applying rule its evaluation is remembered
0
- 11:09:36
- 004ms
+ 08:27:16
+ 003ms
SUCCESS
@@ -511,7 +535,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 4}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -607,7 +631,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [2,0,0,0,0,0,0,0],
+ data: [4,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -690,7 +714,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['2','0','0','0','0','0','0','0'],
+ data: ['4','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -771,7 +795,7 @@ Manual Tests
datasets: [
{
label: ['Passing Tests'],
- data: [2,2],
+ data: [4,4],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
diff --git a/docs/serenity/2f59e8157d5fc8baf5983148a97a9df18c25db727517dc205259e223e1dbd2c0.html b/docs/serenity/2f59e8157d5fc8baf5983148a97a9df18c25db727517dc205259e223e1dbd2c0.html
index d637da9..82a1dcb 100644
--- a/docs/serenity/2f59e8157d5fc8baf5983148a97a9df18c25db727517dc205259e223e1dbd2c0.html
+++ b/docs/serenity/2f59e8157d5fc8baf5983148a97a9df18c25db727517dc205259e223e1dbd2c0.html
@@ -182,7 +182,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -198,7 +198,7 @@ Test Results: All Tests
- 5 tests
+ 14 tests
|
@@ -238,60 +238,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -353,8 +353,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -364,7 +364,7 @@ Features
@@ -374,10 +374,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -387,7 +387,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -399,8 +445,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -410,7 +479,7 @@ Features
@@ -420,7 +489,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -470,25 +539,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -499,8 +664,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -511,20 +676,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -590,7 +767,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -686,7 +863,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -769,7 +946,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -837,9 +1014,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -847,57 +1034,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/365b16e3ee6f0291b840b9644231fff9e30b16504a367cdf3c6abe85187cb1e6.html b/docs/serenity/365b16e3ee6f0291b840b9644231fff9e30b16504a367cdf3c6abe85187cb1e6.html
index 7ac4025..8f72ae9 100644
--- a/docs/serenity/365b16e3ee6f0291b840b9644231fff9e30b16504a367cdf3c6abe85187cb1e6.html
+++ b/docs/serenity/365b16e3ee6f0291b840b9644231fff9e30b16504a367cdf3c6abe85187cb1e6.html
@@ -182,7 +182,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -198,7 +198,7 @@ Test Results: All Tests
- 5 tests
+ 14 tests
|
@@ -238,60 +238,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -353,8 +353,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -364,7 +364,7 @@ Features
@@ -374,10 +374,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -387,7 +387,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -399,8 +445,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -410,7 +479,7 @@ Features
@@ -420,7 +489,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -470,25 +539,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -499,8 +664,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -511,20 +676,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -590,7 +767,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -686,7 +863,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -769,7 +946,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -837,9 +1014,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -847,57 +1034,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html b/docs/serenity/37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html
new file mode 100644
index 0000000..07cd9e8
--- /dev/null
+++ b/docs/serenity/37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html
@@ -0,0 +1,1106 @@
+
+
+
+
+
+
+ Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Feature: Evaluated test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
+
+
+
+
+
Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 4
+
+ Total
+ Duration
+
+ 76ms
+
+
+
+ Total Number of Test Cases
+
+ 4
+
+ Fastest Test
+
+ 3ms
+
+
+
+ Number of Manual Test Cases
+
+ 0
+
+ Slowest
+ Test
+
+ 5ms
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+ Average
+ Execution Time
+
+ 3ms
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+ Total
+ Execution Time
+
+ 14ms
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.html b/docs/serenity/453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.html
new file mode 100644
index 0000000..016a6ef
--- /dev/null
+++ b/docs/serenity/453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.html
@@ -0,0 +1,297 @@
+
+
+
+
+ A validation rule can be build and used in a fluent way
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.json b/docs/serenity/453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.json
new file mode 100644
index 0000000..b7f82a3
--- /dev/null
+++ b/docs/serenity/453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.json
@@ -0,0 +1 @@
+{"name":"aValidationRule_canBeBuildAndUsed_inAFluentWay()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]/[method:aValidationRule_canBeBuildAndUsed_inAFluentWay()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]","testCaseName":"be.sddevelopment.validation.ValidationRuleTest","methodName":"aValidationRule_canBeBuildAndUsed_inAFluentWay","userStory":{"id":"be.sddevelopment.validation.ValidationRuleTest","storyName":"ValidationRuleTest","displayName":"ValidationRuleTest","storyClassName":"be.sddevelopment.validation.ValidationRuleTest","path":"be.sddevelopment.validation.ValidationRuleTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationRuleTest","description":"ValidationRuleTest"}],"narrative":"","type":"feature"},"title":"A validation rule can be build and used in a fluent way","tags":[{"name":"be/sddevelopment/validation/ValidationRuleTest","type":"feature","displayName":"ValidationRuleTest"},{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:43.256898498Z[Etc/UTC]","duration":0,"projectKey":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/489c97245257a7668d76d3bd6be11f12bb85fa1988d8e3f668dcdf4fbc1eb3c5.html b/docs/serenity/489c97245257a7668d76d3bd6be11f12bb85fa1988d8e3f668dcdf4fbc1eb3c5.html
index ae82d8e..e63780d 100644
--- a/docs/serenity/489c97245257a7668d76d3bd6be11f12bb85fa1988d8e3f668dcdf4fbc1eb3c5.html
+++ b/docs/serenity/489c97245257a7668d76d3bd6be11f12bb85fa1988d8e3f668dcdf4fbc1eb3c5.html
@@ -182,7 +182,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -198,7 +198,7 @@ Test Results: All Tests
- 2 tests
+ 3 tests
|
@@ -238,33 +238,33 @@
Key Statistics
Number of Scenarios
-
2
+
3
Total Number of Test Cases
- 2
+ 3
Tests Started
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 28ms
+ 52ms
@@ -277,21 +277,21 @@ Key Statistics
Slowest
Test
- 3ms
+ 5ms
Average
Execution Time
- 3ms
+ 4ms
Total
Execution Time
- 6ms
+ 12ms
@@ -353,8 +353,8 @@
Features
Sddevelopment
-
2
-
2
+
3
+
3
100%
@@ -364,7 +364,7 @@ Features
@@ -376,8 +376,8 @@
Features
Validations test
-
2
-
2
+
3
+
3
100%
@@ -387,7 +387,7 @@ Features
@@ -422,6 +422,18 @@
Automated Tests
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
ValidationsTest
@@ -429,8 +441,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -441,7 +453,7 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
@@ -508,7 +520,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 3}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -604,7 +616,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [2,0,0,0,0,0,0,0],
+ data: [3,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -687,7 +699,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['2','0','0','0','0','0','0','0'],
+ data: ['3','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -768,7 +780,7 @@ Manual Tests
datasets: [
{
label: ['Passing Tests'],
- data: [2,2],
+ data: [3,3],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
diff --git a/docs/serenity/4aab2bc4c6ac65428a7bfd419b9eeafb533eeb2867b839c39376bb2ff1a74b65.html b/docs/serenity/4aab2bc4c6ac65428a7bfd419b9eeafb533eeb2867b839c39376bb2ff1a74b65.html
new file mode 100644
index 0000000..e09381c
--- /dev/null
+++ b/docs/serenity/4aab2bc4c6ac65428a7bfd419b9eeafb533eeb2867b839c39376bb2ff1a74b65.html
@@ -0,0 +1,893 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Home
+ > Story
+ > Be/Sddevelopment/Validation/Validatordogfoodtest > Duration Under 1 Second
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Story: Be/Sddevelopment/Validation/Validatordogfoodtest > Duration Under 1 Second
+
+
+
+
+
+
+ 2 tests
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing tests ,
+ which may also contain results other than tests .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 2
+
+
+
+ Total Number of Test Cases
+
+ 2
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 63ms
+
+
+
+ Fastest Test
+
+ 4ms
+
+
+
+ Slowest
+ Test
+
+ 10ms
+
+
+
+ Average
+ Execution Time
+
+ 7ms
+
+
+
+ Total
+ Execution Time
+
+ 14ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 2
+ 2
+ 100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validator usage
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.html b/docs/serenity/4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.html
new file mode 100644
index 0000000..2ce5845
--- /dev/null
+++ b/docs/serenity/4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.html
@@ -0,0 +1,297 @@
+
+
+
+
+ Given two identical rules they are considered equal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.json b/docs/serenity/4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.json
new file mode 100644
index 0000000..8ccc46d
--- /dev/null
+++ b/docs/serenity/4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.json
@@ -0,0 +1 @@
+{"name":"givenTwoIdenticalRules_theyAreConsideredEqual()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]/[method:givenTwoIdenticalRules_theyAreConsideredEqual()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]","testCaseName":"be.sddevelopment.validation.ValidationRuleTest","methodName":"givenTwoIdenticalRules_theyAreConsideredEqual","userStory":{"id":"be.sddevelopment.validation.ValidationRuleTest","storyName":"ValidationRuleTest","displayName":"ValidationRuleTest","storyClassName":"be.sddevelopment.validation.ValidationRuleTest","path":"be.sddevelopment.validation.ValidationRuleTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationRuleTest","description":"ValidationRuleTest"}],"narrative":"","type":"feature"},"title":"Given two identical rules they are considered equal","tags":[{"name":"be/sddevelopment/validation/ValidationRuleTest","type":"feature","displayName":"ValidationRuleTest"},{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:43.160033161Z[Etc/UTC]","duration":0,"projectKey":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.html b/docs/serenity/4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.html
new file mode 100644
index 0000000..0118c7a
--- /dev/null
+++ b/docs/serenity/4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.html
@@ -0,0 +1,297 @@
+
+
+
+
+ Guard has no effect given valid source data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.json b/docs/serenity/4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.json
new file mode 100644
index 0000000..83b1e20
--- /dev/null
+++ b/docs/serenity/4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.json
@@ -0,0 +1 @@
+{"name":"guard_hasNoEffect_givenValidSourceData()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]/[method:guard_hasNoEffect_givenValidSourceData()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]","testCaseName":"be.sddevelopment.validation.EvaluatedTest","methodName":"guard_hasNoEffect_givenValidSourceData","userStory":{"id":"be.sddevelopment.validation.EvaluatedTest","storyName":"EvaluatedTest","displayName":"EvaluatedTest","storyClassName":"be.sddevelopment.validation.EvaluatedTest","path":"be.sddevelopment.validation.EvaluatedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"EvaluatedTest","description":"EvaluatedTest"}],"narrative":"","type":"feature"},"title":"Guard has no effect given valid source data","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/EvaluatedTest","type":"feature","displayName":"EvaluatedTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.185886094Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/4ef986a70299b40c923de025c5b029c02120dba38406d59268b70c318d9820ed.html b/docs/serenity/4ef986a70299b40c923de025c5b029c02120dba38406d59268b70c318d9820ed.html
new file mode 100644
index 0000000..519398f
--- /dev/null
+++ b/docs/serenity/4ef986a70299b40c923de025c5b029c02120dba38406d59268b70c318d9820ed.html
@@ -0,0 +1,852 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Home
+ > Feature
+ > Be/Sddevelopment/Validation/Validatordogfoodtest/Evaluatedusages > Duration Under 1 Second
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Feature: Be/Sddevelopment/Validation/Validatordogfoodtest/Evaluatedusages > Duration Under 1 Second
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 10ms
+
+
+
+ Fastest Test
+
+ 10ms
+
+
+
+ Slowest
+ Test
+
+ 10ms
+
+
+
+ Average
+ Execution Time
+
+ 10ms
+
+
+
+ Total
+ Execution Time
+
+ 10ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/4efe47e573381580abd01618b5aa9b8193c72020dfc759cb4278c35ae60d40f6.html b/docs/serenity/4efe47e573381580abd01618b5aa9b8193c72020dfc759cb4278c35ae60d40f6.html
new file mode 100644
index 0000000..9c28350
--- /dev/null
+++ b/docs/serenity/4efe47e573381580abd01618b5aa9b8193c72020dfc759cb4278c35ae60d40f6.html
@@ -0,0 +1,888 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Home
+ > Feature
+ > Be/Sddevelopment/Validation/Evaluatedtest > Duration Under 1 Second
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Feature: Be/Sddevelopment/Validation/Evaluatedtest > Duration Under 1 Second
+
+
+
+
+
+
+ 4 tests
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing tests ,
+ which may also contain results other than tests .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 4
+
+
+
+ Total Number of Test Cases
+
+ 4
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 76ms
+
+
+
+ Fastest Test
+
+ 3ms
+
+
+
+ Slowest
+ Test
+
+ 5ms
+
+
+
+ Average
+ Execution Time
+
+ 3ms
+
+
+
+ Total
+ Execution Time
+
+ 14ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+ Evaluated test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html b/docs/serenity/4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html
new file mode 100644
index 0000000..310d6f2
--- /dev/null
+++ b/docs/serenity/4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html
@@ -0,0 +1,885 @@
+
+
+
+
+
+
+ Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Feature: Validator usage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
+
+
+
+
+
Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+ Total
+ Duration
+
+ 4ms
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+ Fastest Test
+
+ 4ms
+
+
+
+ Number of Manual Test Cases
+
+ 0
+
+ Slowest
+ Test
+
+ 4ms
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+ Average
+ Execution Time
+
+ 4ms
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+ Total
+ Execution Time
+
+ 4ms
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.html b/docs/serenity/560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.html
new file mode 100644
index 0000000..2396b33
--- /dev/null
+++ b/docs/serenity/560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.html
@@ -0,0 +1,297 @@
+
+
+
+
+ Given two identical rules their hashcodes are identical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.json b/docs/serenity/560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.json
new file mode 100644
index 0000000..be367b3
--- /dev/null
+++ b/docs/serenity/560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.json
@@ -0,0 +1 @@
+{"name":"givenTwoIdenticalRules_theirHashcodesAreIdentical()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]/[method:givenTwoIdenticalRules_theirHashcodesAreIdentical()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationRuleTest]","testCaseName":"be.sddevelopment.validation.ValidationRuleTest","methodName":"givenTwoIdenticalRules_theirHashcodesAreIdentical","userStory":{"id":"be.sddevelopment.validation.ValidationRuleTest","storyName":"ValidationRuleTest","displayName":"ValidationRuleTest","storyClassName":"be.sddevelopment.validation.ValidationRuleTest","path":"be.sddevelopment.validation.ValidationRuleTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationRuleTest","description":"ValidationRuleTest"}],"narrative":"","type":"feature"},"title":"Given two identical rules their hashcodes are identical","tags":[{"name":"be/sddevelopment/validation/ValidationRuleTest","type":"feature","displayName":"ValidationRuleTest"},{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:43.312647181Z[Etc/UTC]","duration":0,"projectKey":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/576946480b52ad056d6f5bddf874399c83582ecf90963cc074a14c70580e7d9f.html b/docs/serenity/576946480b52ad056d6f5bddf874399c83582ecf90963cc074a14c70580e7d9f.html
index 1906396..4340608 100644
--- a/docs/serenity/576946480b52ad056d6f5bddf874399c83582ecf90963cc074a14c70580e7d9f.html
+++ b/docs/serenity/576946480b52ad056d6f5bddf874399c83582ecf90963cc074a14c70580e7d9f.html
@@ -146,7 +146,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:46
@@ -190,8 +190,8 @@ Test Outcomes for Features
sddevelopment
- 5
- 5
+ 14
+ 14
100%
@@ -210,11 +210,11 @@ Test Outcomes for Features
Test Outcomes for Features
style="width: 0%; background-color:#cbddea;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -240,9 +240,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#cccdc7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -254,9 +254,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#e3c281;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -268,9 +268,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#f9c7a7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -282,9 +282,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#fd938e;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -296,9 +296,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#fab186;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -310,9 +310,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#fab0f3;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -328,7 +328,146 @@ Test Outcomes for Features
- ValidatorDogfoodTest
+ EvaluatedTest
+ 4
+ 4
+ 100%
+
+
+ 1
+
+
+
+
+
+
+
+
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ValidatorUsage
1
1
100%
@@ -467,9 +606,9 @@ Test Outcomes for Features
- CheckedTest
- 2
- 2
+ EvaluatedUsages
+ 1
+ 1
100%
@@ -488,11 +627,11 @@ Test Outcomes for Features
Test Outcomes for Features
style="width: 0%; background-color:#cbddea;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="1"
+ title=" - Total tests: 1
+ - Passing tests: 1 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -518,9 +657,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#cccdc7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="1"
+ title=" - Total tests: 1
+ - Passing tests: 1 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -532,9 +671,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#e3c281;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="1"
+ title=" - Total tests: 1
+ - Passing tests: 1 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -546,9 +685,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#f9c7a7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="1"
+ title=" - Total tests: 1
+ - Passing tests: 1 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -560,9 +699,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#fd938e;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="1"
+ title=" - Total tests: 1
+ - Passing tests: 1 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -574,9 +713,9 @@ Test Outcomes for Features
style="width: 0%; background-color:#fab186;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="1"
+ title=" - Total tests: 1
+ - Passing tests: 1 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -588,9 +727,287 @@ Test Outcomes for Features
style="width: 0%; background-color:#fab0f3;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="1"
+ title=" - Total tests: 1
+ - Passing tests: 1 (100%)
+ - Failing tests: 0 (0%)
+ - Tests with errors: 0 (0%)
+ - Compromised tests 0 (0%)
+ - Aborted tests: 0 (0%)
+ - Pending tests: 0 (0%)
+ - Ignored or skipped tests: 0 (0%)">
+
+
+
+
+
+
+
+
+
+ ValidationRuleTest
+ 4
+ 4
+ 100%
+
+
+ 1
+
+
+
+
+
+
+
+
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InvalidObjectExceptionTest
+ 1
+ 1
+ 100%
+
+
+ 1
+
+
+
+
+
+
+
+
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Test Outcomes for Features
ValidationsTest
- 2
- 2
+ 3
+ 3
100%
@@ -627,11 +1044,11 @@ Test Outcomes for Features
Test Outcomes for Features
style="width: 0%; background-color:#cbddea;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="3"
+ title=" - Total tests: 3
+ - Passing tests: 3 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -657,9 +1074,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#cccdc7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="3"
+ title=" - Total tests: 3
+ - Passing tests: 3 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -671,9 +1088,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#e3c281;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="3"
+ title=" - Total tests: 3
+ - Passing tests: 3 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -685,9 +1102,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#f9c7a7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="3"
+ title=" - Total tests: 3
+ - Passing tests: 3 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -699,9 +1116,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#fd938e;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="3"
+ title=" - Total tests: 3
+ - Passing tests: 3 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -713,9 +1130,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#fab186;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="3"
+ title=" - Total tests: 3
+ - Passing tests: 3 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -727,9 +1144,9 @@
Test Outcomes for Features
style="width: 0%; background-color:#fab0f3;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="2"
- title=" - Total tests: 2
- - Passing tests: 2 (100%)
+ aria-valuemax="3"
+ title=" - Total tests: 3
+ - Passing tests: 3 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
diff --git a/docs/serenity/58adb946478d1f31a9198140fdbb586fe1707a05ead641db7ea775c53b9ab384.html b/docs/serenity/58adb946478d1f31a9198140fdbb586fe1707a05ead641db7ea775c53b9ab384.html
new file mode 100644
index 0000000..9819559
--- /dev/null
+++ b/docs/serenity/58adb946478d1f31a9198140fdbb586fe1707a05ead641db7ea775c53b9ab384.html
@@ -0,0 +1,849 @@
+
+
+
+
+
+
+
+
+
Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 08:27:18
+
+
+
+
+
+
+
+
+
Test Results: All Tests
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 08:27:15
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 08:27:15
+
+
+
+ Total
+ Duration
+
+ 13ms
+
+
+
+ Fastest Test
+
+ 13ms
+
+
+
+ Slowest
+ Test
+
+ 13ms
+
+
+
+ Average
+ Execution Time
+
+ 13ms
+
+
+
+ Total
+ Execution Time
+
+ 13ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Checked usages
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/67373383ad29f4fc1896f6256e6db07bda261ef5df443fb2e53adb87e1926cb8.html b/docs/serenity/67373383ad29f4fc1896f6256e6db07bda261ef5df443fb2e53adb87e1926cb8.html
new file mode 100644
index 0000000..329f6aa
--- /dev/null
+++ b/docs/serenity/67373383ad29f4fc1896f6256e6db07bda261ef5df443fb2e53adb87e1926cb8.html
@@ -0,0 +1,849 @@
+
+
+
+
+
+
+
+
+
Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Test Results: All Tests
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Total
+ Duration
+
+ 18ms
+
+
+
+ Fastest Test
+
+ 18ms
+
+
+
+ Slowest
+ Test
+
+ 18ms
+
+
+
+ Average
+ Execution Time
+
+ 18ms
+
+
+
+ Total
+ Execution Time
+
+ 18ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/698f8602eacd14d6b7c4ba6c0283d67c415e18ef25ae6f3e89d519b6bb850c77.html b/docs/serenity/698f8602eacd14d6b7c4ba6c0283d67c415e18ef25ae6f3e89d519b6bb850c77.html
new file mode 100644
index 0000000..2d44cf5
--- /dev/null
+++ b/docs/serenity/698f8602eacd14d6b7c4ba6c0283d67c415e18ef25ae6f3e89d519b6bb850c77.html
@@ -0,0 +1,852 @@
+
+
+
+
+
+
+
+
+
Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Home
+ > Feature
+ > Be/Sddevelopment/Validation/Validatordogfoodtest/Checkedusages > Duration Under 1 Second
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 08:27:18
+
+
+
+
+
+
+
+
+
Feature: Be/Sddevelopment/Validation/Validatordogfoodtest/Checkedusages > Duration Under 1 Second
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 08:27:15
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 08:27:15
+
+
+
+ Total
+ Duration
+
+ 13ms
+
+
+
+ Fastest Test
+
+ 13ms
+
+
+
+ Slowest
+ Test
+
+ 13ms
+
+
+
+ Average
+ Execution Time
+
+ 13ms
+
+
+
+ Total
+ Execution Time
+
+ 13ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Checked usages
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/6ae6c6b045da05370ed82bae6131d470a5b527764fc5eaf1892cb80bd2670661.html b/docs/serenity/6ae6c6b045da05370ed82bae6131d470a5b527764fc5eaf1892cb80bd2670661.html
index 151b5c0..0f13b1d 100644
--- a/docs/serenity/6ae6c6b045da05370ed82bae6131d470a5b527764fc5eaf1892cb80bd2670661.html
+++ b/docs/serenity/6ae6c6b045da05370ed82bae6131d470a5b527764fc5eaf1892cb80bd2670661.html
@@ -182,7 +182,7 @@
Stories
-
Report generated 23-12-2023 11:09:38
+
Report generated 26-12-2023 09:48:47
@@ -198,7 +198,7 @@
Test Results: All Tests
- 5 tests
+ 14 tests
|
@@ -238,60 +238,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -353,8 +353,8 @@ Features
Sddevelopment
- 5
- 5
+ 14
+ 14
100%
@@ -364,7 +364,7 @@ Features
@@ -374,10 +374,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -387,7 +387,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -399,8 +445,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -410,7 +479,7 @@ Features
@@ -420,7 +489,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -470,25 +539,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -499,8 +664,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -511,20 +676,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -590,7 +767,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -686,7 +863,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -769,7 +946,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -837,9 +1014,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -847,57 +1034,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html b/docs/serenity/6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html
index d3ebbf0..3deeafa 100644
--- a/docs/serenity/6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html
+++ b/docs/serenity/6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html
@@ -4,7 +4,7 @@
- Features
+ Stories
@@ -154,7 +154,7 @@
$("#requirements-tabs").tabs();
$("#test-tabs").tabs();
- var requirementsTree = [{"text":"Validator dogfood test","type":"feature","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}];
+ var requirementsTree = [{"text":"Validator dogfood test","type":"story","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[{"text":"Evaluated usages","type":"feature","href":"8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]},{"text":"Validator usage","type":"feature","href":"4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 features\u003c/span\u003e "]}];
$('#tree').treeview({
data: requirementsTree,
@@ -227,14 +227,14 @@
Capabilities
-
- Features
-
- Stories
+ Features
+
+
+ Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 09:48
@@ -251,7 +251,7 @@
- Feature: Validator dogfood test
+ Story: Validator dogfood test
@@ -294,82 +294,80 @@ Feature Coverage By Scenario
-
-
-
-
Scenarios
-
-
-
-
-
-
-
+
Requirements Overview
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 2
+
+
+
+ Total Number of Test Cases
+
+ 2
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 63ms
+
+
+
+ Fastest Test
+
+ 4ms
+
+
+
+ Slowest
+ Test
+
+ 10ms
+
+
+
+ Average
+ Execution Time
+
+ 7ms
+
+
+
+ Total
+ Execution Time
+
+ 14ms
+
+
+
+
+
+
@@ -415,22 +413,22 @@ Key Statistics
Number of Scenarios
- 1
+ 2
Total
Duration
- 109ms
+ 63ms
Total Number of Test Cases
- 1
+ 2
Fastest Test
- 109ms
+ 4ms
@@ -441,30 +439,30 @@ Key Statistics
Slowest
Test
- 109ms
+ 10ms
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:44
Average
Execution Time
- 109ms
+ 7ms
Tests
Finished
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:44
Total
Execution Time
- 109ms
+ 14ms
@@ -488,16 +486,31 @@
Automated Tests
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -542,21 +555,21 @@ Manual Tests
// Options define for display value on top of bars
const outcomeDetailsReports = [
- { title: 'Passing Test Cases', link: "411b74f398ca839c53c1ea6fd95689b230c575ce05c365ecf2a939e4f111fe59.html" },
- { title: 'Pending Test Cases', link: "0e9af3ab10a8f02b6adb78f0325a7668a66f6ce8a57e9ef8468bc51f63ec6a12.html" },
- { title: 'Ignored Test Cases', link: "7456d11424cae951ea5f6f0625a5b6b92559504ed7373a900006f11aa3b72d2e.html" },
- { title: 'Skipped Test Cases', link: "dae15892f3554896325a838277b8de7792e83c8314f2a588ad676235af15c086.html" },
- { title: 'Aborted Test Cases', link: "f5ddc6fed7215930c39806c18a1c6bbf80bff4982abc31dd982504403c40d57e.html"},
- { title: 'Failed Test Cases', link: "961f6cad0f45cc39165f30949f02bf0b5cbccb47efbb6493252d8a221bf4e1cb.html" },
- { title: 'Broken Test Cases', link: "d28ed8b8e467c3f2ff9cd2971ffc7fb21c27b0751ad83196ad404b70fa1a3ac3.html" },
- { title: 'Compromised Test Cases', link: "0fc49fa290d762b4f7be9391c599a6f45fc66a7be516b2c79b1fc0b7cc0b0240.html" },
+ { title: 'Passing Test Cases', link: "07afe5692088619215fc9bd4ed18aa880b945b17ad44106ba1662d164a45e01c.html" },
+ { title: 'Pending Test Cases', link: "bee9585b5f5f5be85be5feec107d4f05b91b49e73bd7fd6ac73b1811b58b5551.html" },
+ { title: 'Ignored Test Cases', link: "3b8051ec75cf4fc0f40354b1cd3e9dc72fcb66879a81809a783588a61f5cbb36.html" },
+ { title: 'Skipped Test Cases', link: "02930c4d6295bc131119beb39b28e8d90ad5097e51ac48a18fc5d8e73da9d2bd.html" },
+ { title: 'Aborted Test Cases', link: "451b6105f142708cb54bf63706e1df4b3f244ff8b974947228faa72c964d78ac.html"},
+ { title: 'Failed Test Cases', link: "cc43760ece093acc943b38e227551db862a2cb6a2fdf38bf410b38938fcb9af9.html" },
+ { title: 'Broken Test Cases', link: "4e62b0a34ceaab5e0352b3697f54e98a7c547939588720738eb0cdcb32665ea8.html" },
+ { title: 'Compromised Test Cases', link: "3396be9acc3eff921d526479aa6683acfa1bf81860f5e3b7880bfb7205ba61cf.html" },
]
const outcomeData = {
labels: ['Passing Test Cases', 'Pending Test Cases', 'Ignored Test Cases', 'Skipped Test Cases', 'Aborted Test Cases', 'Failed Test Cases', 'Broken Test Cases', 'Compromised Test Cases','Undefined Test Cases'],
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 1}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -636,14 +649,14 @@ Manual Tests
// Options define for display value on top of bars
const requirementsOutcomeDetailsReports = [
- { title: 'Passing Test Cases', link: "411b74f398ca839c53c1ea6fd95689b230c575ce05c365ecf2a939e4f111fe59.html" },
- { title: 'Pending Test Cases', link: "0e9af3ab10a8f02b6adb78f0325a7668a66f6ce8a57e9ef8468bc51f63ec6a12.html" },
- { title: 'Ignored Test Cases', link: "7456d11424cae951ea5f6f0625a5b6b92559504ed7373a900006f11aa3b72d2e.html" },
- { title: 'Skipped Test Cases', link: "dae15892f3554896325a838277b8de7792e83c8314f2a588ad676235af15c086.html" },
- { title: 'Aborted Test Cases', link: "f5ddc6fed7215930c39806c18a1c6bbf80bff4982abc31dd982504403c40d57e.html"},
- { title: 'Failed Test Cases', link: "961f6cad0f45cc39165f30949f02bf0b5cbccb47efbb6493252d8a221bf4e1cb.html" },
- { title: 'Broken Test Cases', link: "d28ed8b8e467c3f2ff9cd2971ffc7fb21c27b0751ad83196ad404b70fa1a3ac3.html" },
- { title: 'Compromised Test Cases', link: "0fc49fa290d762b4f7be9391c599a6f45fc66a7be516b2c79b1fc0b7cc0b0240.html" },
+ { title: 'Passing Test Cases', link: "07afe5692088619215fc9bd4ed18aa880b945b17ad44106ba1662d164a45e01c.html" },
+ { title: 'Pending Test Cases', link: "bee9585b5f5f5be85be5feec107d4f05b91b49e73bd7fd6ac73b1811b58b5551.html" },
+ { title: 'Ignored Test Cases', link: "3b8051ec75cf4fc0f40354b1cd3e9dc72fcb66879a81809a783588a61f5cbb36.html" },
+ { title: 'Skipped Test Cases', link: "02930c4d6295bc131119beb39b28e8d90ad5097e51ac48a18fc5d8e73da9d2bd.html" },
+ { title: 'Aborted Test Cases', link: "451b6105f142708cb54bf63706e1df4b3f244ff8b974947228faa72c964d78ac.html"},
+ { title: 'Failed Test Cases', link: "cc43760ece093acc943b38e227551db862a2cb6a2fdf38bf410b38938fcb9af9.html" },
+ { title: 'Broken Test Cases', link: "4e62b0a34ceaab5e0352b3697f54e98a7c547939588720738eb0cdcb32665ea8.html" },
+ { title: 'Compromised Test Cases', link: "3396be9acc3eff921d526479aa6683acfa1bf81860f5e3b7880bfb7205ba61cf.html" },
{ title: 'Undefined Test Cases', link: "" },
]
const requirementsOutcomeData = {
@@ -651,7 +664,7 @@ Manual Tests
datasets: [{
label: 'Feature Coverage',
fill: false,
- data: [{meta: 'Passing tests', value: 1}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -733,21 +746,21 @@ Manual Tests
// Options define for display value on top of bars
const severityDetailsReports = [
- { title: 'Passing Scenarios', link: "411b74f398ca839c53c1ea6fd95689b230c575ce05c365ecf2a939e4f111fe59.html" },
- { title: 'Pending Scenarios', link: "0e9af3ab10a8f02b6adb78f0325a7668a66f6ce8a57e9ef8468bc51f63ec6a12.html" },
- { title: 'Ignored Scenarios', link: "7456d11424cae951ea5f6f0625a5b6b92559504ed7373a900006f11aa3b72d2e.html" },
- { title: 'Skipped Scenarios', link: "dae15892f3554896325a838277b8de7792e83c8314f2a588ad676235af15c086.html" },
- { title: 'Aborted Scenarios', link: "f5ddc6fed7215930c39806c18a1c6bbf80bff4982abc31dd982504403c40d57e.html"},
- { title: 'Failed Scenarios', link: "961f6cad0f45cc39165f30949f02bf0b5cbccb47efbb6493252d8a221bf4e1cb.html" },
- { title: 'Broken Scenarios', link: "d28ed8b8e467c3f2ff9cd2971ffc7fb21c27b0751ad83196ad404b70fa1a3ac3.html" },
- { title: 'Compromised Scenarios', link: "0fc49fa290d762b4f7be9391c599a6f45fc66a7be516b2c79b1fc0b7cc0b0240.html" },
+ { title: 'Passing Scenarios', link: "07afe5692088619215fc9bd4ed18aa880b945b17ad44106ba1662d164a45e01c.html" },
+ { title: 'Pending Scenarios', link: "bee9585b5f5f5be85be5feec107d4f05b91b49e73bd7fd6ac73b1811b58b5551.html" },
+ { title: 'Ignored Scenarios', link: "3b8051ec75cf4fc0f40354b1cd3e9dc72fcb66879a81809a783588a61f5cbb36.html" },
+ { title: 'Skipped Scenarios', link: "02930c4d6295bc131119beb39b28e8d90ad5097e51ac48a18fc5d8e73da9d2bd.html" },
+ { title: 'Aborted Scenarios', link: "451b6105f142708cb54bf63706e1df4b3f244ff8b974947228faa72c964d78ac.html"},
+ { title: 'Failed Scenarios', link: "cc43760ece093acc943b38e227551db862a2cb6a2fdf38bf410b38938fcb9af9.html" },
+ { title: 'Broken Scenarios', link: "4e62b0a34ceaab5e0352b3697f54e98a7c547939588720738eb0cdcb32665ea8.html" },
+ { title: 'Compromised Scenarios', link: "3396be9acc3eff921d526479aa6683acfa1bf81860f5e3b7880bfb7205ba61cf.html" },
]
const severityData = {
labels: ['Passing', 'Pending', 'Ignored', 'Skipped', 'Aborted', 'Failed', 'Broken', 'Compromised'],
datasets: [
{
label: 'Automated',
- data: [1,0,0,0,0,0,0,0],
+ data: [2,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -811,14 +824,14 @@ Manual Tests
// Options define for display value on top of bars
const durationDetailsReports = [
- {title: "Under 1 second", link: "073e353aa758d1b4871a402cebd4b9d797c8e7ee437d2fb48a8db238bd6528d2.html"},
- {title: "1 to 10 seconds", link: "40702be917bba7c84f5c723b8152b0618d88c5416d0f16a3dc1acce5f1c6a4e9.html"},
- {title: "10 to 30 seconds", link: "f824ab657e1f7f4accc0676618c99803321d101a1fe4b3fc040e8d5233cf02b9.html"},
- {title: "30 to 60 seconds", link: "70fd63c1733227528970bfb30e3132638110d365d32bebd438044746a702eaca.html"},
- {title: "1 to 2 minutes", link: "a0eea7efb856845a8d5809bb7f712a0ac49db32e574632c99e37c78190faba68.html"},
- {title: "2 to 5 minutes", link: "b942602d27f143941af76db076bc16786b62540bb5007f8a349b28321bd71843.html"},
- {title: "5 to 10 minutes", link: "57c833bd159b3e5e3c993c65f1df9b435477f919f99249c8da6f3d429444991c.html"},
- {title: "10 minutes or over", link: "c4979d490b9dee7d07582484b1d55f5070a1fe1ea3a8bd8d943a4f281e1825bd.html"},
+ {title: "Under 1 second", link: "4aab2bc4c6ac65428a7bfd419b9eeafb533eeb2867b839c39376bb2ff1a74b65.html"},
+ {title: "1 to 10 seconds", link: "984e6e431cc5d1cebf0d7bb8c8a5811a2c9d3b64072d3423c646035bed5dc6ab.html"},
+ {title: "10 to 30 seconds", link: "16ce355aa130dce673767e2000bbde0d22c96cc456a42d9b11c046122205a30b.html"},
+ {title: "30 to 60 seconds", link: "9ea171989864b0699512d473feef7f3edddbdfe7ec0f917c3deb701dbfec8066.html"},
+ {title: "1 to 2 minutes", link: "0d24f6a82de72b4f1d3115673d22fcc21103cf7cddb70c961964ce398e399e94.html"},
+ {title: "2 to 5 minutes", link: "7f5335529e16028bd0ec5c703cbf3196e1f473e20bfc6bb6df644ee3688fc7b5.html"},
+ {title: "5 to 10 minutes", link: "31385e2a639bcd0e9392dc72e385c0fb775a331b4f906c2d8cab586cc89ad67f.html"},
+ {title: "10 minutes or over", link: "5afe9b9a3a097deeccdb7dda4eb9740954d4d78d835097ec1c665e2163b1bf30.html"},
]
// The Severity bar chart
const durationChartCtx = document.getElementById('durationChart');
@@ -830,7 +843,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['1','0','0','0','0','0','0','0'],
+ data: ['2','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
diff --git a/docs/serenity/73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html b/docs/serenity/73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html
index 87bd337..1eff015 100644
--- a/docs/serenity/73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html
+++ b/docs/serenity/73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html
@@ -154,7 +154,7 @@
$("#requirements-tabs").tabs();
$("#test-tabs").tabs();
- var requirementsTree = [{"text":"Validation","type":"story","href":"73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html","nodes":[{"text":"Checked test","type":"feature","href":"1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validator dogfood test","type":"feature","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 features\u003c/span\u003e "]}];
+ var requirementsTree = [{"text":"Validation","type":"story","href":"73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html","nodes":[{"text":"Evaluated test","type":"feature","href":"37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e4 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e4 test cases\u003c/span\u003e"]},{"text":"Invalid object exception test","type":"feature","href":"798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]},{"text":"Validation rule test","type":"feature","href":"f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e4 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e4 test cases\u003c/span\u003e"]},{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e3 test cases\u003c/span\u003e"]},{"text":"Validator dogfood test","type":"story","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[{"text":"Evaluated usages","type":"feature","href":"8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]},{"text":"Validator usage","type":"feature","href":"4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e5 features\u003c/span\u003e "]}];
$('#tree').treeview({
data: requirementsTree,
@@ -233,7 +233,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 09:48
@@ -307,60 +307,60 @@ Key Statistics
Number of Scenarios
- 5
+ 14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -412,22 +412,22 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total
Duration
-
844ms
+
1s
Total Number of Test Cases
- 5
+ 14
Fastest Test
- 3ms
+ 0ms
@@ -438,30 +438,30 @@ Key Statistics
Slowest
Test
- 109ms
+ 18ms
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Average
Execution Time
- 29ms
+ 4ms
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Execution Time
- 146ms
+ 58ms
@@ -485,31 +485,151 @@
Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+
+ Guard throws a validation exception given invalid source data
+
+
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+
+ Given checked with data when applying rule its evaluation is remembered
+
+
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+
+ Invalid object exception must contain all errors given multiple errors
+
+
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Given two identical rules they are considered equal
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ A validation rule can be build and used in a fluent way
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Rules are chainable
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Given two identical rules their hashcodes are identical
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+
+ Utility classes should not be instantiatable
+
+
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -523,8 +643,8 @@ Automated Tests
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -538,23 +658,38 @@ Automated Tests
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
- Modular validators must cover basic usage given simple date based validation logic
+ Checked should allow for fluent usage when using it as a guard given invalid object
0
- 11:09:35
- 109ms
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
+
+
+ Modular validators must cover basic usage given simple date based validation logic
+
+
+
+ 0
+ 09:48:44
+ 004ms
SUCCESS
@@ -613,7 +748,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -708,7 +843,7 @@ Manual Tests
datasets: [{
label: 'Feature Coverage',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -804,7 +939,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -887,7 +1022,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
diff --git a/docs/serenity/77f67511a68d37a567fff20babbf37a06546ea5d6982897bb4ad548a7dc36a6a.html b/docs/serenity/77f67511a68d37a567fff20babbf37a06546ea5d6982897bb4ad548a7dc36a6a.html
index 32a8186..3aa18d8 100644
--- a/docs/serenity/77f67511a68d37a567fff20babbf37a06546ea5d6982897bb4ad548a7dc36a6a.html
+++ b/docs/serenity/77f67511a68d37a567fff20babbf37a06546ea5d6982897bb4ad548a7dc36a6a.html
@@ -185,7 +185,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -201,7 +201,7 @@ Story: Be/Sddevelopment/Validation > Duration Und
- 5 tests
+ 14 tests
|
@@ -241,60 +241,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -356,8 +356,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -367,7 +367,7 @@ Features
@@ -377,10 +377,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -390,7 +390,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -402,8 +448,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -413,7 +482,7 @@ Features
@@ -423,7 +492,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -473,25 +542,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -502,8 +667,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -514,20 +679,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -593,7 +770,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -689,7 +866,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -772,7 +949,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -840,9 +1017,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -850,57 +1037,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html b/docs/serenity/798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html
new file mode 100644
index 0000000..fa66e60
--- /dev/null
+++ b/docs/serenity/798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html
@@ -0,0 +1,884 @@
+
+
+
+
+
+
+ Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Feature: Invalid object exception test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
+
+
+
+
+
Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+ Total
+ Duration
+
+ 18ms
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+ Fastest Test
+
+ 18ms
+
+
+
+ Number of Manual Test Cases
+
+ 0
+
+ Slowest
+ Test
+
+ 18ms
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:43
+
+ Average
+ Execution Time
+
+ 18ms
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:43
+
+ Total
+ Execution Time
+
+ 18ms
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/7ca3aac86b4a3785e624e0f6a1b14d1c5eaea8bfc79afaab5491caf9e43beaf2.html b/docs/serenity/7ca3aac86b4a3785e624e0f6a1b14d1c5eaea8bfc79afaab5491caf9e43beaf2.html
index 315345c..52fef9b 100644
--- a/docs/serenity/7ca3aac86b4a3785e624e0f6a1b14d1c5eaea8bfc79afaab5491caf9e43beaf2.html
+++ b/docs/serenity/7ca3aac86b4a3785e624e0f6a1b14d1c5eaea8bfc79afaab5491caf9e43beaf2.html
@@ -185,7 +185,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -201,7 +201,7 @@ Duration: Under 1 Second > Duration Under 1 Secon
- 5 tests
+ 14 tests
|
@@ -241,60 +241,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -356,8 +356,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -367,7 +367,7 @@ Features
@@ -377,10 +377,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -390,7 +390,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -402,8 +448,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -413,7 +482,7 @@ Features
@@ -423,7 +492,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -473,25 +542,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -502,8 +667,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -514,20 +679,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -593,7 +770,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -689,7 +866,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -772,7 +949,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -840,9 +1017,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -850,57 +1037,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/7ea0a5e2d679b9deeda9910ae4a9bcd3a281e0d908303a9e16e486103e98880c.html b/docs/serenity/7ea0a5e2d679b9deeda9910ae4a9bcd3a281e0d908303a9e16e486103e98880c.html
index 8379617..0d6dbf2 100644
--- a/docs/serenity/7ea0a5e2d679b9deeda9910ae4a9bcd3a281e0d908303a9e16e486103e98880c.html
+++ b/docs/serenity/7ea0a5e2d679b9deeda9910ae4a9bcd3a281e0d908303a9e16e486103e98880c.html
@@ -146,7 +146,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:46
@@ -190,8 +190,8 @@ Test Outcomes for Capabilities
be
- 5
- 5
+ 14
+ 14
100%
@@ -210,11 +210,11 @@ Test Outcomes for Capabilities
Test Outcomes for Capabilities
style="width: 0%; background-color:#cbddea;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -240,9 +240,9 @@
Test Outcomes for Capabilities
style="width: 0%; background-color:#cccdc7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -254,9 +254,9 @@
Test Outcomes for Capabilities
style="width: 0%; background-color:#e3c281;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -268,9 +268,9 @@
Test Outcomes for Capabilities
style="width: 0%; background-color:#f9c7a7;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -282,9 +282,9 @@
Test Outcomes for Capabilities
style="width: 0%; background-color:#fd938e;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -296,9 +296,9 @@
Test Outcomes for Capabilities
style="width: 0%; background-color:#fab186;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
@@ -310,9 +310,9 @@
Test Outcomes for Capabilities
style="width: 0%; background-color:#fab0f3;"
aria-valuenow="0"
aria-valuemin="0"
- aria-valuemax="5"
- title=" - Total tests: 5
- - Passing tests: 5 (100%)
+ aria-valuemax="14"
+ title=" - Total tests: 14
+ - Passing tests: 14 (100%)
- Failing tests: 0 (0%)
- Tests with errors: 0 (0%)
- Compromised tests 0 (0%)
diff --git a/docs/serenity/8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html b/docs/serenity/8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html
new file mode 100644
index 0000000..67b50ae
--- /dev/null
+++ b/docs/serenity/8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html
@@ -0,0 +1,885 @@
+
+
+
+
+
+
+
Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Feature: Evaluated usages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
+
+
+
+
+
Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+ Total
+ Duration
+
+ 10ms
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+ Fastest Test
+
+ 10ms
+
+
+
+ Number of Manual Test Cases
+
+ 0
+
+ Slowest
+ Test
+
+ 10ms
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+ Average
+ Execution Time
+
+ 10ms
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+ Total
+ Execution Time
+
+ 10ms
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.html b/docs/serenity/9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.html
new file mode 100644
index 0000000..610d1c2
--- /dev/null
+++ b/docs/serenity/9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.html
@@ -0,0 +1,297 @@
+
+
+
+
+
Given checked with data and invalid data when applying rule it is evaluated as invalid
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0.01s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.json b/docs/serenity/9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.json
new file mode 100644
index 0000000..2e1abdc
--- /dev/null
+++ b/docs/serenity/9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.json
@@ -0,0 +1 @@
+{"name":"givenCheckedWithData_andInvalidData_whenApplyingRule_itIsEvaluatedAsInvalid()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]/[method:givenCheckedWithData_andInvalidData_whenApplyingRule_itIsEvaluatedAsInvalid()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]","testCaseName":"be.sddevelopment.validation.EvaluatedTest","methodName":"givenCheckedWithData_andInvalidData_whenApplyingRule_itIsEvaluatedAsInvalid","userStory":{"id":"be.sddevelopment.validation.EvaluatedTest","storyName":"EvaluatedTest","displayName":"EvaluatedTest","storyClassName":"be.sddevelopment.validation.EvaluatedTest","path":"be.sddevelopment.validation.EvaluatedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"EvaluatedTest","description":"EvaluatedTest"}],"narrative":"","type":"feature"},"title":"Given checked with data and invalid data when applying rule it is evaluated as invalid","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/EvaluatedTest","type":"feature","displayName":"EvaluatedTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.210749531Z[Etc/UTC]","duration":5,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/9a1dd403c2291505833ff3420bfdff3c80eefc24a4f3d943316a023fa621f2e5.html b/docs/serenity/9a1dd403c2291505833ff3420bfdff3c80eefc24a4f3d943316a023fa621f2e5.html
new file mode 100644
index 0000000..0eb1bb0
--- /dev/null
+++ b/docs/serenity/9a1dd403c2291505833ff3420bfdff3c80eefc24a4f3d943316a023fa621f2e5.html
@@ -0,0 +1,888 @@
+
+
+
+
+
+
+
+
+
Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Home
+ > Feature
+ > Be/Sddevelopment/Validation/Validationruletest > Duration Under 1 Second
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Feature: Be/Sddevelopment/Validation/Validationruletest > Duration Under 1 Second
+
+
+
+
+
+
+ 4 tests
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing tests ,
+ which may also contain results other than tests .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 4
+
+
+
+ Total Number of Test Cases
+
+ 4
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Total
+ Duration
+
+ 152ms
+
+
+
+ Fastest Test
+
+ 0ms
+
+
+
+ Slowest
+ Test
+
+ 0ms
+
+
+
+ Average
+ Execution Time
+
+ 0ms
+
+
+
+ Total
+ Execution Time
+
+ 0ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.html b/docs/serenity/9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.html
new file mode 100644
index 0000000..baa96e3
--- /dev/null
+++ b/docs/serenity/9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.html
@@ -0,0 +1,297 @@
+
+
+
+
+
Guard throws a validation exception given invalid source data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 08:27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.json b/docs/serenity/9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.json
new file mode 100644
index 0000000..779e8c9
--- /dev/null
+++ b/docs/serenity/9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.json
@@ -0,0 +1 @@
+{"name":"guard_throwsAValidationException_givenInvalidSourceData()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]/[method:guard_throwsAValidationException_givenInvalidSourceData()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]","testCaseName":"be.sddevelopment.validation.CheckedTest","methodName":"guard_throwsAValidationException_givenInvalidSourceData","userStory":{"id":"be.sddevelopment.validation.CheckedTest","storyName":"CheckedTest","displayName":"CheckedTest","storyClassName":"be.sddevelopment.validation.CheckedTest","path":"be.sddevelopment.validation.CheckedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"CheckedTest","description":"CheckedTest"}],"narrative":"","type":"feature"},"title":"Guard throws a validation exception given invalid source data","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be/sddevelopment/validation/CheckedTest","type":"feature","displayName":"Checked test"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T08:27:16.183206876Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.html b/docs/serenity/9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.html
new file mode 100644
index 0000000..e4e4d62
--- /dev/null
+++ b/docs/serenity/9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.html
@@ -0,0 +1,297 @@
+
+
+
+
+
Guard has no effect given valid source data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 08:27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.json b/docs/serenity/9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.json
new file mode 100644
index 0000000..c6c2a8c
--- /dev/null
+++ b/docs/serenity/9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.json
@@ -0,0 +1 @@
+{"name":"guard_hasNoEffect_givenValidSourceData()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]/[method:guard_hasNoEffect_givenValidSourceData()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.CheckedTest]","testCaseName":"be.sddevelopment.validation.CheckedTest","methodName":"guard_hasNoEffect_givenValidSourceData","userStory":{"id":"be.sddevelopment.validation.CheckedTest","storyName":"CheckedTest","displayName":"CheckedTest","storyClassName":"be.sddevelopment.validation.CheckedTest","path":"be.sddevelopment.validation.CheckedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"CheckedTest","description":"CheckedTest"}],"narrative":"","type":"feature"},"title":"Guard has no effect given valid source data","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be/sddevelopment/validation/CheckedTest","type":"feature","displayName":"Checked test"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T08:27:16.121446178Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/9bdf4ae53274b7b8dea3c16da36c3df935945a9ac1d77c00939f70afcf31aaec.html b/docs/serenity/9bdf4ae53274b7b8dea3c16da36c3df935945a9ac1d77c00939f70afcf31aaec.html
index 1f9178d..f2b70d4 100644
--- a/docs/serenity/9bdf4ae53274b7b8dea3c16da36c3df935945a9ac1d77c00939f70afcf31aaec.html
+++ b/docs/serenity/9bdf4ae53274b7b8dea3c16da36c3df935945a9ac1d77c00939f70afcf31aaec.html
@@ -185,7 +185,7 @@
Stories
-
Report generated 23-12-2023 11:09:38
+
Report generated 26-12-2023 09:48:47
@@ -201,7 +201,7 @@ Feature: Be/Sddevelopment > Duration Under 1 Seco
- 5 tests
+ 14 tests
|
@@ -241,60 +241,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -356,8 +356,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -367,7 +367,7 @@ Features
@@ -377,10 +377,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -390,7 +390,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -402,8 +448,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -413,7 +482,7 @@ Features
@@ -423,7 +492,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -473,25 +542,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -502,8 +667,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -514,20 +679,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -593,7 +770,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -689,7 +866,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -772,7 +949,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -840,9 +1017,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -850,57 +1037,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/9d0c4ecd36abf5f4daa8441697936c79e900099abd955bb2187d83dbb0b02b04.html b/docs/serenity/9d0c4ecd36abf5f4daa8441697936c79e900099abd955bb2187d83dbb0b02b04.html
index b8a379b..88d35c3 100644
--- a/docs/serenity/9d0c4ecd36abf5f4daa8441697936c79e900099abd955bb2187d83dbb0b02b04.html
+++ b/docs/serenity/9d0c4ecd36abf5f4daa8441697936c79e900099abd955bb2187d83dbb0b02b04.html
@@ -185,7 +185,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -201,7 +201,7 @@ Feature: Be/Sddevelopment/Validation/Validationst
- 2 tests
+ 3 tests
|
@@ -241,33 +241,33 @@
Key Statistics
Number of Scenarios
-
2
+
3
Total Number of Test Cases
- 2
+ 3
Tests Started
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 28ms
+ 52ms
@@ -280,21 +280,21 @@ Key Statistics
Slowest
Test
- 3ms
+ 5ms
Average
Execution Time
- 3ms
+ 4ms
Total
Execution Time
- 6ms
+ 12ms
@@ -356,8 +356,8 @@
Features
Sddevelopment
-
2
-
2
+
3
+
3
100%
@@ -367,7 +367,7 @@ Features
@@ -379,8 +379,8 @@
Features
Validations test
-
2
-
2
+
3
+
3
100%
@@ -390,7 +390,7 @@ Features
@@ -425,6 +425,18 @@
Automated Tests
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
ValidationsTest
@@ -432,8 +444,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -444,7 +456,7 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
@@ -511,7 +523,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 3}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -607,7 +619,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [2,0,0,0,0,0,0,0],
+ data: [3,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -690,7 +702,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['2','0','0','0','0','0','0','0'],
+ data: ['3','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -771,7 +783,7 @@ Manual Tests
datasets: [
{
label: ['Passing Tests'],
- data: [2,2],
+ data: [3,3],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
diff --git a/docs/serenity/SERENITY-JUNIT-021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.xml b/docs/serenity/SERENITY-JUNIT-021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.xml
index a834683..b5c7acf 100644
--- a/docs/serenity/SERENITY-JUNIT-021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.xml
+++ b/docs/serenity/SERENITY-JUNIT-021cc3852a5b5cefae8305746120fdfa4b48f0591304dc1f6f09ad47636f78b1.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.xml b/docs/serenity/SERENITY-JUNIT-056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.xml
index 14b6636..344f478 100644
--- a/docs/serenity/SERENITY-JUNIT-056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.xml
+++ b/docs/serenity/SERENITY-JUNIT-056c41871bf5dcdbd510cc8c437ac3c1855dc42f04eb8c5fb4230b40ed5f0d5b.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-064772f4127179de97c510131c07bbb0219a53cd32f30ce784cac3f79820e696.xml b/docs/serenity/SERENITY-JUNIT-064772f4127179de97c510131c07bbb0219a53cd32f30ce784cac3f79820e696.xml
new file mode 100644
index 0000000..01def08
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-064772f4127179de97c510131c07bbb0219a53cd32f30ce784cac3f79820e696.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.xml b/docs/serenity/SERENITY-JUNIT-27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.xml
new file mode 100644
index 0000000..69421f1
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-27a31e183512417ff84a3e16fd9ea362bcc46ac131b50858986e7048275adef9.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.xml b/docs/serenity/SERENITY-JUNIT-290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.xml
new file mode 100644
index 0000000..dd9aef8
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-290abf27fd5b6aa26c3d4523b78e53db2390c06f4166d1977ba4c9781789612a.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.xml b/docs/serenity/SERENITY-JUNIT-291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.xml
new file mode 100644
index 0000000..e12dc1f
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-291e42590bd5658637729ec16ff28260c13b2206d3603db0cd2be2501c196d23.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.xml b/docs/serenity/SERENITY-JUNIT-453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.xml
new file mode 100644
index 0000000..9bc87e1
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-453f6d9eb361d398a414cdb3c74000a6866ad7292774884e0ccaeb1965f41eac.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.xml b/docs/serenity/SERENITY-JUNIT-4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.xml
new file mode 100644
index 0000000..dd9ff65
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-4aeb96517e05229cce4ac94fe9205d5909fd83ae892415ccde1541e03bf2c31b.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.xml b/docs/serenity/SERENITY-JUNIT-4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.xml
new file mode 100644
index 0000000..0bcb7ef
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-4c39f9c3509b4739761e75c8c8766f2d877debe857c73972c2e1c9184d331aa0.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.xml b/docs/serenity/SERENITY-JUNIT-560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.xml
new file mode 100644
index 0000000..ed6179c
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-560da3f97b01d57da44ae4e6b9271f115b66e4ce32b57c831a1f85ca9cd40d97.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.xml b/docs/serenity/SERENITY-JUNIT-9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.xml
new file mode 100644
index 0000000..75c8c22
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-9602131b9453a7e5882f4e9b5b9043403d85d73e74e5ac66d54ed5835d7c67c8.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.xml b/docs/serenity/SERENITY-JUNIT-9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.xml
new file mode 100644
index 0000000..87f0953
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-9a4cdb3531b2a1fffc584c204de8194234236d05dbe45d66a85874c4e5b3c5a6.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.xml b/docs/serenity/SERENITY-JUNIT-9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.xml
new file mode 100644
index 0000000..863f107
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-9bc5e7e550e8ca1df92fd3f8575736c0cf36a173d2983c46c9f44884a678bcd8.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.xml b/docs/serenity/SERENITY-JUNIT-acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.xml
index 56ea6ec..a20ee8a 100644
--- a/docs/serenity/SERENITY-JUNIT-acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.xml
+++ b/docs/serenity/SERENITY-JUNIT-acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.xml b/docs/serenity/SERENITY-JUNIT-bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.xml
new file mode 100644
index 0000000..7d03629
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.xml b/docs/serenity/SERENITY-JUNIT-c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.xml
new file mode 100644
index 0000000..bd4971a
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.xml b/docs/serenity/SERENITY-JUNIT-d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.xml
new file mode 100644
index 0000000..d474b92
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-dee9eb523de1c7c2787a25c1b28eea25577a3212414c91c5ab59e5ebe919b40d.xml b/docs/serenity/SERENITY-JUNIT-dee9eb523de1c7c2787a25c1b28eea25577a3212414c91c5ab59e5ebe919b40d.xml
index 40774f3..51df670 100644
--- a/docs/serenity/SERENITY-JUNIT-dee9eb523de1c7c2787a25c1b28eea25577a3212414c91c5ab59e5ebe919b40d.xml
+++ b/docs/serenity/SERENITY-JUNIT-dee9eb523de1c7c2787a25c1b28eea25577a3212414c91c5ab59e5ebe919b40d.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.xml b/docs/serenity/SERENITY-JUNIT-e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.xml
new file mode 100644
index 0000000..29cf4f1
--- /dev/null
+++ b/docs/serenity/SERENITY-JUNIT-e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/serenity/SERENITY-JUNIT-f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.xml b/docs/serenity/SERENITY-JUNIT-f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.xml
index 63715e7..25b56b9 100644
--- a/docs/serenity/SERENITY-JUNIT-f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.xml
+++ b/docs/serenity/SERENITY-JUNIT-f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/serenity/a331f95a3cdd6ada017662892283e1700e0c96c2b733b3cdf5b91ad35a3f83d4.html b/docs/serenity/a331f95a3cdd6ada017662892283e1700e0c96c2b733b3cdf5b91ad35a3f83d4.html
index 2ef074e..4b8bdce 100644
--- a/docs/serenity/a331f95a3cdd6ada017662892283e1700e0c96c2b733b3cdf5b91ad35a3f83d4.html
+++ b/docs/serenity/a331f95a3cdd6ada017662892283e1700e0c96c2b733b3cdf5b91ad35a3f83d4.html
@@ -154,7 +154,7 @@
$("#requirements-tabs").tabs();
$("#test-tabs").tabs();
- var requirementsTree = [{"text":"Be","type":"capability","href":"a331f95a3cdd6ada017662892283e1700e0c96c2b733b3cdf5b91ad35a3f83d4.html","nodes":[{"text":"Sddevelopment","type":"feature","href":"d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html","nodes":[{"text":"Validation","type":"story","href":"73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html","nodes":[{"text":"Checked test","type":"feature","href":"1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validator dogfood test","type":"feature","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 story\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 feature\u003c/span\u003e "]}];
+ var requirementsTree = [{"text":"Be","type":"capability","href":"a331f95a3cdd6ada017662892283e1700e0c96c2b733b3cdf5b91ad35a3f83d4.html","nodes":[{"text":"Sddevelopment","type":"feature","href":"d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html","nodes":[{"text":"Validation","type":"story","href":"73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html","nodes":[{"text":"Evaluated test","type":"feature","href":"37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e4 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e4 test cases\u003c/span\u003e"]},{"text":"Invalid object exception test","type":"feature","href":"798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]},{"text":"Validation rule test","type":"feature","href":"f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e4 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e4 test cases\u003c/span\u003e"]},{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e3 test cases\u003c/span\u003e"]},{"text":"Validator dogfood test","type":"story","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[{"text":"Evaluated usages","type":"feature","href":"8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]},{"text":"Validator usage","type":"feature","href":"4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e5 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 story\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 feature\u003c/span\u003e "]}];
$('#tree').treeview({
data: requirementsTree,
@@ -231,7 +231,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 09:48
@@ -305,60 +305,60 @@ Key Statistics
Number of Scenarios
- 5
+ 14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -410,22 +410,22 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total
Duration
-
844ms
+
1s
Total Number of Test Cases
- 5
+ 14
Fastest Test
- 3ms
+ 0ms
@@ -436,30 +436,30 @@ Key Statistics
Slowest
Test
- 109ms
+ 18ms
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Average
Execution Time
- 29ms
+ 4ms
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Execution Time
- 146ms
+ 58ms
@@ -483,31 +483,151 @@
Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+
+ Guard throws a validation exception given invalid source data
+
+
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+
+ Given checked with data when applying rule its evaluation is remembered
+
+
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+
+ Invalid object exception must contain all errors given multiple errors
+
+
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Given two identical rules they are considered equal
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ A validation rule can be build and used in a fluent way
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Rules are chainable
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Given two identical rules their hashcodes are identical
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+
+ Utility classes should not be instantiatable
+
+
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -521,8 +641,8 @@ Automated Tests
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -536,23 +656,38 @@ Automated Tests
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
- Modular validators must cover basic usage given simple date based validation logic
+ Checked should allow for fluent usage when using it as a guard given invalid object
0
- 11:09:35
- 109ms
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
+
+
+ Modular validators must cover basic usage given simple date based validation logic
+
+
+
+ 0
+ 09:48:44
+ 004ms
SUCCESS
@@ -611,7 +746,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -706,7 +841,7 @@ Manual Tests
datasets: [{
label: 'Feature Coverage',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -802,7 +937,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -885,7 +1020,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
diff --git a/docs/serenity/a86bb0bbc8127c5c5f059a03416cb1da5499c855771639caaf05bc218fe7e39f.html b/docs/serenity/a86bb0bbc8127c5c5f059a03416cb1da5499c855771639caaf05bc218fe7e39f.html
new file mode 100644
index 0000000..3a664da
--- /dev/null
+++ b/docs/serenity/a86bb0bbc8127c5c5f059a03416cb1da5499c855771639caaf05bc218fe7e39f.html
@@ -0,0 +1,849 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Test Results: All Tests
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 4ms
+
+
+
+ Fastest Test
+
+ 4ms
+
+
+
+ Slowest
+ Test
+
+ 4ms
+
+
+
+ Average
+ Execution Time
+
+ 4ms
+
+
+
+ Total
+ Execution Time
+
+ 4ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validator usage
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.html b/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.html
index 6b0f0ec..aee51d4 100644
--- a/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.html
+++ b/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.html
@@ -156,7 +156,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 09:48
diff --git a/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.json b/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.json
index c45c42f..f3e8b63 100644
--- a/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.json
+++ b/docs/serenity/acb1fb10bc3f48b27ecc673eb5174b082c39109cc6fd81713f338c686fe13ae2.json
@@ -1 +1 @@
-{"name":"givenAnObjectWithANullField_havingNonNullFieldPredicate_fails()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]/[method:givenAnObjectWithANullField_havingNonNullFieldPredicate_fails()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]","testCaseName":"be.sddevelopment.validation.ValidationsTest","methodName":"givenAnObjectWithANullField_havingNonNullFieldPredicate_fails","userStory":{"id":"be.sddevelopment.validation.ValidationsTest","storyName":"ValidationsTest","displayName":"ValidationsTest","storyClassName":"be.sddevelopment.validation.ValidationsTest","path":"be.sddevelopment.validation.ValidationsTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationsTest","description":"ValidationsTest"}],"narrative":"","type":"feature"},"title":"Given an object with a null field having non null field predicate fails","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/ValidationsTest","type":"feature","displayName":"ValidationsTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-23T11:09:36.164765337Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
+{"name":"givenAnObjectWithANullField_havingNonNullFieldPredicate_fails()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]/[method:givenAnObjectWithANullField_havingNonNullFieldPredicate_fails()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]","testCaseName":"be.sddevelopment.validation.ValidationsTest","methodName":"givenAnObjectWithANullField_havingNonNullFieldPredicate_fails","userStory":{"id":"be.sddevelopment.validation.ValidationsTest","storyName":"ValidationsTest","displayName":"ValidationsTest","storyClassName":"be.sddevelopment.validation.ValidationsTest","path":"be.sddevelopment.validation.ValidationsTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationsTest","description":"ValidationsTest"}],"narrative":"","type":"feature"},"title":"Given an object with a null field having non null field predicate fails","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/ValidationsTest","type":"feature","displayName":"ValidationsTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.338748316Z[Etc/UTC]","duration":4,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/b226143f21b3336dac6605770b488e35202c1b86f1bfc2eb5480aa9ab09861fb.html b/docs/serenity/b226143f21b3336dac6605770b488e35202c1b86f1bfc2eb5480aa9ab09861fb.html
new file mode 100644
index 0000000..350ff03
--- /dev/null
+++ b/docs/serenity/b226143f21b3336dac6605770b488e35202c1b86f1bfc2eb5480aa9ab09861fb.html
@@ -0,0 +1,885 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Test Results: All Tests
+
+
+
+
+
+
+ 4 tests
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing tests ,
+ which may also contain results other than tests .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 4
+
+
+
+ Total Number of Test Cases
+
+ 4
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 76ms
+
+
+
+ Fastest Test
+
+ 3ms
+
+
+
+ Slowest
+ Test
+
+ 5ms
+
+
+
+ Average
+ Execution Time
+
+ 3ms
+
+
+
+ Total
+ Execution Time
+
+ 14ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+ Evaluated test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/ba7011db75f37081cb2e8d23882424d8515860b02ad91bb5d0479c54a7228880.html b/docs/serenity/ba7011db75f37081cb2e8d23882424d8515860b02ad91bb5d0479c54a7228880.html
new file mode 100644
index 0000000..327cb1e
--- /dev/null
+++ b/docs/serenity/ba7011db75f37081cb2e8d23882424d8515860b02ad91bb5d0479c54a7228880.html
@@ -0,0 +1,849 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Test Results: All Tests
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 10ms
+
+
+
+ Fastest Test
+
+ 10ms
+
+
+
+ Slowest
+ Test
+
+ 10ms
+
+
+
+ Average
+ Execution Time
+
+ 10ms
+
+
+
+ Total
+ Execution Time
+
+ 10ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.html b/docs/serenity/bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.html
new file mode 100644
index 0000000..53b0ca7
--- /dev/null
+++ b/docs/serenity/bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.html
@@ -0,0 +1,297 @@
+
+
+
+
+ Given checked with data when applying rule its evaluation is remembered
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.json b/docs/serenity/bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.json
new file mode 100644
index 0000000..357ad7b
--- /dev/null
+++ b/docs/serenity/bb229351f8ffe7528ee1bb7991e71023e6f4e6fecad2422c7902d2bfd58c125f.json
@@ -0,0 +1 @@
+{"name":"givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]/[method:givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]","testCaseName":"be.sddevelopment.validation.EvaluatedTest","methodName":"givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered","userStory":{"id":"be.sddevelopment.validation.EvaluatedTest","storyName":"EvaluatedTest","displayName":"EvaluatedTest","storyClassName":"be.sddevelopment.validation.EvaluatedTest","path":"be.sddevelopment.validation.EvaluatedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"EvaluatedTest","description":"EvaluatedTest"}],"narrative":"","type":"feature"},"title":"Given checked with data when applying rule its evaluation is remembered","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/EvaluatedTest","type":"feature","displayName":"EvaluatedTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.259543040Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/build-info.html b/docs/serenity/build-info.html
index 3e1108f..79920c4 100644
--- a/docs/serenity/build-info.html
+++ b/docs/serenity/build-info.html
@@ -123,17 +123,8 @@
Requirements
-
- Capabilities
-
-
- Features
-
-
- Stories
-
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 12:37:57
diff --git a/docs/serenity/c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.html b/docs/serenity/c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.html
new file mode 100644
index 0000000..be2aeb0
--- /dev/null
+++ b/docs/serenity/c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.html
@@ -0,0 +1,299 @@
+
+
+
+
+ Modular validators must cover basic usage given simple date based validation logic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.json b/docs/serenity/c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.json
new file mode 100644
index 0000000..20f820a
--- /dev/null
+++ b/docs/serenity/c0fccf23bee6c493e37562f4920e328747578cb190e382c7ddc94e175cac137b.json
@@ -0,0 +1 @@
+{"name":"modularValidatorsMustCoverBasicUsage_givenSimpleDateBasedValidationLogic()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidatorDogfoodTest]/[nested-class:ValidatorUsage]/[method:modularValidatorsMustCoverBasicUsage_givenSimpleDateBasedValidationLogic()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidatorDogfoodTest]/[nested-class:ValidatorUsage]","testCaseName":"be.sddevelopment.validation.ValidatorDogfoodTest.ValidatorUsage","methodName":"modularValidatorsMustCoverBasicUsage_givenSimpleDateBasedValidationLogic","userStory":{"id":"be.sddevelopment.validation.ValidatorDogfoodTest.ValidatorUsage","storyName":"ValidatorUsage","displayName":"ValidatorUsage","storyClassName":"be.sddevelopment.validation.ValidatorDogfoodTest$ValidatorUsage","path":"be.sddevelopment.validation.ValidatorDogfoodTest.ValidatorUsage","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidatorDogfoodTest","description":"ValidatorDogfoodTest"},{"name":"ValidatorUsage","description":"ValidatorUsage"}],"narrative":"","type":"feature"},"title":"Modular validators must cover basic usage given simple date based validation logic","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/ValidatorDogfoodTest/ValidatorUsage","type":"feature","displayName":"ValidatorUsage"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be/sddevelopment/validation/ValidatorDogfoodTest","type":"story","displayName":"Validator dogfood test"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.102754345Z[Etc/UTC]","duration":4,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/c9f7c54c009eb95a2d47cf425414d24f9d77855afed321f3afb14dcef0078b52.html b/docs/serenity/c9f7c54c009eb95a2d47cf425414d24f9d77855afed321f3afb14dcef0078b52.html
new file mode 100644
index 0000000..bbfa8b2
--- /dev/null
+++ b/docs/serenity/c9f7c54c009eb95a2d47cf425414d24f9d77855afed321f3afb14dcef0078b52.html
@@ -0,0 +1,885 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Test Results: All Tests
+
+
+
+
+
+
+ 4 tests
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing tests ,
+ which may also contain results other than tests .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 4
+
+
+
+ Total Number of Test Cases
+
+ 4
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Total
+ Duration
+
+ 152ms
+
+
+
+ Fastest Test
+
+ 0ms
+
+
+
+ Slowest
+ Test
+
+ 0ms
+
+
+
+ Average
+ Execution Time
+
+ 0ms
+
+
+
+ Total
+ Execution Time
+
+ 0ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/cad2700a4d756e8f652e26f3c24345662038c3fb5150c8fe8fe1d6568734302b.html b/docs/serenity/cad2700a4d756e8f652e26f3c24345662038c3fb5150c8fe8fe1d6568734302b.html
new file mode 100644
index 0000000..ab73f05
--- /dev/null
+++ b/docs/serenity/cad2700a4d756e8f652e26f3c24345662038c3fb5150c8fe8fe1d6568734302b.html
@@ -0,0 +1,852 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Home
+ > Feature
+ > Be/Sddevelopment/Validation/Validatordogfoodtest/Validatorusage > Duration Under 1 Second
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Feature: Be/Sddevelopment/Validation/Validatordogfoodtest/Validatorusage > Duration Under 1 Second
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:44
+
+
+
+ Total
+ Duration
+
+ 4ms
+
+
+
+ Fastest Test
+
+ 4ms
+
+
+
+ Slowest
+ Test
+
+ 4ms
+
+
+
+ Average
+ Execution Time
+
+ 4ms
+
+
+
+ Total
+ Execution Time
+
+ 4ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+ Feature
+ Test Cases
+ Scenarios
+ % Pass
+ Result
+ Coverage
+
+
+
+
+
+ Sddevelopment
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validator usage
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/capabilities.html b/docs/serenity/capabilities.html
index 7c1b68e..d7c08c4 100644
--- a/docs/serenity/capabilities.html
+++ b/docs/serenity/capabilities.html
@@ -154,7 +154,7 @@
$("#requirements-tabs").tabs();
$("#test-tabs").tabs();
- var requirementsTree = [{"text":"Be","type":"capability","href":"a331f95a3cdd6ada017662892283e1700e0c96c2b733b3cdf5b91ad35a3f83d4.html","nodes":[{"text":"Sddevelopment","type":"feature","href":"d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html","nodes":[{"text":"Validation","type":"story","href":"73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html","nodes":[{"text":"Checked test","type":"feature","href":"1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validator dogfood test","type":"feature","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 story\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 feature\u003c/span\u003e "]}];
+ var requirementsTree = [];
$('#tree').treeview({
data: requirementsTree,
@@ -219,17 +219,8 @@
Requirements
-
- Capabilities
-
-
- Features
-
-
- Stories
-
- Report generated 23-12-2023 11:09
+ Report generated
@@ -263,9 +254,6 @@
Feature Coverage By Scenario
-
-
-
@@ -283,60 +271,60 @@
Key Statistics
Number of Scenarios
- 5
+ 0
Total Number of Test Cases
- 5
+ 0
Tests Started
- Dec 23, 2023 11:09:35
+
Tests
Finished
- Dec 23, 2023 11:09:36
+
Total
Duration
- 844ms
+ 0ms
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 0ms
Average
Execution Time
- 29ms
+ 0ms
Total
Execution Time
- 146ms
+ 0ms
@@ -354,9 +342,6 @@
Key Statistics
Feature Coverage By Scenario
-
-
-
Test Outcomes
@@ -388,22 +373,22 @@
Key Statistics
Number of Scenarios
-
5
+
0
Total
Duration
-
844ms
+
0ms
Total Number of Test Cases
- 5
+ 0
Fastest Test
- 3ms
+ 0ms
@@ -414,30 +399,30 @@ Key Statistics
Slowest
Test
- 109ms
+ 0ms
Tests Started
- Dec 23, 2023 11:09:35
+
Average
Execution Time
- 29ms
+ 0ms
Tests
Finished
- Dec 23, 2023 11:09:36
+
Total
Execution Time
- 146ms
+ 0ms
@@ -446,96 +431,7 @@
Key Statistics
Automated Tests
-
+ No automated tests were executed
@@ -589,7 +485,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 0}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -640,7 +536,7 @@ Manual Tests
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
- var text = "100%"
+ var text = " "
textX = 10 + Math.round((width - ctx.measureText(text).width) / 2);
textY = (height / 2) - 40;
@@ -684,7 +580,7 @@ Manual Tests
datasets: [{
label: 'Feature Coverage',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 0}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -735,7 +631,7 @@ Manual Tests
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
- var text = "100%"
+ var text = " "
textX = 10 + Math.round((width - ctx.measureText(text).width) / 2);
textY = (height / 2) - 40;
@@ -780,7 +676,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [0,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -863,7 +759,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['0','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
diff --git a/docs/serenity/d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html b/docs/serenity/d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html
index 98916b6..48e9bea 100644
--- a/docs/serenity/d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html
+++ b/docs/serenity/d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html
@@ -154,7 +154,7 @@
$("#requirements-tabs").tabs();
$("#test-tabs").tabs();
- var requirementsTree = [{"text":"Sddevelopment","type":"feature","href":"d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html","nodes":[{"text":"Validation","type":"story","href":"73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html","nodes":[{"text":"Checked test","type":"feature","href":"1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]},{"text":"Validator dogfood test","type":"feature","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 story\u003c/span\u003e "]}];
+ var requirementsTree = [{"text":"Sddevelopment","type":"feature","href":"d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html","nodes":[{"text":"Validation","type":"story","href":"73b26f5f31f50188c4ff873b87ab63a0da2dabea5e8b512f9ad1240faee315fe.html","nodes":[{"text":"Evaluated test","type":"feature","href":"37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e4 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e4 test cases\u003c/span\u003e"]},{"text":"Invalid object exception test","type":"feature","href":"798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]},{"text":"Validation rule test","type":"feature","href":"f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e4 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e4 test cases\u003c/span\u003e"]},{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e3 test cases\u003c/span\u003e"]},{"text":"Validator dogfood test","type":"story","href":"6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html","nodes":[{"text":"Evaluated usages","type":"feature","href":"8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]},{"text":"Validator usage","type":"feature","href":"4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 scenario\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e1 test case\u003c/span\u003e"]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e5 features\u003c/span\u003e "]}],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e1 story\u003c/span\u003e "]}];
$('#tree').treeview({
data: requirementsTree,
@@ -232,7 +232,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 09:48
@@ -306,60 +306,60 @@ Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -411,22 +411,22 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total
Duration
-
844ms
+
1s
Total Number of Test Cases
- 5
+ 14
Fastest Test
- 3ms
+ 0ms
@@ -437,30 +437,30 @@ Key Statistics
Slowest
Test
- 109ms
+ 18ms
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Average
Execution Time
- 29ms
+ 4ms
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Execution Time
- 146ms
+ 58ms
@@ -484,31 +484,151 @@
Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+
+ Guard throws a validation exception given invalid source data
+
+
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+
+ Given checked with data when applying rule its evaluation is remembered
+
+
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+
+ Invalid object exception must contain all errors given multiple errors
+
+
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Given two identical rules they are considered equal
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ A validation rule can be build and used in a fluent way
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Rules are chainable
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+
+ Given two identical rules their hashcodes are identical
+
+
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+
+ Utility classes should not be instantiatable
+
+
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -522,8 +642,8 @@ Automated Tests
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -537,23 +657,38 @@ Automated Tests
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
- Modular validators must cover basic usage given simple date based validation logic
+ Checked should allow for fluent usage when using it as a guard given invalid object
0
- 11:09:35
- 109ms
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
+
+
+ Modular validators must cover basic usage given simple date based validation logic
+
+
+
+ 0
+ 09:48:44
+ 004ms
SUCCESS
@@ -612,7 +747,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -707,7 +842,7 @@ Manual Tests
datasets: [{
label: 'Feature Coverage',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -803,7 +938,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -886,7 +1021,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
diff --git a/docs/serenity/d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.html b/docs/serenity/d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.html
new file mode 100644
index 0000000..cd577d4
--- /dev/null
+++ b/docs/serenity/d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.html
@@ -0,0 +1,299 @@
+
+
+
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0.01s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.json b/docs/serenity/d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.json
new file mode 100644
index 0000000..6942951
--- /dev/null
+++ b/docs/serenity/d3ca31bfe360ae6869214421aa13ad98447d532541ef687add5135ab05ff1764.json
@@ -0,0 +1 @@
+{"name":"checkedShouldAllowForFluentUsage_whenUsingItAsAGuard_givenInvalidObject()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidatorDogfoodTest]/[nested-class:EvaluatedUsages]/[method:checkedShouldAllowForFluentUsage_whenUsingItAsAGuard_givenInvalidObject()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidatorDogfoodTest]/[nested-class:EvaluatedUsages]","testCaseName":"be.sddevelopment.validation.ValidatorDogfoodTest.EvaluatedUsages","methodName":"checkedShouldAllowForFluentUsage_whenUsingItAsAGuard_givenInvalidObject","userStory":{"id":"be.sddevelopment.validation.ValidatorDogfoodTest.EvaluatedUsages","storyName":"EvaluatedUsages","displayName":"EvaluatedUsages","storyClassName":"be.sddevelopment.validation.ValidatorDogfoodTest$EvaluatedUsages","path":"be.sddevelopment.validation.ValidatorDogfoodTest.EvaluatedUsages","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidatorDogfoodTest","description":"ValidatorDogfoodTest"},{"name":"EvaluatedUsages","description":"EvaluatedUsages"}],"narrative":"","type":"feature"},"title":"Checked should allow for fluent usage when using it as a guard given invalid object","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/ValidatorDogfoodTest/EvaluatedUsages","type":"feature","displayName":"EvaluatedUsages"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be/sddevelopment/validation/ValidatorDogfoodTest","type":"story","displayName":"Validator dogfood test"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.043207472Z[Etc/UTC]","duration":10,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.html b/docs/serenity/e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.html
new file mode 100644
index 0000000..074cb37
--- /dev/null
+++ b/docs/serenity/e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.html
@@ -0,0 +1,297 @@
+
+
+
+
+ Guard throws a validation exception given invalid source data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Steps
+
+
+ Outcome
+
+
+
+
+
+
+
+
+ SUCCESS
+ 0s
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.json b/docs/serenity/e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.json
new file mode 100644
index 0000000..f525069
--- /dev/null
+++ b/docs/serenity/e9deb837a9eca502bacdc6eee28a9633938ef0b4321ed1a903ecff3e3fe17917.json
@@ -0,0 +1 @@
+{"name":"guard_throwsAValidationException_givenInvalidSourceData()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]/[method:guard_throwsAValidationException_givenInvalidSourceData()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.EvaluatedTest]","testCaseName":"be.sddevelopment.validation.EvaluatedTest","methodName":"guard_throwsAValidationException_givenInvalidSourceData","userStory":{"id":"be.sddevelopment.validation.EvaluatedTest","storyName":"EvaluatedTest","displayName":"EvaluatedTest","storyClassName":"be.sddevelopment.validation.EvaluatedTest","path":"be.sddevelopment.validation.EvaluatedTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"EvaluatedTest","description":"EvaluatedTest"}],"narrative":"","type":"feature"},"title":"Guard throws a validation exception given invalid source data","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/EvaluatedTest","type":"feature","displayName":"EvaluatedTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.237936889Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/eea501dc427d96d7f92e4d894de83352a6fbaebfc8ce034a219f6ee762df11ac.html b/docs/serenity/eea501dc427d96d7f92e4d894de83352a6fbaebfc8ce034a219f6ee762df11ac.html
index f55be4a..d54aa28 100644
--- a/docs/serenity/eea501dc427d96d7f92e4d894de83352a6fbaebfc8ce034a219f6ee762df11ac.html
+++ b/docs/serenity/eea501dc427d96d7f92e4d894de83352a6fbaebfc8ce034a219f6ee762df11ac.html
@@ -185,7 +185,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 09:48:47
@@ -201,7 +201,7 @@ Capability: Be > Duration Under 1 Second
- 5 tests
+ 14 tests
|
@@ -241,60 +241,60 @@
Key Statistics
Number of Scenarios
-
5
+
14
Total Number of Test Cases
- 5
+ 14
Tests Started
- Dec 23, 2023 11:09:35
+ Dec 26, 2023 09:48:43
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Duration
- 844ms
+ 1s
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 18ms
Average
Execution Time
- 29ms
+ 4ms
Total
Execution Time
- 146ms
+ 58ms
@@ -356,8 +356,8 @@
Features
Sddevelopment
-
5
-
5
+
14
+
14
100%
@@ -367,7 +367,7 @@ Features
@@ -377,10 +377,10 @@
Features
- Checked test
+ Evaluated test
- 2
- 2
+ 4
+ 4
100%
@@ -390,7 +390,53 @@ Features
+
+
+
+
+
+
+ Invalid object exception test
+
+ 1
+ 1
+ 100%
+
+
+
+
+
+
+
+
+
+ Validation rule test
+
+ 4
+ 4
+ 100%
+
+
+
+
+
+
@@ -402,8 +448,31 @@
Features
Validations test
-
2
-
2
+
3
+
3
+
100%
+
+
+
+
+
+
+
+
+
+ Evaluated usages
+
+ 1
+ 1
100%
@@ -413,7 +482,7 @@ Features
@@ -423,7 +492,7 @@
Features
- Validator dogfood test
+ Validator usage
1
1
@@ -473,25 +542,121 @@ Automated Tests
- CheckedTest
+ EvaluatedTest
- Given checked with data and invalid data when applying rule it is evaluated as invalid
+ Guard has no effect given valid source data
0
- 11:09:36
- 027ms
+ 09:48:44
+ 003ms
SUCCESS
- CheckedTest
+ EvaluatedTest
- Given checked with data when applying rule its evaluation is remembered
+ Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 004ms
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ EvaluatedTest
+
+ Given checked with data when applying rule its evaluation is remembered
+
+ 0
+ 09:48:44
+ 003ms
+ SUCCESS
+
+
+
+
+ InvalidObjectExceptionTest
+
+ Invalid object exception must contain all errors given multiple errors
+
+ 0
+ 09:48:43
+ 018ms
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules they are considered equal
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ A validation rule can be build and used in a fluent way
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Rules are chainable
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationRuleTest
+
+ Given two identical rules their hashcodes are identical
+
+ 0
+ 09:48:43
+
+ SUCCESS
+
+
+
+
+ ValidationsTest
+
+ Utility classes should not be instantiatable
+
+ 0
+ 09:48:44
+ 005ms
SUCCESS
@@ -502,8 +667,8 @@ Automated Tests
Given an object with a null field having non null field predicate fails
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -514,20 +679,32 @@ Automated Tests
Given an object with no null field having non null field predicate succeeds
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
- ValidatorDogfoodTest
+ EvaluatedUsages
+
+ Checked should allow for fluent usage when using it as a guard given invalid object
+
+ 0
+ 09:48:44
+ 010ms
+ SUCCESS
+
+
+
+
+ ValidatorUsage
- Modular validators must cover basic usage given simple date based validation logic
+ Modular validators must cover basic usage given simple date based validation logic
0
- 11:09:35
- 109ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -593,7 +770,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 5}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 14}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -689,7 +866,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [14,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -772,7 +949,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['14','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -840,9 +1017,19 @@ Manual Tests
link: "d2198a1d45dc949351523c85d368e3233a4ad15a551de2a43fa213250f2e5d53.html"
},
{
- title: 'Checked test',
+ title: 'Evaluated test',
result: 'SUCCESS',
- link: "1ec084fa34d05134aea7d135b98db7fcf18ef32ece4a23fd81c84b875d502470.html"
+ link: "37b17597f7c604b8c45a54df2dc2cd1d173a524822486de663d8723bb0154e70.html"
+ },
+ {
+ title: 'Invalid object exception test',
+ result: 'SUCCESS',
+ link: "798622fc47b7f50183a9aed3fc015103796870843013d2d81d3bff1169aaf7f8.html"
+ },
+ {
+ title: 'Validation rule test',
+ result: 'SUCCESS',
+ link: "f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html"
},
{
title: 'Validations test',
@@ -850,57 +1037,65 @@ Manual Tests
link: "fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html"
},
{
- title: 'Validator dogfood test',
+ title: 'Evaluated usages',
+ result: 'SUCCESS',
+ link: "8ab488035c73f6a0e69821fe65e6057379d6b097ddf5763788a71385f2765d95.html"
+ },
+ {
+ title: 'Validator usage',
result: 'SUCCESS',
- link: "6ebe63ae21b3d41322277183d4663aed5d68078b9eebcd941fd24a44777f456b.html"
+ link: "4f2cdfe4877188e808db6bc7d37b079fd0acabb751e1d28c62af24906d352a1a.html"
},
]
const coverageData = {
labels: [
'Sddevelopment',
- 'Checked test',
+ 'Evaluated test',
+ 'Invalid object exception test',
+ 'Validation rule test',
'Validations test',
- 'Validator dogfood test',
+ 'Evaluated usages',
+ 'Validator usage',
],
datasets: [
{
label: ['Passing Tests'],
- data: [5,2,2,1],
+ data: [14,4,1,4,3,1,1],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
label: ['Pending Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(165, 199, 238, 0.5)' ]
},
{
label: ['Ignored Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(168, 168, 168, 0.5)' ]
},
{
label: ['Skipped Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(238, 224, 152, 0.75)' ]
},
{
label: ['Aborted Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 153, 102, 0.5)' ]
},
{
label: ['Failed Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 22, 49, 0.5)' ]
},
{
label: ['Errors'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 97, 8, 0.5)' ]
},
{
label: ['Compromised Tests'],
- data: [0,0,0,0],
+ data: [0,0,0,0,0,0,0],
backgroundColor: [ 'rgba(255, 104, 255, 0.5)' ]
},
]
diff --git a/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.html b/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.html
index 1a309f5..3c234a3 100644
--- a/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.html
+++ b/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.html
@@ -156,7 +156,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 09:48
diff --git a/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.json b/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.json
index ce3b440..29f10c2 100644
--- a/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.json
+++ b/docs/serenity/f3ee29a617eb00ea39039b1367c1b36291fe990929274f11206e66db59a5af7d.json
@@ -1 +1 @@
-{"name":"givenAnObjectWithNoNullField_havingNonNullFieldPredicate_succeeds()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]/[method:givenAnObjectWithNoNullField_havingNonNullFieldPredicate_succeeds()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]","testCaseName":"be.sddevelopment.validation.ValidationsTest","methodName":"givenAnObjectWithNoNullField_havingNonNullFieldPredicate_succeeds","userStory":{"id":"be.sddevelopment.validation.ValidationsTest","storyName":"ValidationsTest","displayName":"ValidationsTest","storyClassName":"be.sddevelopment.validation.ValidationsTest","path":"be.sddevelopment.validation.ValidationsTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationsTest","description":"ValidationsTest"}],"narrative":"","type":"feature"},"title":"Given an object with no null field having non null field predicate succeeds","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/ValidationsTest","type":"feature","displayName":"ValidationsTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-23T11:09:36.190261449Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
+{"name":"givenAnObjectWithNoNullField_havingNonNullFieldPredicate_succeeds()","id":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]/[method:givenAnObjectWithNoNullField_havingNonNullFieldPredicate_succeeds()]","scenarioId":"[engine:junit-jupiter]/[class:be.sddevelopment.validation.ValidationsTest]","testCaseName":"be.sddevelopment.validation.ValidationsTest","methodName":"givenAnObjectWithNoNullField_havingNonNullFieldPredicate_succeeds","userStory":{"id":"be.sddevelopment.validation.ValidationsTest","storyName":"ValidationsTest","displayName":"ValidationsTest","storyClassName":"be.sddevelopment.validation.ValidationsTest","path":"be.sddevelopment.validation.ValidationsTest","pathElements":[{"name":"be","description":"be"},{"name":"sddevelopment","description":"sddevelopment"},{"name":"validation","description":"validation"},{"name":"ValidationsTest","description":"ValidationsTest"}],"narrative":"","type":"feature"},"title":"Given an object with no null field having non null field predicate succeeds","tags":[{"name":"be/sddevelopment","type":"feature","displayName":"Sddevelopment"},{"name":"be/sddevelopment/validation/ValidationsTest","type":"feature","displayName":"ValidationsTest"},{"name":"be/sddevelopment/validation","type":"story","displayName":"Validation"},{"name":"be","type":"capability","displayName":"Be"}],"startTime":"2023-12-26T09:48:44.364114919Z[Etc/UTC]","duration":3,"projectKey":"","driver":"","isManualTestingUpToDate":false,"manual":false,"testSource":"JUnit5","order":0,"result":"SUCCESS"}
\ No newline at end of file
diff --git a/docs/serenity/f5676dd02deffcf195c021853a8ed0a619cb6a85fbd7ac34c6470f9c2863fb9f.html b/docs/serenity/f5676dd02deffcf195c021853a8ed0a619cb6a85fbd7ac34c6470f9c2863fb9f.html
new file mode 100644
index 0000000..a6b8c60
--- /dev/null
+++ b/docs/serenity/f5676dd02deffcf195c021853a8ed0a619cb6a85fbd7ac34c6470f9c2863fb9f.html
@@ -0,0 +1,852 @@
+
+
+
+
+
+
+
+
+ Serenity Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Home
+ > Feature
+ > Be/Sddevelopment/Validation/Invalidobjectexceptiontest > Duration Under 1 Second
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48:47
+
+
+
+
+
+
+
+
+
Feature: Be/Sddevelopment/Validation/Invalidobjectexceptiontest > Duration Under 1 Second
+
+
+
+
+
+
+ 1 test
+
+ |
+
+
+
Note that results include
+ data-driven scenarios containing test ,
+ which may also contain results other than test .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 1
+
+
+
+ Total Number of Test Cases
+
+ 1
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:43
+
+
+
+ Total
+ Duration
+
+ 18ms
+
+
+
+ Fastest Test
+
+ 18ms
+
+
+
+ Slowest
+ Test
+
+ 18ms
+
+
+
+ Average
+ Execution Time
+
+ 18ms
+
+
+
+ Total
+ Execution Time
+
+ 18ms
+
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functional Coverage Overview
+ Features
+
+
+
+
+
+
+
+
+
+
Functional Coverage Details
+
+
+
Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html b/docs/serenity/f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html
new file mode 100644
index 0000000..ccb1f80
--- /dev/null
+++ b/docs/serenity/f8003655b7a95ae0a03e574b78a90bca4482549bc0e475ea16f608ef3a3b5b5b.html
@@ -0,0 +1,1106 @@
+
+
+
+
+
+
+ Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Report generated 26-12-2023 09:48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Feature: Validation rule test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
+
+
+
+
+
Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Feature Coverage By Scenario
+
+
+
+
+
+
+
Test Outcomes
+
+
+
+
+
+
+
+
Test Performance
+
+
+
+
+
+
+
+
+
+
+
+
+
Key Statistics
+
+
+
+
+
+ Number of Scenarios
+
+ 4
+
+ Total
+ Duration
+
+ 152ms
+
+
+
+ Total Number of Test Cases
+
+ 4
+
+ Fastest Test
+
+ 0ms
+
+
+
+ Number of Manual Test Cases
+
+ 0
+
+ Slowest
+ Test
+
+ 0ms
+
+
+
+ Tests Started
+
+ Dec 26, 2023 09:48:43
+
+ Average
+ Execution Time
+
+ 0ms
+
+
+
+ Tests
+ Finished
+
+ Dec 26, 2023 09:48:43
+
+ Total
+ Execution Time
+
+ 0ms
+
+
+
+
+
+
+
Automated Tests
+
+
+
+
+
+
+
+
+
Manual Tests
+
+ No manual tests were recorded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serenity BDD version 4.0.29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/serenity/fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html b/docs/serenity/fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html
index 4e8fd4d..a24471e 100644
--- a/docs/serenity/fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html
+++ b/docs/serenity/fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html
@@ -154,7 +154,7 @@
$("#requirements-tabs").tabs();
$("#test-tabs").tabs();
- var requirementsTree = [{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e2 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e2 test cases\u003c/span\u003e"]}];
+ var requirementsTree = [{"text":"Validations test","type":"feature","href":"fbd1f88d3747904a4edccee6dc82ecc55de45ddccd3e2d1061aaad523d65f589.html","nodes":[],"selectable":false,"tags":["\u003ca href\u003d\u0027##beforetable\u0027\u003e\u003ci class\u003d\u0027bi bi-check-circle-fill success-icon \u0027 title\u003d\u0027SUCCESS\u0027\u003e\u003c/i\u003e\u003c/a\u003e","\u003cspan class\u003d\u0027feature-count\u0027\u003e3 scenarios\u003c/span\u003e, \u003cspan class\u003d\u0027feature-count\u0027\u003e3 test cases\u003c/span\u003e"]}];
$('#tree').treeview({
data: requirementsTree,
@@ -234,7 +234,7 @@
Stories
- Report generated 23-12-2023 11:09
+ Report generated 26-12-2023 09:48
@@ -298,6 +298,39 @@ Feature Coverage By Scenario
Overview
+
+
+
+
+ Scenario: Utility classes should not be instantiatable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -373,11 +406,37 @@ Overview
Total Number of Test Cases
- 2
+ 3
Fastest Test
@@ -500,30 +559,30 @@ Key Statistics
Slowest
Test
- 3ms
+ 5ms
Tests Started
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Average
Execution Time
- 3ms
+ 4ms
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 09:48:44
Total
Execution Time
- 6ms
+ 12ms
@@ -545,6 +604,21 @@
Automated Tests
+
+
+ ValidationsTest
+
+
+ Utility classes should not be instantiatable
+
+
+
+ 0
+ 09:48:44
+ 005ms
+ SUCCESS
+
+
ValidationsTest
@@ -555,8 +629,8 @@ Automated Tests
0
- 11:09:36
- 003ms
+ 09:48:44
+ 004ms
SUCCESS
@@ -570,7 +644,7 @@ Automated Tests
0
- 11:09:36
+ 09:48:44
003ms
SUCCESS
@@ -630,7 +704,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 3}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -725,7 +799,7 @@ Manual Tests
datasets: [{
label: 'Feature Coverage',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 3}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -821,7 +895,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [2,0,0,0,0,0,0,0],
+ data: [3,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -904,7 +978,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['2','0','0','0','0','0','0','0'],
+ data: ['3','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
diff --git a/docs/serenity/ff9c86eaf8e8eb0e6a7aebfe6ece5f091f081c609987609b9fcb9e241f48de3f.html b/docs/serenity/ff9c86eaf8e8eb0e6a7aebfe6ece5f091f081c609987609b9fcb9e241f48de3f.html
index 178e581..6203c16 100644
--- a/docs/serenity/ff9c86eaf8e8eb0e6a7aebfe6ece5f091f081c609987609b9fcb9e241f48de3f.html
+++ b/docs/serenity/ff9c86eaf8e8eb0e6a7aebfe6ece5f091f081c609987609b9fcb9e241f48de3f.html
@@ -182,7 +182,7 @@
Stories
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 08:27:19
@@ -198,7 +198,7 @@ Test Results: All Tests
- 2 tests
+ 4 tests
|
@@ -238,60 +238,60 @@
Key Statistics
Number of Scenarios
-
2
+
4
Total Number of Test Cases
- 2
+ 4
Tests Started
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 08:27:16
Tests
Finished
- Dec 23, 2023 11:09:36
+ Dec 26, 2023 08:27:16
Total
Duration
- 68ms
+ 86ms
Fastest Test
- 4ms
+ 3ms
Slowest
Test
- 27ms
+ 16ms
Average
Execution Time
- 15ms
+ 6ms
Total
Execution Time
- 31ms
+ 25ms
@@ -353,8 +353,8 @@
Features
Sddevelopment
-
2
-
2
+
4
+
4
100%
@@ -364,7 +364,7 @@ Features
@@ -376,8 +376,8 @@
Features
Checked test
-
2
-
2
+
4
+
4
100%
@@ -387,7 +387,7 @@ Features
@@ -422,6 +422,18 @@
Automated Tests
+
+
+ CheckedTest
+
+ Guard has no effect given valid source data
+
+ 0
+ 08:27:16
+ 003ms
+ SUCCESS
+
+
CheckedTest
@@ -429,8 +441,20 @@ Automated Tests
Given checked with data and invalid data when applying rule it is evaluated as invalid
0
- 11:09:36
- 027ms
+ 08:27:16
+ 016ms
+ SUCCESS
+
+
+
+
+ CheckedTest
+
+ Guard throws a validation exception given invalid source data
+
+ 0
+ 08:27:16
+ 003ms
SUCCESS
@@ -441,8 +465,8 @@ Automated Tests
Given checked with data when applying rule its evaluation is remembered
0
- 11:09:36
- 004ms
+ 08:27:16
+ 003ms
SUCCESS
@@ -508,7 +532,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [{meta: 'Passing tests', value: 2}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
+ data: [{meta: 'Passing tests', value: 4}, {meta: 'Pending tests', value: 0}, {meta: 'Ignored tests', value: 0}, {meta: 'Skipped tests', value: 0}, {meta: 'Aborted tests', value: 0}, {meta: 'Failing tests', value: 0}, {meta: 'Broken tests', value: 0}, {meta: 'Compromised tests', value: 0}],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -604,7 +628,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [2,0,0,0,0,0,0,0],
+ data: [4,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -687,7 +711,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['2','0','0','0','0','0','0','0'],
+ data: ['4','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -768,7 +792,7 @@ Manual Tests
datasets: [
{
label: ['Passing Tests'],
- data: [2,2],
+ data: [4,4],
backgroundColor: [ 'rgba(153,204,51,0.5)' ]
},
{
diff --git a/docs/serenity/index.html b/docs/serenity/index.html
index 761b208..3c62f3e 100644
--- a/docs/serenity/index.html
+++ b/docs/serenity/index.html
@@ -191,17 +191,8 @@
Requirements
-
- Capabilities
-
-
- Features
-
-
- Stories
-
- Report generated 23-12-2023 11:09:38
+ Report generated 26-12-2023 12:37:57
@@ -216,7 +207,7 @@ Test Results: All Tests
- 5 tests
+ 0 tests
@@ -244,9 +235,6 @@
Test Results: All Tests
Test Outcomes
@@ -267,15 +255,6 @@ Test Performance
-
-
-
-
Functional
- Coverage Overview
- Features
-
-
-
Key Statistics
@@ -286,60 +265,60 @@ Key Statistics
Number of Scenarios
- 5
+ 0
Total Number of Test Cases
- 5
+ 0
Tests Started
- Dec 23, 2023 11:09:35
+
Tests
Finished
- Dec 23, 2023 11:09:36
+
Total
Duration
- 844ms
+ 0ms
Fastest Test
- 3ms
+ 0ms
Slowest
Test
- 109ms
+ 0ms
Average
Execution Time
- 29ms
+ 0ms
Total
Execution Time
- 146ms
+ 0ms
@@ -349,122 +328,6 @@
Key Statistics
-
-
-
Functional Coverage Details
-
-
-
Features
-
-
-
-
@@ -483,22 +346,22 @@
Key Statistics
Number of Scenarios
- 5
+ 0
Total
Duration
- 844ms
+ 0ms
Total Number of Test Cases
- 5
+ 0
Fastest Test
- 3ms
+ 0ms
@@ -509,30 +372,30 @@ Key Statistics
Slowest
Test
- 109ms
+ 0ms
Tests Started
- Dec 23, 2023 11:09:35
+
Average
Execution Time
- 29ms
+ 0ms
Tests
Finished
- Dec 23, 2023 11:09:36
+
Total
Execution Time
- 146ms
+ 0ms
@@ -541,102 +404,7 @@
Key Statistics
Automated Scenarios
-
+ No automated tests were executed
@@ -697,7 +465,7 @@ Manual Tests
datasets: [{
label: 'Test Results',
fill: false,
- data: [5,0,0,0,0,0,0,0],
+ data: [0,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1,
@@ -748,7 +516,7 @@ Manual Tests
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
- var text = "100%"
+ var text = " "
textX = 10 + Math.round((width - ctx.measureText(text).width) / 2);
textY = (height / 2) - 40;
@@ -793,7 +561,7 @@ Manual Tests
datasets: [
{
label: 'Automated',
- data: [5,0,0,0,0,0,0,0],
+ data: [0,0,0,0,0,0,0,0],
backgroundColor: ['rgba(153,204,51,0.5)','rgba(165, 199, 238, 0.5)','rgba(168, 168, 168, 0.5)','rgba(238, 224, 152, 0.75)','rgba(255, 153, 102, 0.5)','rgba(255, 22, 49, 0.5)','rgba(255, 97, 8, 0.5)','rgba(255, 104, 255, 0.5)','rgba(83, 50, 168, 0.5)'],
borderColor: ['rgba(153,204,51,1)','rgba(165, 199, 238, 1)','rgba(168, 168, 168, 1)','rgba(238, 224, 152, 1)','rgba(255, 153, 102, 1)','rgba(255, 22, 49, 1)','rgba(255, 97, 8, 1)','rgba(255, 104, 255, 1)','rgba(83, 50, 168, 1)'],
borderWidth: 1
@@ -876,7 +644,7 @@ Manual Tests
datasets: [{
label: 'Number of tests per duration',
fill: false,
- data: ['5','0','0','0','0','0','0','0'],
+ data: ['0','0','0','0','0','0','0','0'],
backgroundColor: 'rgba(83, 146, 255,0.5)',
borderColor: 'rgba(83, 146, 255, 1)',
}]
@@ -928,135 +696,5 @@ Manual Tests
-
-
-
-
-
diff --git a/docs/serenity/summary.txt b/docs/serenity/summary.txt
index e90ea01..d12960e 100644
--- a/docs/serenity/summary.txt
+++ b/docs/serenity/summary.txt
@@ -1,7 +1,7 @@
-Serenity report generated 23-12-2023 11:09:38
+Serenity report generated 26-12-2023 12:37:57
-Test Cases: 5
-Passed: 5
+Test Cases: 0
+Passed: 0
Failed: 0
Failed with errors: 0
Compromised: 0
diff --git a/pom.xml b/pom.xml
index 34b34f3..5b7f301 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,8 @@
Java library to create modular validator-objects. Intended to be used as a utility library in other
projects to avoid the overhead of writing custom validation frameworks. Modular Validators supports the creation
- of specific validator objects, that can use both internal state, and external services to assess the validity of an
+ of specific validator objects, that can use both internal state, and external services to assess the validity of
+ an
object.
@@ -79,6 +80,29 @@
${serenity.version}
test
+
+ org.apache.commons
+ commons-lang3
+ 3.14.0
+
+
+ org.mockito
+ mockito-junit-jupiter
+ 5.8.0
+ test
+
+
+ net.bytebuddy
+ byte-buddy
+ 1.14.11
+ test
+
+
+ net.bytebuddy
+ byte-buddy-agent
+ 1.14.11
+ test
+
@@ -90,6 +114,11 @@
org.sonarsource.scanner.maven
sonar-maven-plugin
3.10.0.2594
+
+
+ be/sddevelopment/**/*TestUtils*/
+
+
@@ -154,7 +183,7 @@
- be/sddevelopment/commons/constants/**/*.class
+ be/sddevelopment/**/*TestUtils*/
diff --git a/src/main/java/be/sddevelopment/validation/Checked.java b/src/main/java/be/sddevelopment/validation/Checked.java
deleted file mode 100644
index 0ec5ad0..0000000
--- a/src/main/java/be/sddevelopment/validation/Checked.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package be.sddevelopment.validation;
-
-import java.util.Optional;
-
-import static be.sddevelopment.validation.Evaluation.FAIL;
-import static be.sddevelopment.validation.Evaluation.PASS;
-import static java.util.Optional.ofNullable;
-
-/**
- * Checked class.
- *
- * Represents the result of evaluating an object of any type.
- * The result of said evaluation is represented by a {@link EvaluationRationale}.
- * The original object is maintained as well, to allow for further processing, and flexibility in dealing with various validation states.
- *
- * Intended as a monadic structure to allow for fluent programming with the result of a validation.
- *
- * @author stijnd
- * @version 1.0.0-SNAPSHOT
- */
-public final class Checked {
-
- private final T data;
- private final EvaluationRationale rationale = new EvaluationRationale();
-
- private Checked(T toValidate) {
- this.data = toValidate;
- }
-
- public boolean isValid() {
- return this.rationale.details()
- .stream()
- .map(Reason::result)
- .noneMatch(FAIL::equals);
- }
-
- Checked applyRule(ValidationRule tValidationRule) {
- var result = tValidationRule.rule().test(this.data);
- this.rationale.add(new Reason(tValidationRule.description(), result ? PASS : FAIL));
- return this;
- }
-
- public static Checked of(T toValidate) {
- return new Checked<>(toValidate);
- }
-
- public Optional rationale() {
- return ofNullable(this.rationale);
- }
-
-}
diff --git a/src/main/java/be/sddevelopment/validation/Constrainable.java b/src/main/java/be/sddevelopment/validation/Constrainable.java
new file mode 100644
index 0000000..7c0ddf7
--- /dev/null
+++ b/src/main/java/be/sddevelopment/validation/Constrainable.java
@@ -0,0 +1,66 @@
+package be.sddevelopment.validation;
+
+import static be.sddevelopment.validation.ModularRuleset.emptyRules;
+
+/**
+ * Evaluated class.
+ *
+ * Represents the result of evaluating an object of any type.
+ * The result of said evaluation is represented by a {@link Rationale}.
+ * The original object is maintained as well, to allow for further processing, and flexibility in dealing with various validation states.
+ *
+ *
+ * Intended as a monadic structure to allow for fluent programming with the result of a validation.
+ *
+ * @author stijnd
+ * @version 1.0.0-SNAPSHOT
+ */
+public final class Constrainable {
+
+ private final T data;
+ private final ModularRuleset toAdhereTo;
+
+ private Constrainable(T toValidate, ModularRuleset toAdhereTo) {
+ this.data = toValidate;
+ this.toAdhereTo = toAdhereTo;
+ }
+
+ public boolean isValid() {
+ return this.toAdhereTo.quickCheck(this.data).isPassing();
+ }
+
+ Constrainable adheresTo(Constraint constraint) {
+ return new Constrainable<>(this.data, this.toAdhereTo.toBuilder().must(constraint).done());
+ }
+
+ public static Constrainable constrain(T toConstrain) {
+ return constrain(toConstrain, emptyRules());
+ }
+
+ public static Constrainable constrain(T toConstrain, ModularRuleset ruleset) {
+ return of(toConstrain, ruleset);
+ }
+
+ public static Constrainable of(T toConstrain, ModularRuleset ruleset) {
+ return new Constrainable<>(toConstrain, ruleset);
+ }
+
+ public Rationale rationale() {
+ return this.toAdhereTo.assess(this.data);
+ }
+
+ public void feedback(String errorMessage) throws InvalidObjectException {
+ var rationale = this.toAdhereTo.check(this.data);
+ if (rationale.isFailing()) {
+ throw new InvalidObjectException(errorMessage, this.rationale());
+ }
+ }
+
+ public void guard() throws InvalidObjectException {
+ var rationale = this.toAdhereTo.quickCheck(this.data);
+ if (rationale.isFailing()) {
+ throw new InvalidObjectException("Object is invalid", rationale);
+ }
+ }
+
+}
diff --git a/src/main/java/be/sddevelopment/validation/Constraint.java b/src/main/java/be/sddevelopment/validation/Constraint.java
new file mode 100644
index 0000000..fcd30e3
--- /dev/null
+++ b/src/main/java/be/sddevelopment/validation/Constraint.java
@@ -0,0 +1,71 @@
+package be.sddevelopment.validation;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
+import java.util.function.Predicate;
+
+import static be.sddevelopment.validation.Evaluation.FAIL;
+import static be.sddevelopment.validation.Evaluation.PASS;
+
+/**
+ * ValidationRule class.
+ * Represents a single validation rule, which can be applied to an object of any type.
+ *
+ * @param rule a method that accepts an object of type T and returns a boolean that indicates if it matches the validation criterium.
+ * @param description textual description of the validation rule
+ * @param type of the object onto which the rule can be applied
+ */
+public record Constraint(Predicate rule, String description) {
+
+ public static ValidationRuleBuilder ruleFor(Class ignoredClass) {
+ return new ValidationRuleBuilder<>();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+
+ if (o == null || getClass() != o.getClass()) return false;
+
+ Constraint> that = (Constraint>) o;
+
+ return new EqualsBuilder()
+ .append(description, that.description)
+ .isEquals();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder(17, 37)
+ .append(description)
+ .toHashCode();
+ }
+
+ public Reason applyTo(T toTest) {
+ var result = this.rule().test(toTest);
+ return new Reason(this.description(), result ? PASS : FAIL);
+ }
+
+ public static class ValidationRuleBuilder {
+ private String description;
+ private Predicate toCheck;
+
+ private ValidationRuleBuilder() {
+ }
+
+ public Constraint done() {
+ return new Constraint<>(toCheck, this.description);
+ }
+
+ public ValidationRuleBuilder requires(Predicate predicate) {
+ this.toCheck = predicate;
+ return this;
+ }
+
+ public ValidationRuleBuilder describedAs(String description) {
+ this.description = description;
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/be/sddevelopment/validation/EvaluationRationale.java b/src/main/java/be/sddevelopment/validation/EvaluationRationale.java
deleted file mode 100644
index 9ea0ffb..0000000
--- a/src/main/java/be/sddevelopment/validation/EvaluationRationale.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package be.sddevelopment.validation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class EvaluationRationale {
- private final List details = new ArrayList<>();
-
- public List details() {
- return details;
- }
-
- public void add(Reason reason) {
- this.details.add(reason);
- }
-}
diff --git a/src/main/java/be/sddevelopment/validation/InvalidObjectException.java b/src/main/java/be/sddevelopment/validation/InvalidObjectException.java
new file mode 100644
index 0000000..05d521a
--- /dev/null
+++ b/src/main/java/be/sddevelopment/validation/InvalidObjectException.java
@@ -0,0 +1,26 @@
+package be.sddevelopment.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static java.lang.String.format;
+
+public class InvalidObjectException extends Exception {
+
+ private final List errors = new ArrayList<>();
+
+ public InvalidObjectException(String errorMessage, Rationale rationale) {
+ super(errorMessage);
+ rationale.details()
+ .stream().map(this::errorFromReason)
+ .forEach(this.errors::add);
+ }
+
+ private String errorFromReason(Reason reason) {
+ return format("%s: [%s]", reason.result().name(), reason.rationale());
+ }
+
+ public List errors() {
+ return new ArrayList<>(this.errors);
+ }
+}
diff --git a/src/main/java/be/sddevelopment/validation/ModularRuleset.java b/src/main/java/be/sddevelopment/validation/ModularRuleset.java
new file mode 100644
index 0000000..2746845
--- /dev/null
+++ b/src/main/java/be/sddevelopment/validation/ModularRuleset.java
@@ -0,0 +1,85 @@
+package be.sddevelopment.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Predicate;
+
+import static be.sddevelopment.validation.Rationale.rationaleWithReasons;
+import static java.util.Collections.emptyList;
+
+public final class ModularRuleset {
+
+ private final List> rules = new ArrayList<>();
+
+ private ModularRuleset(List> rules) {
+ this.rules.addAll(rules);
+ }
+
+ public Constrainable constrain(T toValidate) {
+ return Constrainable.of(toValidate, this);
+ }
+
+ public Rationale assess(T toValidate) {
+ return check(toValidate);
+ }
+
+ public Rationale check(T data) {
+ return rationaleWithReasons(rules.stream()
+ .map(rule -> rule.applyTo(data))
+ .toList());
+ }
+
+ public Rationale quickCheck(T data) {
+ var result = Rationale.emptyRationale();
+ for (var rule : this.rules) {
+ var reason = rule.applyTo(data);
+ result.add(reason);
+ if (reason.isFailing()) {
+ return result;
+ }
+ }
+ return result;
+ }
+
+ public static ModularValidatorBuilder aValid(Class ignoredClazz) {
+ return new ModularValidatorBuilder<>();
+ }
+
+ public ModularValidatorBuilder toBuilder() {
+ return new ModularValidatorBuilder().withRules(this.rules);
+ }
+
+ public static ModularRuleset emptyRules() {
+ return new ModularRuleset<>(emptyList());
+ }
+
+ public static class ModularValidatorBuilder {
+
+ private final List> rules = new ArrayList<>();
+
+ private ModularValidatorBuilder() {
+ }
+
+ public ModularValidatorBuilder must(Predicate requirement, String description) {
+ return must(new Constraint<>(requirement, description));
+ }
+
+ public ModularValidatorBuilder must(Constraint rule) {
+ this.rules.add(rule);
+ return this;
+ }
+
+ public ModularValidatorBuilder withRules(List> rules) {
+ this.rules.addAll(rules);
+ return this;
+ }
+
+ public ModularRuleset iHaveSpoken() {
+ return done();
+ }
+
+ public ModularRuleset done() {
+ return new ModularRuleset<>(this.rules);
+ }
+ }
+}
diff --git a/src/main/java/be/sddevelopment/validation/ModularValidator.java b/src/main/java/be/sddevelopment/validation/ModularValidator.java
deleted file mode 100644
index 08cb349..0000000
--- a/src/main/java/be/sddevelopment/validation/ModularValidator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package be.sddevelopment.validation;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Predicate;
-
-public final class ModularValidator {
-
- private final List> rules = new ArrayList<>();
-
- private ModularValidator(List> rules) {
- this.rules.addAll(rules);
- }
-
- public Checked evaluate(T toValidate) {
- Checked accumulator = Checked.of(toValidate);
- rules.forEach(accumulator::applyRule);
- return accumulator;
- }
-
- public static ModularValidatorBuilder aValid(Class ignoredClazz) {
- return new ModularValidatorBuilder<>();
- }
-
- public static class ModularValidatorBuilder {
- private final List> rules = new ArrayList<>();
-
- private ModularValidatorBuilder() {
- }
-
- public ModularValidatorBuilder must(Predicate requirement, String description) {
- return must(new ValidationRule<>(requirement, description));
- }
-
- public ModularValidatorBuilder must(ValidationRule rule) {
- this.rules.add(rule);
- return this;
- }
-
- public ModularValidator build() {
- return new ModularValidator<>(rules);
- }
-
- public ModularValidator iHaveSpoken() {
- return done();
- }
-
- public ModularValidator done() {
- return new ModularValidator<>(this.rules);
- }
- }
-}
diff --git a/src/main/java/be/sddevelopment/validation/Rationale.java b/src/main/java/be/sddevelopment/validation/Rationale.java
new file mode 100644
index 0000000..d6de6fa
--- /dev/null
+++ b/src/main/java/be/sddevelopment/validation/Rationale.java
@@ -0,0 +1,42 @@
+package be.sddevelopment.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Rationale {
+ private final List details = new ArrayList<>();
+
+ private Rationale() {
+ }
+
+ private Rationale(List reasons) {
+ this();
+ this.details.addAll(reasons);
+ }
+
+ public static Rationale emptyRationale() {
+ return new Rationale();
+ }
+
+ public static Rationale rationaleWithReasons(List reasons) {
+ return new Rationale(reasons);
+ }
+
+ public List details() {
+ return details;
+ }
+
+ public Rationale add(Reason reason) {
+ this.details.add(reason);
+ return this;
+ }
+
+ public boolean isPassing() {
+ return this.details.stream()
+ .allMatch(Reason::isPassing);
+ }
+
+ public boolean isFailing() {
+ return !this.isPassing();
+ }
+}
diff --git a/src/main/java/be/sddevelopment/validation/Reason.java b/src/main/java/be/sddevelopment/validation/Reason.java
index 89faabc..bff9141 100644
--- a/src/main/java/be/sddevelopment/validation/Reason.java
+++ b/src/main/java/be/sddevelopment/validation/Reason.java
@@ -5,9 +5,9 @@
/**
* Reason class.
- * Represents the evaluation of a single {@link ValidationRule}, and will be included in a {@link EvaluationRationale}.
+ * Represents the evaluation of a single {@link Constraint}, and will be included in a {@link Rationale}.
* Each reason will tell the user whether a particular rule passed or failed, and will include a description (aka "rationale") to explain why a certain result was achieved.
- *
+ *
* This class is immutable, and provides static factory methods to simplify usage, and increase readability..
*
* @version 1.0.0-SNAPSHOT
@@ -23,4 +23,11 @@ public static Reason failed(String rationale) {
return new Reason(rationale, FAIL);
}
+ public boolean isPassing() {
+ return PASS == this.result;
+ }
+
+ public boolean isFailing() {
+ return FAIL == this.result;
+ }
}
diff --git a/src/main/java/be/sddevelopment/validation/ValidationRule.java b/src/main/java/be/sddevelopment/validation/ValidationRule.java
deleted file mode 100644
index fbe02be..0000000
--- a/src/main/java/be/sddevelopment/validation/ValidationRule.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package be.sddevelopment.validation;
-
-import java.util.function.Predicate;
-
-/**
- *
ValidationRule class.
- * Represents a single validation rule, which can be applied to an object of any type.
- *
- * @param rule a method that accepts an object of type T and returns a boolean that indicates if it matches the validation criterium.
- * @param description textual description of the validation rule
- * @param type of the object onto which the rule can be applied
- */
-public record ValidationRule(Predicate rule, String description) {
-}
diff --git a/src/main/java/be/sddevelopment/validation/Validations.java b/src/main/java/be/sddevelopment/validation/Validations.java
index 6ef461e..a9b7198 100644
--- a/src/main/java/be/sddevelopment/validation/Validations.java
+++ b/src/main/java/be/sddevelopment/validation/Validations.java
@@ -1,5 +1,7 @@
package be.sddevelopment.validation;
+import org.apache.commons.lang3.StringUtils;
+
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -14,26 +16,30 @@
*/
public final class Validations {
- private Validations() throws IllegalAccessException {
- throw new IllegalAccessException("Utility classes (containing shared methods or constants) should not be instantiated.");
+ private Validations() {
+ throw new UnsupportedOperationException("Utility classes (containing shared methods or constants) should not be instantiated.");
}
/**
* haveNonNullField.
*
* @param extractor a {@link java.util.function.Function} object
- * @param a S class
+ * @param a S class
* @return a {@link java.util.function.Predicate} object
*/
public static Predicate haveNonNullField(Function extractor) {
return not(haveNullField(extractor));
}
+ public static Predicate haveNonEmpty(Function extractor) {
+ return extractor.andThen(StringUtils::isNotBlank)::apply;
+ }
+
/**
* haveNullField.
*
* @param extractor a {@link java.util.function.Function} object
- * @param a S class
+ * @param a S class
* @return a {@link java.util.function.Predicate} object
*/
public static Predicate haveNullField(Function extractor) {
diff --git a/src/test/java/be/sddevelopment/validation/CheckedTest.java b/src/test/java/be/sddevelopment/validation/CheckedTest.java
deleted file mode 100644
index dd0d555..0000000
--- a/src/test/java/be/sddevelopment/validation/CheckedTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package be.sddevelopment.validation;
-
-import net.serenitybdd.junit5.SerenityJUnit5Extension;
-import org.assertj.core.api.WithAssertions;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-import java.util.function.Predicate;
-
-import static be.sddevelopment.validation.CheckedTestUtils.invalid;
-import static be.sddevelopment.validation.CheckedTestUtils.valid;
-import static be.sddevelopment.validation.Reason.failed;
-import static be.sddevelopment.validation.Reason.passed;
-
-@ExtendWith(SerenityJUnit5Extension.class)
-class CheckedTest implements WithAssertions {
-
- @Test
- void givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered() {
- var contentToCheck = "This is a non empty String";
- var rule = new ValidationRule<>(Predicate.not(String::isBlank), "mustn't be blank");
- assertThat(rule.rule().test(contentToCheck)).isTrue();
-
- var result = Checked.of(contentToCheck).applyRule(rule);
-
- assertThat(result).is(valid());
- assertThat(result.rationale())
- .isPresent().get()
- .extracting(EvaluationRationale::details).asList()
- .contains(passed("mustn't be blank"));
- }
-
- @Test
- void givenCheckedWithData_andInvalidData_whenApplyingRule_itIsEvaluatedAsInvalid() {
- var empty = "";
- var rule = new ValidationRule<>(Predicate.not(String::isBlank), "mustn't be blank");
- assertThat(rule.rule().test(empty)).isFalse();
-
- var result = Checked.of(empty).applyRule(rule);
-
- assertThat(result).is(invalid());
- assertThat(result.rationale())
- .isPresent().get()
- .extracting(EvaluationRationale::details).asList()
- .contains(failed("mustn't be blank"));
- }
-}
\ No newline at end of file
diff --git a/src/test/java/be/sddevelopment/validation/CheckedTestUtils.java b/src/test/java/be/sddevelopment/validation/CheckedTestUtils.java
index 60ae299..3a269ab 100644
--- a/src/test/java/be/sddevelopment/validation/CheckedTestUtils.java
+++ b/src/test/java/be/sddevelopment/validation/CheckedTestUtils.java
@@ -10,11 +10,20 @@ private CheckedTestUtils() throws IllegalAccessException {
throw new IllegalAccessException("Utility classes (containing shared methods or constants) should not be instantiated.");
}
- public static Condition> valid() {
- return new Condition<>(Checked::isValid, "valid");
+ public static Condition> valid() {
+ return new Condition<>(Constrainable::isValid, "valid");
}
- public static Condition> invalid() {
- return new Condition<>(Predicate.not(Checked::isValid), "invalid");
+ public static Condition> invalid() {
+ return new Condition<>(Predicate.not(Constrainable::isValid), "invalid");
}
+
+ public static Condition passing() {
+ return new Condition<>(Reason::isPassing, "is passing");
+ }
+
+ public static Condition failing() {
+ return new Condition<>(Predicate.not(Reason::isPassing), "is failing");
+ }
+
}
diff --git a/src/test/java/be/sddevelopment/validation/ConstrainableTest.java b/src/test/java/be/sddevelopment/validation/ConstrainableTest.java
new file mode 100644
index 0000000..0b0d25d
--- /dev/null
+++ b/src/test/java/be/sddevelopment/validation/ConstrainableTest.java
@@ -0,0 +1,90 @@
+package be.sddevelopment.validation;
+
+import net.serenitybdd.junit5.SerenityJUnit5Extension;
+import org.assertj.core.api.WithAssertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.platform.commons.util.StringUtils;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.function.Predicate;
+
+import static be.sddevelopment.validation.CheckedTestUtils.invalid;
+import static be.sddevelopment.validation.CheckedTestUtils.valid;
+import static be.sddevelopment.validation.Reason.failed;
+import static be.sddevelopment.validation.Reason.passed;
+import static be.sddevelopment.validation.Validations.haveNonEmpty;
+
+@ExtendWith({SerenityJUnit5Extension.class, MockitoExtension.class})
+class ConstrainableTest implements WithAssertions {
+
+ @Test
+ void givenCheckedWithData_whenApplyingRule_itsEvaluationIsRemembered() {
+ var contentToCheck = "This is a non empty String";
+ var rule = new Constraint<>(Predicate.not(String::isBlank), "mustn't be blank");
+ assertThat(rule.rule().test(contentToCheck)).isTrue();
+
+ var result = Constrainable.constrain(contentToCheck).adheresTo(rule);
+
+ assertThat(result).is(valid());
+ assertThat(result.rationale())
+ .extracting(Rationale::details).asList()
+ .contains(passed("mustn't be blank"));
+ }
+
+ @Test
+ void givenCheckedWithData_andInvalidData_whenApplyingRule_itIsEvaluatedAsInvalid() {
+ var empty = "";
+ var rule = new Constraint<>(Predicate.not(String::isBlank), "mustn't be blank");
+ assertThat(rule.rule().test(empty)).isFalse();
+
+ var result = Constrainable.constrain(empty).adheresTo(rule);
+
+ assertThat(result).is(invalid());
+ assertThat(result.rationale())
+ .extracting(Rationale::details).asList()
+ .contains(failed("mustn't be blank"));
+ }
+
+ @Test
+ void feedback_throwsAValidationException_givenInvalidSourceData() {
+ var checked = Constrainable.constrain("")
+ .adheresTo(new Constraint<>(StringUtils::isNotBlank, "mustn't be blank"));
+ assertThat(checked).is(invalid());
+
+ assertThatExceptionOfType(InvalidObjectException.class)
+ .isThrownBy(() -> checked.feedback("This is an invalid object"))
+ .withMessage("This is an invalid object");
+ }
+
+ @Test
+ void feedback_hasNoEffect_givenValidSourceData() {
+ var checked = Constrainable.constrain("I am a real String")
+ .adheresTo(new Constraint<>(StringUtils::isNotBlank, "mustn't be blank"));
+ assertThat(checked).is(valid());
+
+ assertThatCode(() -> checked.feedback("This is an invalid object"))
+ .doesNotThrowAnyException();
+ }
+
+ @Test
+ void guard_failsFastWhenInvalid() {
+
+ var rules = ModularRuleset.aValid(ToBeConstained.class)
+ .must(haveNonEmpty(ToBeConstained::firstName), "have a first name")
+ .must(haveNonEmpty(ToBeConstained::lastName), "have a last name")
+ .must(haveNonEmpty(ToBeConstained::dateOfBirth), "have a year of birth")
+ .done();
+
+ var constrainedRecord = rules.constrain(new ToBeConstained("", "", ""));
+
+ assertThatExceptionOfType(InvalidObjectException.class)
+ .isThrownBy(constrainedRecord::guard)
+ .extracting(InvalidObjectException::errors).asList()
+ .containsExactly("FAIL: [have a first name]");
+ }
+
+ private record ToBeConstained(String firstName, String lastName, String dateOfBirth) {
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/be/sddevelopment/validation/ConstraintTest.java b/src/test/java/be/sddevelopment/validation/ConstraintTest.java
new file mode 100644
index 0000000..fbdbb46
--- /dev/null
+++ b/src/test/java/be/sddevelopment/validation/ConstraintTest.java
@@ -0,0 +1,77 @@
+package be.sddevelopment.validation;
+
+import org.assertj.core.api.WithAssertions;
+import org.junit.jupiter.api.Test;
+import org.junit.platform.commons.util.StringUtils;
+
+import java.util.List;
+import java.util.function.Predicate;
+
+import static be.sddevelopment.validation.CheckedTestUtils.failing;
+import static be.sddevelopment.validation.CheckedTestUtils.invalid;
+import static be.sddevelopment.validation.Constraint.ruleFor;
+import static be.sddevelopment.validation.Reason.failed;
+import static be.sddevelopment.validation.Reason.passed;
+
+class ConstraintTest implements WithAssertions {
+
+ @Test
+ void aValidationRule_canBeBuildAndUsed_inAFluentWay() {
+ var rule = ruleFor(String.class)
+ .describedAs("We rule")
+ .requires(StringUtils::isNotBlank)
+ .done();
+
+ assertThat(rule.applyTo("")).is(failing());
+ }
+
+ @Test
+ void rules_areChainable() {
+ var rule = ruleFor(String.class)
+ .describedAs("Must be filled in")
+ .requires(StringUtils::isNotBlank)
+ .done();
+ var otherRule = ruleFor(String.class)
+ .describedAs("Be polite")
+ .requires(Predicate.not(List.of("Idiot", "Fracking", "Noob")::contains))
+ .done();
+
+ var result = Constrainable.constrain("Idiot")
+ .adheresTo(rule)
+ .adheresTo(otherRule);
+
+ assertThat(result).is(invalid())
+ .extracting(Constrainable::rationale)
+ .extracting(Rationale::details).asList()
+ .contains(passed("Must be filled in"), failed("Be polite"));
+ }
+
+ @Test
+ void givenTwoIdenticalRules_theyAreConsideredEqual() {
+ var rule = ruleFor(String.class)
+ .describedAs("We rule")
+ .requires(StringUtils::isNotBlank)
+ .done();
+ var other = ruleFor(String.class)
+ .describedAs("We rule")
+ .requires(StringUtils::isNotBlank)
+ .done();
+
+ assertThat(rule).isEqualTo(other);
+ assertThat(other).isEqualTo(rule);
+ }
+
+ @Test
+ void givenTwoIdenticalRules_theirHashesAreIdentical() {
+ var rule = ruleFor(String.class)
+ .describedAs("We rule")
+ .requires(StringUtils::isNotBlank)
+ .done();
+ var other = ruleFor(String.class)
+ .describedAs("We rule")
+ .requires(StringUtils::isNotBlank)
+ .done();
+
+ assertThat(rule.hashCode()).isEqualTo(other.hashCode());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/be/sddevelopment/validation/InvalidObjectExceptionTest.java b/src/test/java/be/sddevelopment/validation/InvalidObjectExceptionTest.java
new file mode 100644
index 0000000..2f5c818
--- /dev/null
+++ b/src/test/java/be/sddevelopment/validation/InvalidObjectExceptionTest.java
@@ -0,0 +1,30 @@
+package be.sddevelopment.validation;
+
+import net.serenitybdd.junit5.SerenityJUnit5Extension;
+import org.assertj.core.api.WithAssertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import static be.sddevelopment.validation.Rationale.emptyRationale;
+import static be.sddevelopment.validation.Reason.failed;
+import static be.sddevelopment.validation.Reason.passed;
+
+@ExtendWith(SerenityJUnit5Extension.class)
+class InvalidObjectExceptionTest implements WithAssertions {
+
+ @Test
+ void invalidObjectExceptionMustContainAllErrors_givenMultipleErrors() {
+ var rationale = emptyRationale()
+ .add(passed("This is fine"))
+ .add(failed("The consequences will never be the same"));
+
+ var result = new InvalidObjectException("You done goofed", rationale);
+
+ assertThat(result).isNotNull().extracting(InvalidObjectException::getMessage).isEqualTo("You done goofed");
+ assertThat(result.errors()).containsExactlyInAnyOrder(
+ "PASS: [This is fine]",
+ "FAIL: [The consequences will never be the same]"
+ );
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/be/sddevelopment/validation/ValidationDogfoodTest.java b/src/test/java/be/sddevelopment/validation/ValidationDogfoodTest.java
new file mode 100644
index 0000000..cb02d92
--- /dev/null
+++ b/src/test/java/be/sddevelopment/validation/ValidationDogfoodTest.java
@@ -0,0 +1,81 @@
+package be.sddevelopment.validation;
+
+import net.serenitybdd.junit5.SerenityJUnit5Extension;
+import org.assertj.core.api.WithAssertions;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.time.LocalDate;
+import java.util.Objects;
+
+import static be.sddevelopment.validation.ModularRuleset.aValid;
+import static be.sddevelopment.validation.Validations.haveNonNullField;
+import static java.time.Month.MARCH;
+import static java.util.Optional.ofNullable;
+
+/**
+ * Tests illustrating using the validators through close-to-real examples.
+ * These tests are intended to allow library developers to experience working with their own code in a practical setting,
+ * getting first-hand impressions on how their API design feels to their target audience.
+ */
+@ExtendWith(SerenityJUnit5Extension.class)
+class ValidationDogfoodTest implements WithAssertions {
+
+ @Nested
+ class ValidatorUsage {
+ @Test
+ void modularValidatorsMustCoverBasicUsage_givenSimpleDateBasedValidationLogic() {
+ var toValidate = new DateBasedDummyObject(LocalDate.of(2023, MARCH, 9));
+ assertThat(toValidate).isNotNull()
+ .extracting(DateBasedDummyObject::localDate)
+ .isNotNull();
+
+ var notBeNull = new Constraint(Objects::nonNull, "not be null");
+ var validator = aValid(DateBasedDummyObject.class)
+ .must(notBeNull)
+ .must(haveNonNullField(DateBasedDummyObject::localDate), "have a non-null local date")
+ .iHaveSpoken();
+
+ assertThat(validator.constrain(toValidate)).is(CheckedTestUtils.valid());
+ }
+
+ private record DateBasedDummyObject(LocalDate localDate) {
+ }
+ }
+
+ @Nested
+ class ConstrainableUsages {
+
+ @Test
+ void checkedShouldAllowForFluentUsage_whenUsingItAsAGuard_givenInvalidObject() {
+ var validator = aValid(DateBasedDummyObject.class)
+ .must(Objects::nonNull, "not be null")
+ .must(haveNonNullField(DateBasedDummyObject::localDate), "have a non-null local date")
+ .must(this::haveAName, "have a name")
+ .iHaveSpoken();
+ var toValidate = new DateBasedDummyObject("", LocalDate.of(2023, MARCH, 9));
+ assertThat(validator.constrain(toValidate)).matches(dateBasedDummyObjectConstrainable -> !dateBasedDummyObjectConstrainable.isValid());
+
+ var result = validator.constrain(toValidate);
+
+ assertThatExceptionOfType(InvalidObjectException.class)
+ .isThrownBy(() -> result.feedback("Object should be valid"))
+ .withMessage("Object should be valid")
+ .extracting(InvalidObjectException::errors).asList()
+ .contains("FAIL: [have a name]");
+ }
+
+ private boolean haveAName(DateBasedDummyObject toCheck) {
+ return ofNullable(toCheck)
+ .map(DateBasedDummyObject::name)
+ .map(String::isBlank)
+ .map(empty -> !empty)
+ .orElse(false);
+ }
+
+ private record DateBasedDummyObject(String name, LocalDate localDate) {
+ }
+ }
+
+}
diff --git a/src/test/java/be/sddevelopment/validation/ValidationsTest.java b/src/test/java/be/sddevelopment/validation/ValidationsTest.java
index 9d0f95b..f689670 100644
--- a/src/test/java/be/sddevelopment/validation/ValidationsTest.java
+++ b/src/test/java/be/sddevelopment/validation/ValidationsTest.java
@@ -7,8 +7,33 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
+
+import static org.junit.platform.commons.util.ReflectionUtils.makeAccessible;
+import static org.junit.platform.commons.util.ReflectionUtils.newInstance;
+
@ExtendWith(SerenityJUnit5Extension.class)
class ValidationsTest implements WithAssertions {
+
+ /*
+ * This test is not strictly necessary, but it's a good way to document the fact that the class is not instantiatable.
+ * In addition, it stops the coverage metrics from complaining about it.
+ */
+ @Test
+ void utilityClassesShouldNotBeInstantiatable() throws NoSuchMethodException {
+ var constructor = Validations.class.getDeclaredConstructor();
+ assertThat(constructor).isNotNull()
+ .extracting(Constructor::getModifiers)
+ .matches(Modifier::isPrivate);
+
+ makeAccessible(constructor);
+
+ assertThatExceptionOfType(UnsupportedOperationException.class)
+ .isThrownBy(() -> newInstance(Validations.class))
+ .withMessage("Utility classes (containing shared methods or constants) should not be instantiated.");
+ }
+
@Test
@Given("an Object with a null field, having a non-null field predicate")
@Then("validation fails")
diff --git a/src/test/java/be/sddevelopment/validation/ValidatorDogfoodTest.java b/src/test/java/be/sddevelopment/validation/ValidatorDogfoodTest.java
deleted file mode 100644
index bac59cf..0000000
--- a/src/test/java/be/sddevelopment/validation/ValidatorDogfoodTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package be.sddevelopment.validation;
-
-import net.serenitybdd.junit5.SerenityJUnit5Extension;
-import org.assertj.core.api.WithAssertions;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-import java.time.LocalDate;
-import java.util.Objects;
-
-import static be.sddevelopment.validation.ModularValidator.aValid;
-import static be.sddevelopment.validation.Validations.haveNonNullField;
-import static java.time.Month.MARCH;
-
-/**
- * Tests illustrating using the validators through close-to-real examples.
- * These tests are intended to allow library developers to experience working with their own code in a practical setting,
- * getting first-hand impressions on how their API design feels to their target audience.
- */
-@ExtendWith(SerenityJUnit5Extension.class)
-class ValidatorDogfoodTest implements WithAssertions {
-
- @Test
- void modularValidatorsMustCoverBasicUsage_givenSimpleDateBasedValidationLogic() {
- var toValidate = new DateBasedDummyObject(LocalDate.of(2023, MARCH, 9));
- assertThat(toValidate).isNotNull()
- .extracting(DateBasedDummyObject::localDate)
- .isNotNull();
-
- var notBeNull = new ValidationRule(Objects::nonNull, "not be null");
- var validator = aValid(DateBasedDummyObject.class)
- .must(notBeNull)
- .must(haveNonNullField(DateBasedDummyObject::localDate), "have a non-null local date")
- .iHaveSpoken();
-
- assertThat(validator.evaluate(toValidate)).is(CheckedTestUtils.valid());
- }
-
- private record DateBasedDummyObject(LocalDate localDate) {
- }
-}