github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/migration/add_resource_pinned_version_test.go (about) 1 package migration_test 2 3 import ( 4 "database/sql" 5 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 ) 9 10 var _ = Describe("Add resource pinned version", func() { 11 const preMigrationVersion = 1537546150 12 const postMigrationVersion = 1538408345 13 14 var ( 15 db *sql.DB 16 ) 17 18 setupResourceVersions := func(db *sql.DB) { 19 _, err := db.Exec(` 20 INSERT INTO base_resource_types(id, name) VALUES 21 (1, 'some-type') 22 `) 23 Expect(err).NotTo(HaveOccurred()) 24 25 _, err = db.Exec(` 26 INSERT INTO resource_configs(id, base_resource_type_id, source_hash) VALUES 27 (1, 1, 'some-source'), 28 (2, 1, 'another-source') 29 `) 30 Expect(err).NotTo(HaveOccurred()) 31 32 _, err = db.Exec(` 33 INSERT INTO resources(id, pipeline_id, resource_config_id, name, config, active, paused) VALUES 34 (1, 1, 1, 'resource1', '{}', true, true), 35 (2, 1, 1, 'resource2', '{}', true, false), 36 (3, 1, 2, 'resource3', '{}', true, true) 37 `) 38 Expect(err).NotTo(HaveOccurred()) 39 40 _, err = db.Exec(` 41 INSERT INTO versioned_resources(id, resource_id, check_order, version, metadata, type) VALUES 42 (1, 1, 1, '{"version": "1"}', 'null', 'git'), 43 (2, 1, 4, '{"version": "4"}', 'null', 'git'), 44 (3, 2, 2, '{"version": "2"}', 'null', 'git'), 45 (4, 3, 1, '{"version": "1"}', 'null', 'git') 46 `) 47 } 48 49 Context("Up", func() { 50 It("creates a job tag for each job within every pipeline group", func() { 51 db = postgresRunner.OpenDBAtVersion(preMigrationVersion) 52 53 setup(db) 54 setupResourceVersions(db) 55 56 _ = db.Close() 57 58 db = postgresRunner.OpenDBAtVersion(postMigrationVersion) 59 60 rows, err := db.Query(`SELECT id, api_pinned_version FROM resources`) 61 Expect(err).NotTo(HaveOccurred()) 62 63 pinnedVersions := make(map[int]string) 64 65 for rows.Next() { 66 var id int 67 var version sql.NullString 68 69 err := rows.Scan(&id, &version) 70 Expect(err).NotTo(HaveOccurred()) 71 72 if version.Valid { 73 pinnedVersions[id] = version.String 74 } 75 } 76 77 _ = db.Close() 78 79 Expect(pinnedVersions).To(HaveLen(2)) 80 Expect(pinnedVersions[1]).To(Equal(`{"version": "4"}`)) 81 Expect(pinnedVersions[3]).To(Equal(`{"version": "1"}`)) 82 }) 83 }) 84 })