From fe3badfe3e73588fc0c62b6229ebbdf009589ef4 Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Sat, 15 Aug 2026 15:17:28 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E8=A6=86=E7=9B=96=E6=97=A7=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=AE=8C=E6=95=B4=E8=BF=81=E7=A7=BB=E9=93=BE=20(#92)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../version/2026081414000_device_test.go | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Sense/server/cmd/migrate/migration/version/2026081414000_device_test.go b/Sense/server/cmd/migrate/migration/version/2026081414000_device_test.go index c4a74a4..b8cf7a3 100644 --- a/Sense/server/cmd/migrate/migration/version/2026081414000_device_test.go +++ b/Sense/server/cmd/migrate/migration/version/2026081414000_device_test.go @@ -10,6 +10,8 @@ import ( "gorm.io/gorm" deviceModels "git.ilapage.cn/ila/yovision/Sense/server/app/sense/device/models" + migrationModels "git.ilapage.cn/ila/yovision/Sense/server/cmd/migrate/migration/models" + common "git.ilapage.cn/ila/yovision/Sense/server/common/models" ) func TestCanonicalLegacyCapabilities(t *testing.T) { @@ -126,6 +128,40 @@ func TestDeviceCapabilitiesMigrationOnPostgres(t *testing.T) { t.Fatal(err) } }) + + t.Run("completes the device migration and records its version", func(t *testing.T) { + resetLegacyDeviceTable(t, db) + if err = db.Exec(`INSERT INTO sense_devices (id, capabilities) VALUES ('legacy', 'video')`).Error; err != nil { + t.Fatal(err) + } + if err = db.AutoMigrate(&migrationModels.SysRole{}, &migrationModels.SysMenu{}, &deviceCasbinRule{}, &common.Migration{}); err != nil { + t.Fatal(err) + } + for _, role := range []string{"implementation_operator", "site_admin", "viewer"} { + if err = db.Create(&migrationModels.SysRole{RoleName: role, RoleKey: role, Status: "2"}).Error; err != nil { + t.Fatal(err) + } + } + const migrationVersion = "2026081414000_device.go" + if err = migrateSenseDeviceLedger(db, migrationVersion); err != nil { + t.Fatal(err) + } + assertCapabilitiesColumn(t, db, "jsonb", "'[]'::jsonb") + var migratedValue string + if err = db.Raw(`SELECT capabilities::text FROM sense_devices WHERE id = 'legacy'`).Scan(&migratedValue).Error; err != nil { + t.Fatal(err) + } + if strings.ReplaceAll(migratedValue, " ", "") != `["video"]` { + t.Fatalf("unexpected full-migration value: %q", migratedValue) + } + var applied int64 + if err = db.Model(&common.Migration{}).Where("version = ?", migrationVersion).Count(&applied).Error; err != nil { + t.Fatal(err) + } + if applied != 1 { + t.Fatalf("migration record count=%d", applied) + } + }) } func resetLegacyDeviceTable(t *testing.T, db *gorm.DB) {