@@ -2169,3 +2169,90 @@ def test_rename_xmlid(self):
2169
2169
util .invalidate (test_view_2 )
2170
2170
self .assertIn ('t-call="base.rename_view"' , test_view_2 .arch_db )
2171
2171
self .assertIn ('t-name="base.rename_view"' , test_view_1 .arch_db )
2172
+
2173
+
2174
+ class TestAssertUpdated (UnitTestCase ):
2175
+ def test_assert_updated (self ):
2176
+ p1 = self .env ["res.partner" ].create ({"name" : "Levi" })
2177
+ p2 = self .env ["res.partner" ].create ({"name" : "Mikasa Ackerman" })
2178
+ util .flush (p1 )
2179
+ util .flush (p2 )
2180
+
2181
+ # when ids is None, assert any record is created or updated
2182
+ with self .assertUpdated ("res_partner" ):
2183
+ self .env ["res.partner" ].create ({"name" : "Sasha Braus" })
2184
+ with self .assertUpdated ("res_partner" ):
2185
+ p2 .city = "Shiganshina"
2186
+ util .flush (p2 )
2187
+ with self .assertRaises (AssertionError ), self .assertUpdated ("res_partner" ):
2188
+ pass
2189
+
2190
+ # when ids is [], assert a record is updated
2191
+ with self .assertUpdated ("res_partner" , ids = []):
2192
+ p1 .city = "Underground"
2193
+ util .flush (p1 )
2194
+ with self .assertRaises (AssertionError ), self .assertUpdated ("res_partner" , ids = []):
2195
+ self .env ["res.partner" ].create ({"name" : "Annie Leonhart" })
2196
+
2197
+ # when ids has multiple records, all records should be updated
2198
+ with self .assertUpdated ("res_partner" , ids = [p1 .id , p2 .id ]):
2199
+ p1 .company_name = "Survey Corps"
2200
+ p2 .company_name = "Survey Corps"
2201
+ util .flush (p1 )
2202
+ util .flush (p2 )
2203
+ with self .assertRaises (AssertionError ), self .assertUpdated ("res_partner" , ids = [p1 .id , p2 .id ]):
2204
+ p1 .name = "Levi Ackerman"
2205
+ util .flush (p1 )
2206
+
2207
+ # when ids has a record, that record should be the one updated
2208
+ with self .assertRaises (AssertionError ), self .assertUpdated ("res_partner" , ids = [p1 .id ]):
2209
+ p2 .city = "Paradise Island"
2210
+ util .flush (p2 )
2211
+
2212
+ def test_assert_not_updated (self ):
2213
+ p1 = self .env ["res.partner" ].create ({"name" : "Eren Yeager" })
2214
+ p2 = self .env ["res.partner" ].create ({"name" : "Armin Arlert" })
2215
+ util .flush (p1 )
2216
+ util .flush (p2 )
2217
+
2218
+ # when ids is None, assert no record is created or updated
2219
+ with self .assertNotUpdated ("res_partner" ):
2220
+ pass
2221
+ with self .assertRaises (AssertionError ), self .assertNotUpdated ("res_partner" ):
2222
+ p1 .city = "Shiganshina"
2223
+ util .flush (p1 )
2224
+ with self .assertRaises (AssertionError ), self .assertNotUpdated ("res_partner" ):
2225
+ self .env ["res.partner" ].create ({"name" : "Bertolt Hoover" })
2226
+
2227
+ # when ids is [], assert no record is updated
2228
+ with self .assertNotUpdated ("res_partner" , ids = []):
2229
+ self .env ["res.partner" ].create ({"name" : "Marco Bodt" })
2230
+ with self .assertRaises (AssertionError ), self .assertNotUpdated ("res_partner" , ids = []):
2231
+ p2 .city = "Shiganshina"
2232
+ util .flush (p2 )
2233
+
2234
+ # when ids has a record, only that record should not be updated
2235
+ with self .assertNotUpdated ("res_partner" , ids = [p2 .id ]):
2236
+ p1 .company_name = "Survey Corps"
2237
+ util .flush (p1 )
2238
+
2239
+ # when ids has multiple records, none of them should be updated
2240
+ with self .assertRaises (AssertionError ), self .assertNotUpdated ("res_partner" , ids = [p1 .id , p2 .id ]):
2241
+ p2 .company_name = "Survey Corps"
2242
+ util .flush (p2 )
2243
+
2244
+ def test_assert_updated_combo (self ):
2245
+ p1 = self .env ["res.partner" ].create ({"name" : "Reiner Braun" })
2246
+ p2 = self .env ["res.partner" ].create ({"name" : "Ymir Fritz" })
2247
+ util .flush (p1 )
2248
+ util .flush (p2 )
2249
+
2250
+ with self .assertUpdated ("res_partner" , ids = [p1 .id ]), self .assertNotUpdated ("res_partner" , ids = [p2 .id ]):
2251
+ p1 .company_name = "Marley Warriors"
2252
+ util .flush (p1 )
2253
+
2254
+ with self .assertRaises (AssertionError ), self .assertUpdated ("res_partner" ), self .assertNotUpdated (
2255
+ "res_partner" , ids = [p2 .id ]
2256
+ ):
2257
+ p2 .city = "Niflheim"
2258
+ util .flush (p2 )
0 commit comments