github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/table/options/models_test.go (about) 1 package options 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestTimeToLiveSettingsFluentModifiers(t *testing.T) { 11 for _, tt := range []struct { 12 fluentSettings TimeToLiveSettings 13 expectedSettings TimeToLiveSettings 14 }{ 15 { 16 fluentSettings: NewTTLSettings(). 17 ColumnDateType("a"). 18 ExpireAfter(time.Hour), 19 expectedSettings: TimeToLiveSettings{ 20 ColumnName: "a", 21 Mode: TimeToLiveModeDateType, 22 ExpireAfterSeconds: uint32(time.Hour.Seconds()), 23 }, 24 }, 25 { 26 fluentSettings: NewTTLSettings(). 27 ColumnSeconds("a"). 28 ExpireAfter(time.Hour), 29 expectedSettings: TimeToLiveSettings{ 30 ColumnName: "a", 31 Mode: TimeToLiveModeValueSinceUnixEpoch, 32 ExpireAfterSeconds: uint32(time.Hour.Seconds()), 33 ColumnUnit: unitToPointer(TimeToLiveUnitSeconds), 34 }, 35 }, 36 { 37 fluentSettings: NewTTLSettings(). 38 ColumnMilliseconds("a"). 39 ExpireAfter(time.Hour), 40 expectedSettings: TimeToLiveSettings{ 41 ColumnName: "a", 42 Mode: TimeToLiveModeValueSinceUnixEpoch, 43 ExpireAfterSeconds: uint32(time.Hour.Seconds()), 44 ColumnUnit: unitToPointer(TimeToLiveUnitMilliseconds), 45 }, 46 }, 47 { 48 fluentSettings: NewTTLSettings(). 49 ColumnMicroseconds("a"). 50 ExpireAfter(time.Hour), 51 expectedSettings: TimeToLiveSettings{ 52 ColumnName: "a", 53 Mode: TimeToLiveModeValueSinceUnixEpoch, 54 ExpireAfterSeconds: uint32(time.Hour.Seconds()), 55 ColumnUnit: unitToPointer(TimeToLiveUnitMicroseconds), 56 }, 57 }, 58 { 59 fluentSettings: NewTTLSettings(). 60 ColumnNanoseconds("a"). 61 ExpireAfter(time.Hour), 62 expectedSettings: TimeToLiveSettings{ 63 ColumnName: "a", 64 Mode: TimeToLiveModeValueSinceUnixEpoch, 65 ExpireAfterSeconds: uint32(time.Hour.Seconds()), 66 ColumnUnit: unitToPointer(TimeToLiveUnitNanoseconds), 67 }, 68 }, 69 } { 70 t.Run("", func(t *testing.T) { 71 require.Equal(t, tt.expectedSettings, tt.fluentSettings) 72 }) 73 } 74 }