@@ -20,11 +20,59 @@ public function it_fills_items_from_id_and_attributes()
2020 $ itemHydrator = new ItemHydrator ($ typeMapper );
2121 $ itemDocumentBuilder = new ItemDocumentBuilder ($ itemHydrator );
2222
23- $ itemDocument = $ itemDocumentBuilder ->build (new Item (), $ data , 123 );
23+ $ itemDocument = $ itemDocumentBuilder ->build (new Item (), $ data , ' 123 ' );
2424
2525 $ item = $ itemDocument ->getData ();
2626 static ::assertInstanceOf (Item::class, $ item );
27+ static ::assertEquals ($ item ->getId (), '123 ' );
2728 static ::assertEquals ($ item ->key1 , $ data ['key1 ' ]);
2829 static ::assertEquals ($ item ->key2 , $ data ['key2 ' ]);
2930 }
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+ }
3078}
0 commit comments