go-transaction-manager
78 строк · 1.8 Кб
1package sql
2
3import (
4"database/sql"
5"testing"
6
7"github.com/stretchr/testify/assert"
8
9"github.com/avito-tech/go-transaction-manager/trm/v2"
10"github.com/avito-tech/go-transaction-manager/trm/v2/settings"
11)
12
13func TestSettings_EnrichBy(t *testing.T) {
14t.Parallel()
15
16type args struct {
17external trm.Settings
18}
19
20tests := map[string]struct {
21settings Settings
22args args
23want trm.Settings
24}{
25"update_default": {
26settings: MustSettings(settings.Must()),
27args: args{
28external: MustSettings(
29settings.Must(settings.WithCancelable(true)),
30WithTxOptions(&sql.TxOptions{}),
31),
32},
33want: MustSettings(
34settings.Must(settings.WithCancelable(true)),
35WithTxOptions(&sql.TxOptions{}),
36),
37},
38"without_update": {
39settings: MustSettings(
40settings.Must(settings.WithCancelable(true)),
41WithTxOptions(&sql.TxOptions{Isolation: sql.LevelWriteCommitted}),
42),
43args: args{
44external: MustSettings(
45settings.Must(settings.WithCancelable(false)),
46WithTxOptions(&sql.TxOptions{ReadOnly: true}),
47),
48},
49want: MustSettings(
50settings.Must(settings.WithCancelable(true)),
51WithTxOptions(&sql.TxOptions{Isolation: sql.LevelWriteCommitted}),
52),
53},
54"update_only_trm.Settings": {
55settings: MustSettings(
56settings.Must(),
57WithTxOptions(&sql.TxOptions{Isolation: sql.LevelWriteCommitted}),
58),
59args: args{
60external: settings.Must(settings.WithCancelable(true)),
61},
62want: MustSettings(
63settings.Must(settings.WithCancelable(true)),
64WithTxOptions(&sql.TxOptions{Isolation: sql.LevelWriteCommitted}),
65),
66},
67}
68for name, tt := range tests {
69tt := tt
70t.Run(name, func(t *testing.T) {
71t.Parallel()
72
73got := tt.settings.EnrichBy(tt.args.external)
74
75assert.Equal(t, tt.want, got)
76})
77}
78}
79