go-transaction-manager
96 строк · 2.5 Кб
1package mongo
2
3import (
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
14func TestSettings_EnrichBy(t *testing.T) {
15t.Parallel()
16
17type args struct {
18external trm.Settings
19}
20
21tests := map[string]struct {
22settings Settings
23args args
24want trm.Settings
25}{
26"update_default": {
27settings: MustSettings(settings.Must()),
28args: args{
29external: MustSettings(
30settings.Must(settings.WithCancelable(true)),
31WithSessionOpts((&options.SessionOptions{}).
32SetCausalConsistency(true)),
33WithTransactionOpts((&options.TransactionOptions{}).
34SetReadConcern(readconcern.Majority())),
35),
36},
37want: MustSettings(
38settings.Must(settings.WithCancelable(true)),
39WithSessionOpts((&options.SessionOptions{}).
40SetCausalConsistency(true)),
41WithTransactionOpts((&options.TransactionOptions{}).
42SetReadConcern(readconcern.Majority())),
43),
44},
45"without_update": {
46settings: MustSettings(
47settings.Must(settings.WithCancelable(true)),
48WithSessionOpts((&options.SessionOptions{}).
49SetCausalConsistency(true)),
50WithTransactionOpts((&options.TransactionOptions{}).
51SetReadConcern(readconcern.Majority())),
52),
53args: args{
54external: MustSettings(
55settings.Must(settings.WithCancelable(false)),
56WithSessionOpts((&options.SessionOptions{}).
57SetCausalConsistency(false)),
58WithTransactionOpts((&options.TransactionOptions{}).
59SetReadConcern(readconcern.Local())),
60),
61},
62want: MustSettings(
63settings.Must(settings.WithCancelable(true)),
64WithSessionOpts((&options.SessionOptions{}).
65SetCausalConsistency(true)),
66WithTransactionOpts((&options.TransactionOptions{}).
67SetReadConcern(readconcern.Majority())),
68),
69},
70"update_only_trm.Settings": {
71settings: MustSettings(
72settings.Must(),
73WithSessionOpts((&options.SessionOptions{}).
74SetCausalConsistency(true)),
75),
76args: args{
77external: settings.Must(settings.WithCancelable(true)),
78},
79want: MustSettings(
80settings.Must(settings.WithCancelable(true)),
81WithSessionOpts((&options.SessionOptions{}).
82SetCausalConsistency(true)),
83),
84},
85}
86for name, tt := range tests {
87tt := tt
88t.Run(name, func(t *testing.T) {
89t.Parallel()
90
91got := tt.settings.EnrichBy(tt.args.external)
92
93assert.Equal(t, tt.want, got)
94})
95}
96}
97