MCPcopy
hub / github.com/apache/devlake / TestHasPendingScripts

Function TestHasPendingScripts

backend/core/migration/migrator_test.go:36–87  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

34)
35
36func TestHasPendingScripts(t *testing.T) {
37 // simulate db reaction
38 mockDal := new(mockdal.Dal)
39 mockDal.On("AutoMigrate", mock.Anything, mock.Anything).Return(nil).Once()
40 mockDal.On("All", mock.Anything, mock.Anything).Return(func(i interface{}, _ ...dal.Clause) errors.Error {
41 precords := i.(*[]MigrationHistory)
42 *precords = []MigrationHistory{
43 {ScriptName: "A", ScriptVersion: 1, Comment: "UniTest", CreatedAt: time.Now()},
44 {ScriptName: "B", ScriptVersion: 2, Comment: "UniTest", CreatedAt: time.Now()},
45 {ScriptName: "C", ScriptVersion: 3, Comment: "UniTest", CreatedAt: time.Now()},
46 }
47 return nil
48 }).Once()
49 mockDal.On("Create", &MigrationHistory{
50 ScriptName: "E",
51 ScriptVersion: 4,
52 Comment: "UnitTest",
53 }, mock.Anything).Return(nil).Once()
54 mockDal.On("Create", &MigrationHistory{
55 ScriptName: "D",
56 ScriptVersion: 5,
57 Comment: "UnitTest",
58 }, mock.Anything).Return(nil).Once()
59
60 // migrator initialization
61 basicRes := context.NewDefaultBasicRes(viper.New(), unithelper.DummyLogger(), mockDal)
62 migrator, err := NewMigrator(basicRes)
63 assert.Nil(t, err)
64
65 // assuming we have 2 new scripts
66 scriptD := new(mockplugin.MigrationScript)
67 scriptD.On("Up", mock.Anything).Return(nil).Once()
68 scriptD.On("Version").Return(uint64(5))
69 scriptD.On("Name").Return("D")
70 scriptE := new(mockplugin.MigrationScript)
71 scriptE.On("Up", mock.Anything).Return(nil).Once()
72 scriptE.On("Version").Return(uint64(4))
73 scriptE.On("Name").Return("E")
74 migrator.Register([]plugin.MigrationScript{scriptD, scriptE}, "UnitTest")
75
76 // we should have pending scripts
77 assert.True(t, migrator.HasPendingScripts())
78
79 // lets try migrating
80 assert.Nil(t, migrator.Execute())
81
82 // should not be any pending scripts anymore
83 assert.False(t, migrator.HasPendingScripts())
84
85 // make sure all method got called
86 mockDal.AssertExpectations(t)
87}

Callers

nothing calls this directly

Calls 5

RegisterMethod · 0.95
HasPendingScriptsMethod · 0.95
ExecuteMethod · 0.95
NewMigratorFunction · 0.85
NewMethod · 0.65

Tested by

no test coverage detected