db-migrator.go

Форк
0
/
create_test.go 
82 строки · 1.9 Кб
1
package action
2

3
import (
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

12
func TestCreate_Run_ExpectedArguments_NoError(t *testing.T) {
13
	tests := []struct {
14
		name         string
15
		now          time.Time
16
		version      string
17
		fileNameUp   string
18
		fileNameDown string
19
		safely       bool
20
	}{
21
		{
22
			name:         "safely is true",
23
			now:          time230527213123,
24
			version:      "230527_213123_init",
25
			fileNameUp:   "230527_213123_init.safe.up.sql",
26
			fileNameDown: "230527_213123_init.safe.down.sql",
27
			safely:       true,
28
		},
29
		{
30
			name:         "safely is false",
31
			now:          time230527213123,
32
			version:      "230527_213123_init",
33
			fileNameUp:   "230527_213123_init.safe.up.sql",
34
			fileNameDown: "230527_213123_init.safe.down.sql",
35
			safely:       false,
36
		},
37
	}
38
	for _, tt := range tests {
39
		t.Run(tt.name, func(t *testing.T) {
40
			tm := timex.New(func() time.Time {
41
				return time230527213123
42
			})
43

44
			f := mockaction.NewFile(t)
45
			f.EXPECT().
46
				Exists("/tmp").
47
				Return(true, nil).
48
				Once()
49
			f.EXPECT().
50
				Create(tt.fileNameUp).
51
				Return(nil).
52
				Once()
53
			f.EXPECT().
54
				Create(tt.fileNameDown).
55
				Return(nil).
56
				Once()
57

58
			c := mockaction.NewConsole(t)
59
			expectedQuestion := "Create new migration files: \n" +
60
				"'" + tt.fileNameUp + "' and \n" +
61
				"'" + tt.fileNameDown + "'?\n"
62
			c.EXPECT().
63
				Confirm(expectedQuestion).
64
				Return(true)
65
			c.EXPECT().
66
				SuccessLn("New migration created successfully.")
67

68
			fb := mockaction.NewFileNameBuilder(t)
69
			fb.EXPECT().
70
				Up(tt.version, true).
71
				Return(tt.fileNameUp, tt.safely)
72
			fb.EXPECT().
73
				Down(tt.version, true).
74
				Return(tt.fileNameDown, tt.safely)
75

76
			ctx := cliContext(t, "init")
77
			create := NewCreate(tm, f, c, fb, "/tmp")
78
			err := create.Run(ctx)
79
			assert.NoError(t, err)
80
		})
81
	}
82
}
83

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.