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  })