(t *testing.T)
| 300 | } |
| 301 | |
| 302 | func Test_CAS_UpdateStale(t *testing.T) { |
| 303 | ddbMock := NewDynamodbClientMock() |
| 304 | codecMock := &CodecMock{} |
| 305 | descMock := &DescMock{} |
| 306 | descMockResult := &DescMock{} |
| 307 | startTime := time.Now().UTC().Add(-time.Millisecond) |
| 308 | |
| 309 | c := NewClientMock(ddbMock, codecMock, TestLogger{}, prometheus.NewPedanticRegistry(), defaultPullTime, defaultBackoff) |
| 310 | expectedUpdatedKeys := []string{"t1", "t2"} |
| 311 | expectedUpdated := map[string][]byte{ |
| 312 | expectedUpdatedKeys[0]: []byte(expectedUpdatedKeys[0]), |
| 313 | expectedUpdatedKeys[1]: []byte(expectedUpdatedKeys[1]), |
| 314 | } |
| 315 | expectedBatch := map[dynamodbKey]dynamodbItem{ |
| 316 | {primaryKey: key, sortKey: expectedUpdatedKeys[0]}: {data: []byte(expectedUpdatedKeys[0])}, |
| 317 | {primaryKey: key, sortKey: expectedUpdatedKeys[1]}: {data: []byte(expectedUpdatedKeys[1])}, |
| 318 | } |
| 319 | |
| 320 | ddbMock.On("Query").Return(map[string]dynamodbItem{}, nil).Once() |
| 321 | codecMock.On("DecodeMultiKey").Return(descMock, nil).Once() |
| 322 | descMock.On("Clone").Return(descMock).Once() |
| 323 | descMock.On("FindDifference", descMockResult).Return(descMockResult, []string{}, nil).Once() |
| 324 | codecMock.On("EncodeMultiKey").Return(expectedUpdated, nil).Once() |
| 325 | ddbMock.On("Batch", context.TODO(), expectedBatch, []dynamodbKey{}).Return(false, nil).Once() |
| 326 | |
| 327 | err := c.CAS(context.TODO(), key, func(in any) (out any, retry bool, err error) { |
| 328 | return descMockResult, true, nil |
| 329 | }) |
| 330 | |
| 331 | require.NoError(t, err) |
| 332 | require.Equal(t, descMockResult, c.staleData[key].data) |
| 333 | require.True(t, startTime.Before(c.staleData[key].timestamp)) |
| 334 | } |
| 335 | |
| 336 | func Test_WatchPrefix(t *testing.T) { |
| 337 | ddbMock := NewDynamodbClientMock() |
nothing calls this directly
no test coverage detected