@@ -20,11 +20,59 @@ public function it_fills_items_from_id_and_attributes()
20
20
$ itemHydrator = new ItemHydrator ($ typeMapper );
21
21
$ itemDocumentBuilder = new ItemDocumentBuilder ($ itemHydrator );
22
22
23
- $ itemDocument = $ itemDocumentBuilder ->build (new Item (), $ data , 123 );
23
+ $ itemDocument = $ itemDocumentBuilder ->build (new Item (), $ data , ' 123 ' );
24
24
25
25
$ item = $ itemDocument ->getData ();
26
26
static ::assertInstanceOf (Item::class, $ item );
27
+ static ::assertEquals ($ item ->getId (), '123 ' );
27
28
static ::assertEquals ($ item ->key1 , $ data ['key1 ' ]);
28
29
static ::assertEquals ($ item ->key2 , $ data ['key2 ' ]);
29
30
}
31
+
32
+ /**
33
+ * @test
34
+ */
35
+ public function it_fills_items_without_id ()
36
+ {
37
+ $ typeMapper = new TypeMapper ();
38
+ $ itemHydrator = new ItemHydrator ($ typeMapper );
39
+ $ itemDocumentBuilder = new ItemDocumentBuilder ($ itemHydrator );
40
+
41
+ $ itemDocument = $ itemDocumentBuilder ->build (new Item (), []);
42
+
43
+ $ item = $ itemDocument ->getData ();
44
+ static ::assertInstanceOf (Item::class, $ item );
45
+ static ::assertNull ($ item ->getId ());
46
+ }
47
+
48
+ /**
49
+ * @test
50
+ * @dataProvider provideIdArguments
51
+ *
52
+ * @param $givenId
53
+ * @param $expectedId
54
+ */
55
+ public function it_fills_the_id_when_not_null_or_empty_string ($ givenId , $ expectedId )
56
+ {
57
+ $ typeMapper = new TypeMapper ();
58
+ $ itemHydrator = new ItemHydrator ($ typeMapper );
59
+ $ itemDocumentBuilder = new ItemDocumentBuilder ($ itemHydrator );
60
+
61
+ $ itemDocument = $ itemDocumentBuilder ->build (new Item (), [], $ givenId );
62
+
63
+ $ item = $ itemDocument ->getData ();
64
+ static ::assertInstanceOf (Item::class, $ item );
65
+ static ::assertSame ($ item ->getId (), $ expectedId );
66
+ }
67
+
68
+ public function provideIdArguments (): array
69
+ {
70
+ return [
71
+ ['0 ' , '0 ' ],
72
+ ['12 ' , '12 ' ],
73
+ ['foo-bar ' , 'foo-bar ' ],
74
+ [null , null ],
75
+ ['' , null ],
76
+ ];
77
+ }
30
78
}
0 commit comments