go-transaction-manager

Форк
0
96 строк · 2.5 Кб
1
package mongo
2

3
import (
4
	"testing"
5

6
	"github.com/stretchr/testify/assert"
7
	"go.mongodb.org/mongo-driver/mongo/options"
8
	"go.mongodb.org/mongo-driver/mongo/readconcern"
9

10
	"github.com/avito-tech/go-transaction-manager/trm/v2"
11
	"github.com/avito-tech/go-transaction-manager/trm/v2/settings"
12
)
13

14
func TestSettings_EnrichBy(t *testing.T) {
15
	t.Parallel()
16

17
	type args struct {
18
		external trm.Settings
19
	}
20

21
	tests := map[string]struct {
22
		settings Settings
23
		args     args
24
		want     trm.Settings
25
	}{
26
		"update_default": {
27
			settings: MustSettings(settings.Must()),
28
			args: args{
29
				external: MustSettings(
30
					settings.Must(settings.WithCancelable(true)),
31
					WithSessionOpts((&options.SessionOptions{}).
32
						SetCausalConsistency(true)),
33
					WithTransactionOpts((&options.TransactionOptions{}).
34
						SetReadConcern(readconcern.Majority())),
35
				),
36
			},
37
			want: MustSettings(
38
				settings.Must(settings.WithCancelable(true)),
39
				WithSessionOpts((&options.SessionOptions{}).
40
					SetCausalConsistency(true)),
41
				WithTransactionOpts((&options.TransactionOptions{}).
42
					SetReadConcern(readconcern.Majority())),
43
			),
44
		},
45
		"without_update": {
46
			settings: MustSettings(
47
				settings.Must(settings.WithCancelable(true)),
48
				WithSessionOpts((&options.SessionOptions{}).
49
					SetCausalConsistency(true)),
50
				WithTransactionOpts((&options.TransactionOptions{}).
51
					SetReadConcern(readconcern.Majority())),
52
			),
53
			args: args{
54
				external: MustSettings(
55
					settings.Must(settings.WithCancelable(false)),
56
					WithSessionOpts((&options.SessionOptions{}).
57
						SetCausalConsistency(false)),
58
					WithTransactionOpts((&options.TransactionOptions{}).
59
						SetReadConcern(readconcern.Local())),
60
				),
61
			},
62
			want: MustSettings(
63
				settings.Must(settings.WithCancelable(true)),
64
				WithSessionOpts((&options.SessionOptions{}).
65
					SetCausalConsistency(true)),
66
				WithTransactionOpts((&options.TransactionOptions{}).
67
					SetReadConcern(readconcern.Majority())),
68
			),
69
		},
70
		"update_only_trm.Settings": {
71
			settings: MustSettings(
72
				settings.Must(),
73
				WithSessionOpts((&options.SessionOptions{}).
74
					SetCausalConsistency(true)),
75
			),
76
			args: args{
77
				external: settings.Must(settings.WithCancelable(true)),
78
			},
79
			want: MustSettings(
80
				settings.Must(settings.WithCancelable(true)),
81
				WithSessionOpts((&options.SessionOptions{}).
82
					SetCausalConsistency(true)),
83
			),
84
		},
85
	}
86
	for name, tt := range tests {
87
		tt := tt
88
		t.Run(name, func(t *testing.T) {
89
			t.Parallel()
90

91
			got := tt.settings.EnrichBy(tt.args.external)
92

93
			assert.Equal(t, tt.want, got)
94
		})
95
	}
96
}
97

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

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

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

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