db-migrator.go
82 строки · 1.9 Кб
1package action
2
3import (
4"testing"
5"time"
6
7"github.com/raoptimus/db-migrator.go/internal/action/mockaction"
8"github.com/raoptimus/db-migrator.go/pkg/timex"
9"github.com/stretchr/testify/assert"
10)
11
12func TestCreate_Run_ExpectedArguments_NoError(t *testing.T) {
13tests := []struct {
14name string
15now time.Time
16version string
17fileNameUp string
18fileNameDown string
19safely bool
20}{
21{
22name: "safely is true",
23now: time230527213123,
24version: "230527_213123_init",
25fileNameUp: "230527_213123_init.safe.up.sql",
26fileNameDown: "230527_213123_init.safe.down.sql",
27safely: true,
28},
29{
30name: "safely is false",
31now: time230527213123,
32version: "230527_213123_init",
33fileNameUp: "230527_213123_init.safe.up.sql",
34fileNameDown: "230527_213123_init.safe.down.sql",
35safely: false,
36},
37}
38for _, tt := range tests {
39t.Run(tt.name, func(t *testing.T) {
40tm := timex.New(func() time.Time {
41return time230527213123
42})
43
44f := mockaction.NewFile(t)
45f.EXPECT().
46Exists("/tmp").
47Return(true, nil).
48Once()
49f.EXPECT().
50Create(tt.fileNameUp).
51Return(nil).
52Once()
53f.EXPECT().
54Create(tt.fileNameDown).
55Return(nil).
56Once()
57
58c := mockaction.NewConsole(t)
59expectedQuestion := "Create new migration files: \n" +
60"'" + tt.fileNameUp + "' and \n" +
61"'" + tt.fileNameDown + "'?\n"
62c.EXPECT().
63Confirm(expectedQuestion).
64Return(true)
65c.EXPECT().
66SuccessLn("New migration created successfully.")
67
68fb := mockaction.NewFileNameBuilder(t)
69fb.EXPECT().
70Up(tt.version, true).
71Return(tt.fileNameUp, tt.safely)
72fb.EXPECT().
73Down(tt.version, true).
74Return(tt.fileNameDown, tt.safely)
75
76ctx := cliContext(t, "init")
77create := NewCreate(tm, f, c, fb, "/tmp")
78err := create.Run(ctx)
79assert.NoError(t, err)
80})
81}
82}
83