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  }