1414
1515namespace JsonApiPhp \JsonApi \Test \Document \Resource \Relationship ;
1616
17+ use JsonApiPhp \JsonApi \Document \Resource \NullData ;
1718use JsonApiPhp \JsonApi \Document \Resource \Relationship \Linkage ;
1819use JsonApiPhp \JsonApi \Document \Resource \ResourceId ;
1920use JsonApiPhp \JsonApi \Test \HasAssertEqualsAsJson ;
21+ use phpDocumentor \Reflection \DocBlock \Tags \Link ;
2022use PHPUnit \Framework \TestCase ;
2123
2224class LinkageTest extends TestCase
2325{
2426 use HasAssertEqualsAsJson;
2527
26- public function testNullLinkage ()
28+ public function testCanCreateNullLinkage ()
2729 {
2830 $ this ->assertEqualsAsJson (
2931 null ,
3032 Linkage::nullLinkage ()
3133 );
3234 }
3335
34- public function testEmptyArrayLinkage ()
36+ public function testCanCreateEmptyArrayLinkage ()
3537 {
3638 $ this ->assertEqualsAsJson (
3739 [],
3840 Linkage::emptyArrayLinkage ()
3941 );
4042 }
4143
42- public function testFromResourceId ()
44+ public function testCanCreateFromResourceId ()
4345 {
4446 $ this ->assertEqualsAsJson (
4547 [
@@ -50,7 +52,7 @@ public function testFromResourceId()
5052 );
5153 }
5254
53- public function testFromResourceIds ()
55+ public function testCanCreateFromResourceIds ()
5456 {
5557 $ this ->assertEqualsAsJson (
5658 [
@@ -66,4 +68,42 @@ public function testFromResourceIds()
6668 Linkage::fromManyResourceIds (new ResourceId ('books ' , 'abc ' ), new ResourceId ('squirrels ' , '123 ' ))
6769 );
6870 }
71+
72+ public function testNullLinkageIsLinkedToNothing ()
73+ {
74+ $ apple = new ResourceId ('apples ' , '1 ' );
75+ $ this ->assertFalse (Linkage::nullLinkage ()->isLinkedTo ($ apple ));
76+ $ this ->assertFalse (Linkage::nullLinkage ()->isLinkedTo (new NullData ));
77+ }
78+
79+ public function testEmptyArrayLinkageIsLinkedToNothing ()
80+ {
81+ $ apple = new ResourceId ('apples ' , '1 ' );
82+ $ this ->assertFalse (Linkage::emptyArrayLinkage ()->isLinkedTo ($ apple ));
83+ $ this ->assertFalse (Linkage::emptyArrayLinkage ()->isLinkedTo (new NullData ));
84+ }
85+
86+ public function testSingleLinkageIsLinkedOnlyToItself ()
87+ {
88+ $ apple = new ResourceId ('apples ' , '1 ' );
89+ $ orange = new ResourceId ('oranges ' , '1 ' );
90+
91+ $ linkage = Linkage::fromSingleResourceId ($ apple );
92+
93+ $ this ->assertTrue ($ linkage ->isLinkedTo ($ apple ));
94+ $ this ->assertFalse ($ linkage ->isLinkedTo ($ orange ));
95+ }
96+
97+ public function testMultiLinkageIsLinkedOnlyToItsMembers ()
98+ {
99+ $ apple = new ResourceId ('apples ' , '1 ' );
100+ $ orange = new ResourceId ('oranges ' , '1 ' );
101+ $ banana = new ResourceId ('bananas ' , '1 ' );
102+
103+ $ linkage = Linkage::fromManyResourceIds ($ apple , $ orange );
104+
105+ $ this ->assertTrue ($ linkage ->isLinkedTo ($ apple ));
106+ $ this ->assertTrue ($ linkage ->isLinkedTo ($ orange ));
107+ $ this ->assertFalse ($ linkage ->isLinkedTo ($ banana ));
108+ }
69109}
0 commit comments