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 Replace_NewDoc_KeyNotFound() { // Arrange var bucket = new MockBucket(); // Act var result = bucket.Replace("key", new object()); // Assert Assert.False(result.Success); Assert.Equal(ResponseStatus.KeyNotFound, result.Status); }
public void Insert_NewDoc_Success() { // Arrange var bucket = new MockBucket(); // Act var result = bucket.Insert("key", new object()); // Assert Assert.True(result.Success); Assert.Equal(ResponseStatus.Success, result.Status); Assert.True(bucket.ContainsMock("key")); }
public void Get_MissingDoc_KeyNotFound(IEnumerable <KeyValuePair <string, MockDocument> > documents) { // Arrange // Will ensure sample doc above on 1/1/2000 is expired var clockProvider = new LambdaClockProvider(() => new DateTime(2000, 1, 2)); var bucket = new MockBucket(clockProvider); bucket.AddRange(documents); // Act var result = bucket.Get <object>("key"); // Assert Assert.False(result.Success); Assert.Equal(ResponseStatus.KeyNotFound, result.Status); }
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 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 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); }
protected void VerifyGetItems(string bucketName) { VerifyGetBucket(bucketName); MockBucket.Verify(m => m.GetItems(), Times.Once); }
private void VerifyGetItem(string key) { MockBucket.Verify(m => m.GetItem(It.Is <string>(k => k == key)), Times.Once); }
public MockBucketContext(MockBucket bucket) { _bucket = bucket ?? throw new ArgumentNullException(nameof(bucket)); ResetMutationState(); }