@@ -61,6 +61,30 @@ public function test_casts_are_respected_on_attach()
6161 $ this ->assertEquals (['foo ' => 'bar ' ], $ project ->collaborators [0 ]->pivot ->permissions );
6262 }
6363
64+ public function test_casts_are_respected_on_attach_array ()
65+ {
66+ $ user = CustomPivotCastTestUser::forceCreate ([
67+ 68+ ]);
69+
70+ $ user2 = CustomPivotCastTestUser::forceCreate ([
71+ 72+ ]);
73+
74+ $ project = CustomPivotCastTestProject::forceCreate ([
75+ 'name ' => 'Test Project ' ,
76+ ]);
77+
78+ $ project ->collaborators ()->attach ([
79+ $ user ->id => ['permissions ' => ['foo ' => 'bar ' ]],
80+ $ user2 ->id => ['permissions ' => ['baz ' => 'bar ' ]],
81+ ]);
82+ $ project = $ project ->fresh ();
83+
84+ $ this ->assertEquals (['foo ' => 'bar ' ], $ project ->collaborators [0 ]->pivot ->permissions );
85+ $ this ->assertEquals (['baz ' => 'bar ' ], $ project ->collaborators [1 ]->pivot ->permissions );
86+ }
87+
6488 public function test_casts_are_respected_on_sync ()
6589 {
6690 $ user = CustomPivotCastTestUser::forceCreate ([
@@ -76,6 +100,60 @@ public function test_casts_are_respected_on_sync()
76100
77101 $ this ->assertEquals (['foo ' => 'bar ' ], $ project ->collaborators [0 ]->pivot ->permissions );
78102 }
103+
104+ public function test_casts_are_respected_on_sync_array ()
105+ {
106+ $ user = CustomPivotCastTestUser::forceCreate ([
107+ 108+ ]);
109+
110+ $ user2 = CustomPivotCastTestUser::forceCreate ([
111+ 112+ ]);
113+
114+ $ project = CustomPivotCastTestProject::forceCreate ([
115+ 'name ' => 'Test Project ' ,
116+ ]);
117+
118+ $ project ->collaborators ()->sync ([
119+ $ user ->id => ['permissions ' => ['foo ' => 'bar ' ]],
120+ $ user2 ->id => ['permissions ' => ['baz ' => 'bar ' ]],
121+ ]);
122+ $ project = $ project ->fresh ();
123+
124+ $ this ->assertEquals (['foo ' => 'bar ' ], $ project ->collaborators [0 ]->pivot ->permissions );
125+ $ this ->assertEquals (['baz ' => 'bar ' ], $ project ->collaborators [1 ]->pivot ->permissions );
126+ }
127+
128+ public function test_casts_are_respected_on_sync_array_while_updating_existing ()
129+ {
130+ $ user = CustomPivotCastTestUser::forceCreate ([
131+ 132+ ]);
133+
134+ $ user2 = CustomPivotCastTestUser::forceCreate ([
135+ 136+ ]);
137+
138+ $ project = CustomPivotCastTestProject::forceCreate ([
139+ 'name ' => 'Test Project ' ,
140+ ]);
141+
142+ $ project ->collaborators ()->attach ([
143+ $ user ->id => ['permissions ' => ['foo ' => 'bar ' ]],
144+ $ user2 ->id => ['permissions ' => ['baz ' => 'bar ' ]],
145+ ]);
146+
147+ $ project ->collaborators ()->sync ([
148+ $ user ->id => ['permissions ' => ['foo1 ' => 'bar1 ' ]],
149+ $ user2 ->id => ['permissions ' => ['baz2 ' => 'bar2 ' ]],
150+ ]);
151+
152+ $ project = $ project ->fresh ();
153+
154+ $ this ->assertEquals (['foo1 ' => 'bar1 ' ], $ project ->collaborators [0 ]->pivot ->permissions );
155+ $ this ->assertEquals (['baz2 ' => 'bar2 ' ], $ project ->collaborators [1 ]->pivot ->permissions );
156+ }
79157}
80158
81159class CustomPivotCastTestUser extends Model
0 commit comments