Skip to content

Commit ae343b4

Browse files
Refactor tests to use ClassDescriptionBuilder instead of new ClassDescription (#459)
if we keep the knowledge of how to create an instance of ClassDesrciption inside ClassDescriptionBuilder we can evolve the former easily.
1 parent bb5a7e7 commit ae343b4

26 files changed

+397
-862
lines changed

tests/Unit/Expressions/ForClasses/ContainDocBlockLikeTest.php

+11-55
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
namespace Arkitect\Tests\Unit\Expressions\ForClasses;
66

7-
use Arkitect\Analyzer\ClassDescription;
8-
use Arkitect\Analyzer\FullyQualifiedClassName;
7+
use Arkitect\Analyzer\ClassDescriptionBuilder;
98
use Arkitect\Expression\ForClasses\ContainDocBlockLike;
109
use Arkitect\Rules\Violations;
1110
use PHPUnit\Framework\TestCase;
@@ -16,19 +15,11 @@ public function test_it_should_return_true_if_contains_doc_block(): void
1615
{
1716
$expression = new ContainDocBlockLike('myDocBlock');
1817

19-
$classDescription = new ClassDescription(
20-
FullyQualifiedClassName::fromString('HappyIsland\Myclass'),
21-
[],
22-
[],
23-
null,
24-
false,
25-
false,
26-
false,
27-
false,
28-
false,
29-
false,
30-
['/** */myDocBlock with other information']
31-
);
18+
$classDescription = (new ClassDescriptionBuilder())
19+
->setClassName('HappyIsland\Myclass')
20+
->addDocBlock('/** */myDocBlock with other information')
21+
->build();
22+
3223
$because = 'we want to add this rule for our software';
3324
$violations = new Violations();
3425
$expression->evaluate($classDescription, $violations, $because);
@@ -40,50 +31,15 @@ public function test_it_should_return_true_if_contains_doc_block(): void
4031
);
4132
}
4233

43-
public function test_it_should_return_true_if_contains_doc_block_without_because(): void
44-
{
45-
$expression = new ContainDocBlockLike('myDocBlock');
46-
47-
$classDescription = new ClassDescription(
48-
FullyQualifiedClassName::fromString('HappyIsland\Myclass'),
49-
[],
50-
[],
51-
null,
52-
false,
53-
false,
54-
false,
55-
false,
56-
false,
57-
false,
58-
['/** */myDocBlock with other information']
59-
);
60-
$violations = new Violations();
61-
$expression->evaluate($classDescription, $violations, '');
62-
63-
self::assertEquals(0, $violations->count());
64-
self::assertEquals(
65-
'should have a doc block that contains myDocBlock',
66-
$expression->describe($classDescription, '')->toString()
67-
);
68-
}
69-
7034
public function test_it_should_return_false_if_not_contains_doc_block(): void
7135
{
7236
$expression = new ContainDocBlockLike('anotherDocBlock');
7337

74-
$classDescription = new ClassDescription(
75-
FullyQualifiedClassName::fromString('HappyIsland\Myclass'),
76-
[],
77-
[],
78-
null,
79-
false,
80-
false,
81-
false,
82-
false,
83-
false,
84-
false,
85-
['/** */myDocBlock with other information']
86-
);
38+
$classDescription = (new ClassDescriptionBuilder())
39+
->setClassName('HappyIsland\Myclass')
40+
->addDocBlock('/** */myDocBlock with other information')
41+
->build();
42+
8743
$because = 'we want to add this rule for our software';
8844
$violations = new Violations();
8945
$expression->evaluate($classDescription, $violations, $because);

tests/Unit/Expressions/ForClasses/DependsOnlyOnTheseNamespacesTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public function test_it_should_return_true_if_it_has_no_dependencies(): void
1717
$dependOnClasses = new DependsOnlyOnTheseNamespaces('myNamespace');
1818

1919
$classDescription = ClassDescription::getBuilder('HappyIsland\Myclass')->build();
20+
2021
$because = 'we want to add this rule for our software';
2122
$violations = new Violations();
2223
$dependOnClasses->evaluate($classDescription, $violations, $because);

tests/Unit/Expressions/ForClasses/ExtendTest.php

+3-14
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44

55
namespace Arkitect\Tests\Unit\Expressions\ForClasses;
66

7-
use Arkitect\Analyzer\ClassDescription;
87
use Arkitect\Analyzer\ClassDescriptionBuilder;
9-
use Arkitect\Analyzer\FullyQualifiedClassName;
108
use Arkitect\Expression\ForClasses\Extend;
119
use Arkitect\Rules\Violations;
1210
use PHPUnit\Framework\TestCase;
@@ -77,18 +75,9 @@ public function test_it_should_return_violation_error_if_extend_is_null(): void
7775
{
7876
$extend = new Extend('My\BaseClass');
7977

80-
$classDescription = new ClassDescription(
81-
FullyQualifiedClassName::fromString('HappyIsland'),
82-
[],
83-
[],
84-
null,
85-
false,
86-
false,
87-
false,
88-
false,
89-
false,
90-
false
91-
);
78+
$classDescription = (new ClassDescriptionBuilder())
79+
->setClassName('HappyIsland')
80+
->build();
9281

9382
$because = 'we want to add this rule for our software';
9483
$violationError = $extend->describe($classDescription, $because)->toString();

tests/Unit/Expressions/ForClasses/HaveAttributeTest.php

+16-44
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
namespace Arkitect\Tests\Unit\Expressions\ForClasses;
66

7-
use Arkitect\Analyzer\ClassDescription;
8-
use Arkitect\Analyzer\FullyQualifiedClassName;
7+
use Arkitect\Analyzer\ClassDescriptionBuilder;
98
use Arkitect\Expression\ForClasses\HaveAttribute;
109
use Arkitect\Rules\Violations;
1110
use PHPUnit\Framework\TestCase;
@@ -16,20 +15,11 @@ public function test_it_should_return_true_if_contains_doc_block(): void
1615
{
1716
$expression = new HaveAttribute('myAttribute');
1817

19-
$classDescription = new ClassDescription(
20-
FullyQualifiedClassName::fromString('HappyIsland\Myclass'),
21-
[],
22-
[],
23-
null,
24-
false,
25-
false,
26-
false,
27-
false,
28-
false,
29-
false,
30-
[],
31-
[FullyQualifiedClassName::fromString('myAttribute')]
32-
);
18+
$classDescription = (new ClassDescriptionBuilder())
19+
->setClassName('HappyIsland\Myclass')
20+
->addAttribute('myAttribute', 1)
21+
->build();
22+
3323
$because = 'we want to add this rule for our software';
3424
$violations = new Violations();
3525
$expression->evaluate($classDescription, $violations, $because);
@@ -45,20 +35,11 @@ public function test_it_should_return_true_if_contains_doc_block_without_because
4535
{
4636
$expression = new HaveAttribute('myAttribute');
4737

48-
$classDescription = new ClassDescription(
49-
FullyQualifiedClassName::fromString('HappyIsland\Myclass'),
50-
[],
51-
[],
52-
null,
53-
false,
54-
false,
55-
false,
56-
false,
57-
false,
58-
false,
59-
[],
60-
[FullyQualifiedClassName::fromString('myAttribute')]
61-
);
38+
$classDescription = (new ClassDescriptionBuilder())
39+
->setClassName('HappyIsland\Myclass')
40+
->addAttribute('myAttribute', 1)
41+
->build();
42+
6243
$violations = new Violations();
6344
$expression->evaluate($classDescription, $violations, '');
6445

@@ -73,20 +54,11 @@ public function test_it_should_return_false_if_not_contains_doc_block(): void
7354
{
7455
$expression = new HaveAttribute('anotherAttribute');
7556

76-
$classDescription = new ClassDescription(
77-
FullyQualifiedClassName::fromString('HappyIsland\Myclass'),
78-
[],
79-
[],
80-
null,
81-
false,
82-
false,
83-
false,
84-
false,
85-
false,
86-
false,
87-
[],
88-
[FullyQualifiedClassName::fromString('myAttribute')]
89-
);
57+
$classDescription = (new ClassDescriptionBuilder())
58+
->setClassName('HappyIsland\Myclass')
59+
->addAttribute('myAttribute', 1)
60+
->build();
61+
9062
$because = 'we want to add this rule for our software';
9163
$violations = new Violations();
9264
$expression->evaluate($classDescription, $violations, $because);

tests/Unit/Expressions/ForClasses/HaveNameMatchingTest.php

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public function test_check_class_name_match(): void
1515
$expression = new HaveNameMatching('*Class');
1616

1717
$goodClass = ClassDescription::getBuilder('\App\MyClass')->build();
18+
1819
$because = 'we want to add this rule for our software';
1920
$violations = new Violations();
2021
$expression->evaluate($goodClass, $violations, $because);
@@ -26,6 +27,7 @@ public function test_show_violation_when_class_name_does_not_match(): void
2627
$expression = new HaveNameMatching('*GoodName*');
2728

2829
$badClass = ClassDescription::getBuilder('\App\BadNameClass')->build();
30+
2931
$because = 'we want to add this rule for our software';
3032
$violations = new Violations();
3133
$expression->evaluate($badClass, $violations, $because);

0 commit comments

Comments
 (0)