@@ -1080,4 +1080,60 @@ public function testBeforeSaveStopEvent() {
1080
1080
$ this ->assertNull ($ row );
1081
1081
}
1082
1082
1083
+ /**
1084
+ * Asserts that afterSave callback is called on successful save
1085
+ *
1086
+ * @return void
1087
+ */
1088
+ public function testAfterSave () {
1089
+ $ table = Table::build ('users ' );
1090
+ $ data = new \Cake \ORM \Entity ([
1091
+ 'username ' => 'superuser ' ,
1092
+ 'created ' => new \DateTime ('2013-10-10 00:00 ' ),
1093
+ 'updated ' => new \DateTime ('2013-10-10 00:00 ' )
1094
+ ]);
1095
+
1096
+ $ called = false ;
1097
+ $ listener = function ($ e , $ entity , $ options ) use ($ data , &$ called ) {
1098
+ $ this ->assertSame ($ data , $ entity );
1099
+ $ called = true ;
1100
+ };
1101
+ $ table ->getEventManager ()->attach ($ listener , 'Model.afterSave ' );
1102
+ $ this ->assertSame ($ data , $ table ->save ($ data ));
1103
+ $ this ->assertEquals ($ data ->id , 5 );
1104
+ $ this ->assertTrue ($ called );
1105
+ }
1106
+
1107
+ /**
1108
+ * Asserts that afterSave callback not is called on unsuccessful save
1109
+ *
1110
+ * @return void
1111
+ */
1112
+ public function testAfterSaveNotCalled () {
1113
+ $ table = $ this ->getMock ('\Cake\ORM\Table ' , ['_buildQuery ' ], [['table ' => 'users ' ]]);
1114
+ $ query = $ this ->getMock ('\Cake\ORM\Query ' , ['executeStatement ' ], [null , $ table ]);
1115
+ $ statement = $ this ->getMock ('\Cake\Database\Statement\StatementDecorator ' );
1116
+ $ data = new \Cake \ORM \Entity ([
1117
+ 'username ' => 'superuser ' ,
1118
+ 'created ' => new \DateTime ('2013-10-10 00:00 ' ),
1119
+ 'updated ' => new \DateTime ('2013-10-10 00:00 ' )
1120
+ ]);
1121
+
1122
+ $ table ->expects ($ this ->once ())->method ('_buildQuery ' )
1123
+ ->will ($ this ->returnValue ($ query ));
1124
+
1125
+ $ query ->expects ($ this ->once ())->method ('executeStatement ' )
1126
+ ->will ($ this ->returnValue ($ statement ));
1127
+
1128
+ $ statement ->expects ($ this ->once ())->method ('rowCount ' )->will ($ this ->returnValue (0 ));
1129
+
1130
+ $ called = false ;
1131
+ $ listener = function ($ e , $ entity , $ options ) use ($ data , &$ called ) {
1132
+ $ called = true ;
1133
+ };
1134
+ $ table ->getEventManager ()->attach ($ listener , 'Model.afterSave ' );
1135
+ $ this ->assertFalse ($ table ->save ($ data ));
1136
+ $ this ->assertFalse ($ called );
1137
+ }
1138
+
1083
1139
}
0 commit comments