Skip to content

Commit 436adb5

Browse files
committed
Use factory method in DocumentParserTest
1 parent 87643e9 commit 436adb5

File tree

1 file changed

+21
-44
lines changed

1 file changed

+21
-44
lines changed

tests/Parsers/DocumentParserTest.php

Lines changed: 21 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,7 @@
1414
use Swis\JsonApi\Client\Link;
1515
use Swis\JsonApi\Client\Links;
1616
use Swis\JsonApi\Client\Meta;
17-
use Swis\JsonApi\Client\Parsers\CollectionParser;
1817
use Swis\JsonApi\Client\Parsers\DocumentParser;
19-
use Swis\JsonApi\Client\Parsers\ErrorCollectionParser;
20-
use Swis\JsonApi\Client\Parsers\ErrorParser;
21-
use Swis\JsonApi\Client\Parsers\ItemParser;
22-
use Swis\JsonApi\Client\Parsers\JsonapiParser;
23-
use Swis\JsonApi\Client\Parsers\LinksParser;
24-
use Swis\JsonApi\Client\Parsers\MetaParser;
2518
use Swis\JsonApi\Client\Tests\AbstractTest;
2619
use Swis\JsonApi\Client\Tests\Mocks\Items\ChildItem;
2720
use Swis\JsonApi\Client\Tests\Mocks\Items\MasterItem;
@@ -42,7 +35,7 @@ public function it_can_create_an_instance_using_a_factory_method()
4235
*/
4336
public function it_converts_jsondocument_to_document()
4437
{
45-
$parser = $this->getDocumentParser();
38+
$parser = DocumentParser::create();
4639
$document = $parser->parse(
4740
json_encode(
4841
[
@@ -59,7 +52,7 @@ public function it_converts_jsondocument_to_document()
5952
*/
6053
public function it_throws_when_json_is_not_valid()
6154
{
62-
$parser = $this->getDocumentParser();
55+
$parser = DocumentParser::create();
6356

6457
$this->expectException(ValidationException::class);
6558
$this->expectExceptionMessage('Unable to parse JSON data: Malformed UTF-8 characters, possibly incorrectly encoded');
@@ -75,7 +68,7 @@ public function it_throws_when_json_is_not_valid()
7568
*/
7669
public function it_throws_when_json_is_not_a_jsonapi_document(string $invalidJson)
7770
{
78-
$parser = $this->getDocumentParser();
71+
$parser = DocumentParser::create();
7972

8073
$this->expectException(ValidationException::class);
8174
$this->expectExceptionMessage(sprintf('Document MUST be an object, "%s" given.', gettype(json_decode($invalidJson, false))));
@@ -100,7 +93,7 @@ public function provideInvalidJson(): array
10093
*/
10194
public function it_throws_when_data_errors_and_meta_are_missing()
10295
{
103-
$parser = $this->getDocumentParser();
96+
$parser = DocumentParser::create();
10497

10598
$this->expectException(ValidationException::class);
10699
$this->expectExceptionMessage('Document MUST contain at least one of the following properties: `data`, `errors`, `meta`.');
@@ -113,7 +106,7 @@ public function it_throws_when_data_errors_and_meta_are_missing()
113106
*/
114107
public function it_throws_when_both_data_and_errors_are_present()
115108
{
116-
$parser = $this->getDocumentParser();
109+
$parser = DocumentParser::create();
117110

118111
$this->expectException(ValidationException::class);
119112
$this->expectExceptionMessage('The properties `data` and `errors` MUST NOT coexist in Document.');
@@ -126,7 +119,7 @@ public function it_throws_when_both_data_and_errors_are_present()
126119
*/
127120
public function it_throws_when_included_is_present_but_data_is_not()
128121
{
129-
$parser = $this->getDocumentParser();
122+
$parser = DocumentParser::create();
130123

131124
$this->expectException(ValidationException::class);
132125
$this->expectExceptionMessage('If Document does not contain a `data` property, the `included` property MUST NOT be present either.');
@@ -142,7 +135,7 @@ public function it_throws_when_included_is_present_but_data_is_not()
142135
*/
143136
public function it_throws_when_data_is_not_an_array_object_or_null($invalidData)
144137
{
145-
$parser = $this->getDocumentParser();
138+
$parser = DocumentParser::create();
146139

147140
$this->expectException(ValidationException::class);
148141
$this->expectExceptionMessage(sprintf('Document property "data" MUST be null, an array or an object, "%s" given.', gettype(json_decode($invalidData, false)->data)));
@@ -168,7 +161,7 @@ public function provideInvalidData(): array
168161
*/
169162
public function it_throws_when_included_is_not_an_array($invalidIncluded)
170163
{
171-
$parser = $this->getDocumentParser();
164+
$parser = DocumentParser::create();
172165

173166
$this->expectException(ValidationException::class);
174167
$this->expectExceptionMessage(sprintf('Document property "included" MUST be an array, "%s" given.', gettype(json_decode($invalidIncluded, false)->included)));
@@ -193,7 +186,7 @@ public function provideInvalidIncluded(): array
193186
*/
194187
public function it_throws_when_it_finds_duplicate_resources()
195188
{
196-
$parser = $this->getDocumentParser();
189+
$parser = DocumentParser::create();
197190

198191
$this->expectException(ValidationException::class);
199192
$this->expectExceptionMessage('Resources MUST be unique based on their `type` and `id`, 1 duplicate(s) found.');
@@ -229,7 +222,7 @@ public function it_throws_when_it_finds_duplicate_resources()
229222
*/
230223
public function it_parses_a_resource_document()
231224
{
232-
$parser = $this->getDocumentParser();
225+
$parser = DocumentParser::create();
233226
$document = $parser->parse(
234227
json_encode(
235228
[
@@ -255,7 +248,7 @@ public function it_parses_a_resource_document()
255248
*/
256249
public function it_parses_a_resource_collection_document()
257250
{
258-
$parser = $this->getDocumentParser();
251+
$parser = DocumentParser::create();
259252
$document = $parser->parse(
260253
json_encode(
261254
[
@@ -284,7 +277,7 @@ public function it_parses_a_resource_collection_document()
284277
*/
285278
public function it_parses_a_document_without_data()
286279
{
287-
$parser = $this->getDocumentParser();
280+
$parser = DocumentParser::create();
288281
$document = $parser->parse(
289282
json_encode(
290283
[
@@ -303,7 +296,7 @@ public function it_parses_a_document_without_data()
303296
*/
304297
public function it_parses_included()
305298
{
306-
$parser = $this->getDocumentParser();
299+
$parser = DocumentParser::create();
307300
$document = $parser->parse(
308301
json_encode(
309302
[
@@ -336,7 +329,7 @@ public function it_links_singular_relations_to_items_from_included()
336329
$typeMapper = new TypeMapper();
337330
$typeMapper->setMapping('master', MasterItem::class);
338331
$typeMapper->setMapping('child', ChildItem::class);
339-
$parser = $this->getDocumentParser($typeMapper);
332+
$parser = DocumentParser::create($typeMapper);
340333

341334
$document = $parser->parse(
342335
json_encode(
@@ -382,7 +375,7 @@ public function it_does_not_link_empty_singular_relations()
382375
$typeMapper = new TypeMapper();
383376
$typeMapper->setMapping('master', MasterItem::class);
384377
$typeMapper->setMapping('child', ChildItem::class);
385-
$parser = $this->getDocumentParser($typeMapper);
378+
$parser = DocumentParser::create($typeMapper);
386379

387380
$document = $parser->parse(
388381
json_encode(
@@ -425,7 +418,7 @@ public function it_links_plural_relations_to_items_from_included()
425418
$typeMapper = new TypeMapper();
426419
$typeMapper->setMapping('master', MasterItem::class);
427420
$typeMapper->setMapping('child', ChildItem::class);
428-
$parser = $this->getDocumentParser($typeMapper);
421+
$parser = DocumentParser::create($typeMapper);
429422

430423
$document = $parser->parse(
431424
json_encode(
@@ -486,7 +479,7 @@ public function it_does_not_link_empty_plural_relations()
486479
$typeMapper = new TypeMapper();
487480
$typeMapper->setMapping('master', MasterItem::class);
488481
$typeMapper->setMapping('child', ChildItem::class);
489-
$parser = $this->getDocumentParser($typeMapper);
482+
$parser = DocumentParser::create($typeMapper);
490483

491484
$document = $parser->parse(
492485
json_encode(
@@ -535,7 +528,7 @@ public function it_does_not_link_empty_plural_relations()
535528
*/
536529
public function it_parses_links()
537530
{
538-
$parser = $this->getDocumentParser();
531+
$parser = DocumentParser::create();
539532

540533
$document = $parser->parse(
541534
json_encode(
@@ -558,7 +551,7 @@ public function it_parses_links()
558551
*/
559552
public function it_parses_errors()
560553
{
561-
$parser = $this->getDocumentParser();
554+
$parser = DocumentParser::create();
562555

563556
$document = $parser->parse(
564557
json_encode(
@@ -583,7 +576,7 @@ public function it_parses_errors()
583576
*/
584577
public function it_parses_meta()
585578
{
586-
$parser = $this->getDocumentParser();
579+
$parser = DocumentParser::create();
587580

588581
$document = $parser->parse(
589582
json_encode(
@@ -606,7 +599,7 @@ public function it_parses_meta()
606599
*/
607600
public function it_parses_jsonapi()
608601
{
609-
$parser = $this->getDocumentParser();
602+
$parser = DocumentParser::create();
610603

611604
$document = $parser->parse(
612605
json_encode(
@@ -623,20 +616,4 @@ public function it_parses_jsonapi()
623616

624617
static::assertEquals(new Jsonapi('1.0'), $document->getJsonapi());
625618
}
626-
627-
private function getDocumentParser(TypeMapper $typeMapper = null): DocumentParser
628-
{
629-
$metaParser = new MetaParser();
630-
$linksParser = new LinksParser($metaParser);
631-
$itemParser = new ItemParser($typeMapper ?? new TypeMapper(), $linksParser, $metaParser);
632-
633-
return new DocumentParser(
634-
$itemParser,
635-
new CollectionParser($itemParser),
636-
new ErrorCollectionParser(new ErrorParser($linksParser, $metaParser)),
637-
$linksParser,
638-
new JsonapiParser($metaParser),
639-
$metaParser
640-
);
641-
}
642619
}

0 commit comments

Comments
 (0)