public void Upsert_DifferentCas_CasMismatch() { // Arrange var existingObject = new object(); var bucket = new MockBucket { { "key", existingObject } }; Assert.True(bucket.TryGetMock("key", out var mockDocument)); var originalCas = mockDocument.Cas; // Act var result = bucket.Upsert("key", new object(), originalCas - 1); // Assert Assert.False(result.Success); Assert.Equal(ResponseStatus.DocumentMutationDetected, result.Status); Assert.True(bucket.TryGetMock("key", out mockDocument)); Assert.Equal(existingObject, mockDocument?.Content); }
public void Touch_ExistingDocWithExpiration_SetsExpiration() { // Arrange var clockProvider = new LambdaClockProvider(() => new DateTime(2000, 1, 1)); var bucket = new MockBucket(clockProvider) { { "key", new MockDocument { Cas = 100, Content = new object(), Expiration = new DateTime(2000, 1, 2) } } }; // Act var result = bucket.Touch("key", TimeSpan.FromMinutes(1)); // Assert Assert.True(result.Success); Assert.Equal(ResponseStatus.Success, result.Status); Assert.True(bucket.TryGetMock("key", out var mockDocument)); Assert.NotNull(mockDocument.Expiration); Assert.Equal(clockProvider.GetCurrentDateTime().AddMinutes(1), mockDocument.Expiration.Value); }
public void Touch_ExistingDocNoExpiration_RemovesExpiration() { // Arrange var clockProvider = new LambdaClockProvider(() => new DateTime(2000, 1, 1)); var bucket = new MockBucket(clockProvider) { { "key", new MockDocument { Cas = 100, Content = new object(), Expiration = new DateTime(2000, 1, 2) } } }; // Act var result = bucket.Touch("key", TimeSpan.Zero); // Assert Assert.True(result.Success); Assert.Equal(ResponseStatus.Success, result.Status); Assert.True(bucket.TryGetMock("key", out var mockDocument)); Assert.Null(mockDocument.Expiration); }
public void Upsert_ExistingDoc_IncrementsCas() { // Arrange var bucket = new MockBucket { { "key", new object() } }; Assert.True(bucket.TryGetMock("key", out var mockDocument)); var originalCas = mockDocument.Cas; // Act bucket.Upsert("key", new object()); // Assert Assert.True(bucket.TryGetMock("key", out mockDocument)); Assert.True(mockDocument.Cas > originalCas); }
public void Remove_ExistingDoc_Removes() { // Arrange var bucket = new MockBucket { { "key", new object() } }; // Act var result = bucket.Remove("key"); // Assert Assert.True(result.Success); Assert.Equal(ResponseStatus.Success, result.Status); Assert.False(bucket.TryGetMock("key", out _)); }
public void Get_ExistingDoc_ReturnsDoc() { // Arrange var existingObject = new object(); var bucket = new MockBucket { { "key", existingObject } }; // Act var result = bucket.Get <object>("key"); // Assert Assert.True(result.Success); Assert.Equal(ResponseStatus.Success, result.Status); Assert.True(bucket.TryGetMock("key", out var mockDocument)); Assert.Equal(existingObject, mockDocument?.Content); }
public void Insert_ExistingDoc_KeyExists() { // Arrange var existingObject = new object(); var bucket = new MockBucket { { "key", existingObject } }; // Act var result = bucket.Insert("key", new object()); // Assert Assert.False(result.Success); Assert.Equal(ResponseStatus.KeyExists, result.Status); Assert.True(bucket.TryGetMock("key", out var mockDocument)); Assert.Equal(existingObject, mockDocument?.Content); }
public void Upsert_ExistingDoc_Overwrites() { // Arrange var bucket = new MockBucket { { "key", new object() } }; var newObject = new object(); // Act var result = bucket.Upsert("key", newObject); // Assert Assert.True(result.Success); Assert.Equal(ResponseStatus.Success, result.Status); Assert.True(bucket.TryGetMock("key", out var mockDocument)); Assert.Equal(newObject, mockDocument?.Content); }