@@ -281,6 +281,45 @@ func Test_ItemEqualStringer(t *testing.T) {
281281
282282// ------------------------------------------------------------------------
283283
284+ type TestItemResourceUniqueKey struct {
285+ ID string
286+ State string
287+ }
288+
289+ func (r * TestItemResourceUniqueKey ) Remove (_ context.Context ) error {
290+ return nil
291+ }
292+ func (r * TestItemResourceUniqueKey ) Properties () types.Properties {
293+ return types .NewProperties ().Set ("ID" , r .ID ).Set ("State" , r .State )
294+ }
295+ func (r * TestItemResourceUniqueKey ) UniqueKey () string {
296+ return r .ID
297+ }
298+
299+ func Test_ItemEqualUniqueKey (t * testing.T ) {
300+ r1 := & TestItemResourceUniqueKey {
301+ ID : "i-01b489457a60298dd" ,
302+ State : "running" ,
303+ }
304+
305+ r2 := & TestItemResourceUniqueKey {
306+ ID : "i-01b489457a60298dd" , // Same ID
307+ State : "stopping" , // Different state (should be ignored)
308+ }
309+
310+ i := & Item {Resource : r1 }
311+ assert .True (t , i .Equals (r2 ), "Resources with same UniqueKey should be equal" )
312+
313+ r3 := & TestItemResourceUniqueKey {
314+ ID : "i-1234567890abcdef0" , // Different ID
315+ State : "running" , // Same state (should be ignored)
316+ }
317+
318+ assert .False (t , i .Equals (r3 ), "Resources with different UniqueKey should not be equal" )
319+ }
320+
321+ // ------------------------------------------------------------------------
322+
284323type TestItemResourceNothing struct {}
285324
286325func (r * TestItemResourceNothing ) Remove (_ context.Context ) error {
0 commit comments