@@ -26,52 +26,96 @@ public function setUp(): void
26
26
27
27
public function testPersistNew (): void
28
28
{
29
- $ doc = new TypedDocument ();
30
- $ doc ->setName ('Maciej ' );
31
- $ doc ->setEmbedOne (new TypedEmbeddedDocument ('The answer ' , 42 ));
29
+ $ ref = new TypedDocument ();
30
+ $ ref ->name = 'alcaeus ' ;
31
+ $ this ->dm ->persist ($ ref );
32
+
33
+ $ doc = new TypedDocument ();
34
+ $ doc ->name = 'Maciej ' ;
35
+ $ doc ->embedOne = new TypedEmbeddedDocument ('The answer ' , 42 );
36
+ $ doc ->referenceOne = $ ref ;
32
37
$ doc ->getEmbedMany ()->add (new TypedEmbeddedDocument ('Lucky number ' , 7 ));
33
38
$ this ->dm ->persist ($ doc );
34
39
$ this ->dm ->flush ();
35
40
$ this ->dm ->clear ();
36
41
37
- $ saved = $ this ->dm ->find (TypedDocument::class, $ doc ->getId ());
42
+ $ ref = $ this ->dm ->find (TypedDocument::class, $ ref ->id );
43
+ $ saved = $ this ->dm ->find (TypedDocument::class, $ doc ->id );
38
44
assert ($ saved instanceof TypedDocument);
39
- $ this ->assertEquals ($ doc ->getId (), $ saved ->getId ());
40
- $ this ->assertSame ($ doc ->getName (), $ saved ->getName ());
41
- $ this ->assertEquals ($ doc ->getEmbedOne (), $ saved ->getEmbedOne ());
45
+ $ this ->assertEquals ($ doc ->id , $ saved ->id );
46
+ $ this ->assertSame ($ doc ->name , $ saved ->name );
47
+ $ this ->assertEquals ($ doc ->embedOne , $ saved ->embedOne );
48
+ $ this ->assertSame ($ ref , $ saved ->referenceOne );
42
49
$ this ->assertEquals ($ doc ->getEmbedMany ()->getValues (), $ saved ->getEmbedMany ()->getValues ());
43
50
}
44
51
45
52
public function testMerge (): void
46
53
{
47
- $ doc = new TypedDocument ();
48
- $ doc ->setId ((string ) new ObjectId ());
49
- $ doc ->setName ('Maciej ' );
50
- $ doc ->setEmbedOne (new TypedEmbeddedDocument ('The answer ' , 42 ));
54
+ $ ref = new TypedDocument ();
55
+ $ ref ->name = 'alcaeus ' ;
56
+ $ this ->dm ->persist ($ ref );
57
+
58
+ $ doc = new TypedDocument ();
59
+ $ doc ->id = (string ) new ObjectId ();
60
+ $ doc ->name = 'Maciej ' ;
61
+ $ doc ->embedOne = new TypedEmbeddedDocument ('The answer ' , 42 );
62
+ $ doc ->referenceOne = $ ref ;
63
+ $ doc ->getEmbedMany ()->add (new TypedEmbeddedDocument ('Lucky number ' , 7 ));
64
+
65
+ $ merged = $ this ->dm ->merge ($ doc );
66
+ assert ($ merged instanceof TypedDocument);
67
+ $ this ->assertEquals ($ doc ->id , $ merged ->id );
68
+ $ this ->assertSame ($ doc ->name , $ merged ->name );
69
+ $ this ->assertEquals ($ doc ->embedOne , $ merged ->embedOne );
70
+ $ this ->assertEquals ($ doc ->referenceOne , $ merged ->referenceOne );
71
+ $ this ->assertEquals ($ doc ->getEmbedMany ()->getValues (), $ merged ->getEmbedMany ()->getValues ());
72
+ }
73
+
74
+ public function testMergeWithUninitializedAssociations (): void
75
+ {
76
+ $ doc = new TypedDocument ();
77
+ $ doc ->id = (string ) new ObjectId ();
78
+ $ doc ->name = 'Maciej ' ;
51
79
$ doc ->getEmbedMany ()->add (new TypedEmbeddedDocument ('Lucky number ' , 7 ));
52
80
53
81
$ merged = $ this ->dm ->merge ($ doc );
54
- $ this -> assertEquals ( $ doc -> getId (), $ merged-> getId () );
55
- $ this ->assertSame ($ doc ->getName () , $ merged ->getName () );
56
- $ this ->assertEquals ($ doc ->getEmbedOne () , $ merged ->getEmbedOne () );
82
+ assert ( $ merged instanceof TypedDocument );
83
+ $ this ->assertEquals ($ doc ->id , $ merged ->id );
84
+ $ this ->assertSame ($ doc ->name , $ merged ->name );
57
85
$ this ->assertEquals ($ doc ->getEmbedMany ()->getValues (), $ merged ->getEmbedMany ()->getValues ());
58
86
}
59
87
60
88
public function testProxying (): void
61
89
{
62
- $ doc = new TypedDocument ();
63
- $ doc ->setName ( 'Maciej ' ) ;
64
- $ doc ->setEmbedOne ( new TypedEmbeddedDocument ('The answer ' , 42 ) );
90
+ $ doc = new TypedDocument ();
91
+ $ doc ->name = 'Maciej ' ;
92
+ $ doc ->embedOne = new TypedEmbeddedDocument ('The answer ' , 42 );
65
93
$ doc ->getEmbedMany ()->add (new TypedEmbeddedDocument ('Lucky number ' , 7 ));
66
94
$ this ->dm ->persist ($ doc );
67
95
$ this ->dm ->flush ();
68
96
$ this ->dm ->clear ();
69
97
70
- $ proxy = $ this ->dm ->getReference (TypedDocument::class, $ doc ->getId () );
98
+ $ proxy = $ this ->dm ->getReference (TypedDocument::class, $ doc ->id );
71
99
assert ($ proxy instanceof TypedDocument);
72
- $ this ->assertEquals ($ doc ->getId () , $ proxy ->getId () );
73
- $ this ->assertSame ($ doc ->getName () , $ proxy ->getName () );
74
- $ this ->assertEquals ($ doc ->getEmbedOne () , $ proxy ->getEmbedOne () );
100
+ $ this ->assertEquals ($ doc ->id , $ proxy ->id );
101
+ $ this ->assertSame ($ doc ->name , $ proxy ->name );
102
+ $ this ->assertEquals ($ doc ->embedOne , $ proxy ->embedOne );
75
103
$ this ->assertEquals ($ doc ->getEmbedMany ()->getValues (), $ proxy ->getEmbedMany ()->getValues ());
76
104
}
105
+
106
+ public function testNullableProperties (): void
107
+ {
108
+ $ doc = new TypedDocument ();
109
+ $ doc ->name = 'webmozart ' ;
110
+ $ this ->dm ->persist ($ doc );
111
+ $ this ->dm ->flush ();
112
+ $ this ->dm ->clear ();
113
+
114
+ $ saved = $ this ->dm ->find (TypedDocument::class, $ doc ->id );
115
+ assert ($ saved instanceof TypedDocument);
116
+ $ this ->assertNull ($ saved ->nullableEmbedOne );
117
+ $ this ->assertNull ($ saved ->initializedNullableEmbedOne );
118
+ $ this ->assertNull ($ saved ->nullableReferenceOne );
119
+ $ this ->assertNull ($ saved ->initializedNullableReferenceOne );
120
+ }
77
121
}
0 commit comments