1- // Copyright 2025 The kpt Authors
1+ // Copyright 2025-2026 The kpt Authors
22//
33// Licensed under the Apache License, Version 2.0 (the "License");
44// you may not use this file except in compliance with the License.
@@ -240,6 +240,10 @@ func (t *DbTestSuite) TestPackageRevisionLatest() {
240240}
241241
242242func (t * DbTestSuite ) TestPackageRevisionResources () {
243+ mockCache := mockcachetypes .NewMockCache (t .T ())
244+ cachetypes .CacheInstance = mockCache
245+ mockCache .EXPECT ().GetRepository (mock .Anything ).Return (& dbRepository {})
246+
243247 dbRepo := t .createTestRepo ("my-ns" , "my-repo" )
244248 dbPkg := t .createTestPkg (dbRepo .Key (), "my-package" )
245249 dbPkg .repo = dbRepo
@@ -263,41 +267,51 @@ func (t *DbTestSuite) TestPackageRevisionResources() {
263267 t .Equal ("Goodbye.txt" , resKey )
264268 t .Equal ("Goodbye" , resVal )
265269
266- err = pkgRevResourceDeleteFromDB (t .Context (), dbPR .Key (), "Goodbye.txt" )
267- t .Require ().NoError (err )
268-
269- err = pkgRevResourceDeleteFromDB (t .Context (), dbPR .Key (), "Goodbye.txt" )
270+ // Remove "Goodbye.txt" by rewriting resources without it
271+ dbPR .resources = map [string ]string {"Hello.txt" : "Hello" }
272+ err = pkgRevResourcesWriteToDB (t .Context (), & dbPR )
270273 t .Require ().NoError (err )
271274
272275 _ , _ , err = pkgRevResourceReadFromDB (t .Context (), dbPR .Key (), "Goodbye.txt" )
273276 t .Require ().ErrorContains (err , "no rows in result set" )
274277
275- err = pkgRevResourceWriteToDB (t .Context (), dbPR .Key (), "Goodbye.txt" , "So long" )
278+ // Write "Goodbye.txt" back with a new value
279+ dbPR .resources = map [string ]string {"Hello.txt" : "Hello" , "Goodbye.txt" : "So long" }
280+ err = pkgRevResourcesWriteToDB (t .Context (), & dbPR )
276281 t .Require ().NoError (err )
277282
278283 resKey , resVal , err = pkgRevResourceReadFromDB (t .Context (), dbPR .Key (), "Goodbye.txt" )
279284 t .Require ().NoError (err )
280285 t .Equal ("Goodbye.txt" , resKey )
281286 t .Equal ("So long" , resVal )
282287
283- err = pkgRevResourceWriteToDB (t .Context (), dbPR .Key (), "Goodbye.txt" , "See ya later" )
288+ // Update "Goodbye.txt" value again
289+ dbPR .resources = map [string ]string {"Hello.txt" : "Hello" , "Goodbye.txt" : "See ya later" }
290+ err = pkgRevResourcesWriteToDB (t .Context (), & dbPR )
284291 t .Require ().NoError (err )
285292
286293 resKey , resVal , err = pkgRevResourceReadFromDB (t .Context (), dbPR .Key (), "Goodbye.txt" )
287294 t .Require ().NoError (err )
288295 t .Equal ("Goodbye.txt" , resKey )
289296 t .Equal ("See ya later" , resVal )
290297
291- err = pkgRevResourceWriteToDB (t .Context (), dbPR .Key (), "Grand.txt" , "Grand" )
298+ // Add a new resource "Grand.txt"
299+ dbPR .resources = map [string ]string {"Hello.txt" : "Hello" , "Goodbye.txt" : "See ya later" , "Grand.txt" : "Grand" }
300+ err = pkgRevResourcesWriteToDB (t .Context (), & dbPR )
292301 t .Require ().NoError (err )
293302
294303 resKey , resVal , err = pkgRevResourceReadFromDB (t .Context (), dbPR .Key (), "Grand.txt" )
295304 t .Require ().NoError (err )
296305 t .Equal ("Grand.txt" , resKey )
297306 t .Equal ("Grand" , resVal )
298307
299- dbPR .pkgRevKey .WorkspaceName = "bad"
300- err = pkgRevResourceWriteToDB (t .Context (), dbPR .Key (), "Grand.txt" , "Grand" )
308+ // Verify that writing resources for a non-existent package revision fails with FK constraint violation
309+ badPR := dbPackageRevision {
310+ pkgRevKey : dbPR .pkgRevKey ,
311+ resources : map [string ]string {"Bad.txt" : "Bad" },
312+ }
313+ badPR .pkgRevKey .WorkspaceName = "non-existent"
314+ err = pkgRevResourcesWriteToDB (t .Context (), & badPR )
301315 t .Require ().ErrorContains (err , "violates foreign key constraint" )
302316
303317 err = repoDeleteFromDB (t .Context (), dbRepo .Key ())
0 commit comments