github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/migration/parser_test.go (about) 1 package migration_test 2 3 import ( 4 "github.com/pf-qiu/concourse/v6/atc/db/migration" 5 "github.com/pf-qiu/concourse/v6/atc/db/migration/migrationfakes" 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 ) 9 10 var basicSQLMigration = []byte(`BEGIN; 11 -- create a table 12 CREATE TABLE some_table; 13 COMMIT; 14 `) 15 16 var _ = Describe("Parser", func() { 17 var ( 18 parser *migration.Parser 19 bindata *migrationfakes.FakeBindata 20 ) 21 22 BeforeEach(func() { 23 bindata = new(migrationfakes.FakeBindata) 24 bindata.AssetReturns([]byte{}, nil) 25 26 parser = migration.NewParser(bindata) 27 }) 28 29 It("parses the direction of the migration from the file name", func() { 30 downMigration, err := parser.ParseFileToMigration("2000_some_migration.down.go") 31 Expect(err).ToNot(HaveOccurred()) 32 Expect(downMigration.Direction).To(Equal("down")) 33 34 upMigration, err := parser.ParseFileToMigration("1000_some_migration.up.sql") 35 Expect(err).ToNot(HaveOccurred()) 36 Expect(upMigration.Direction).To(Equal("up")) 37 }) 38 39 It("parses the strategy of the migration from the file", func() { 40 downMigration, err := parser.ParseFileToMigration("2000_some_migration.down.go") 41 Expect(err).ToNot(HaveOccurred()) 42 Expect(downMigration.Strategy).To(Equal(migration.GoMigration)) 43 44 bindata.AssetReturns(basicSQLMigration, nil) 45 upMigration, err := parser.ParseFileToMigration("1000_some_migration.up.sql") 46 Expect(err).ToNot(HaveOccurred()) 47 Expect(upMigration.Strategy).To(Equal(migration.SQLMigration)) 48 }) 49 50 Context("SQL migrations", func() { 51 It("parses the migration into statements", func() { 52 bindata.AssetReturns(basicSQLMigration, nil) 53 migration, err := parser.ParseFileToMigration("1234_create_and_alter_table.up.sql") 54 Expect(err).ToNot(HaveOccurred()) 55 Expect(migration.Statements).To(Equal(string(basicSQLMigration))) 56 }) 57 }) 58 59 Context("Go migrations", func() { 60 It("returns the name of the migration function to run", func() { 61 bindata.AssetReturns([]byte(` 62 func (m *Migrator) Up_2000() {} 63 `), nil) 64 65 migration, err := parser.ParseFileToMigration("2000_some_go_migration.up.go") 66 Expect(err).ToNot(HaveOccurred()) 67 Expect(migration.Name).To(Equal("Up_2000")) 68 }) 69 }) 70 })