public async Task LockInitializationAsync_ShouldThrow_IfLockThrows() { var client = Mock.Of <IChangeFeedDocumentClient>(); Mock.Get(client) .Setup(c => c.CreateDocumentAsync(It.IsAny <string>(), It.IsAny <object>())) .ThrowsAsync(DocumentExceptionHelpers.CreateRequestRateTooLargeException()); var leaseStore = new LeaseStore(client, collectionInfo, containerNamePrefix, leaseStoreCollectionLink); Exception exception = await Record.ExceptionAsync(() => leaseStore.LockInitializationAsync(lockTime)); Assert.IsAssignableFrom <DocumentClientException>(exception); }
public async Task LockInitializationAsync_ShouldReturnTrue_IfLockSucceeds() { var client = Mock.Of <IChangeFeedDocumentClient>(); var leaseStore = new LeaseStore(client, collectionInfo, containerNamePrefix, leaseStoreCollectionLink); bool isLocked = await leaseStore.LockInitializationAsync(lockTime); Assert.True(isLocked); Mock.Get(client) .Verify(c => c.CreateDocumentAsync(leaseStoreCollectionLink, It.Is <Document>(d => d.TimeToLive == (int)lockTime.TotalSeconds && d.Id == "prefix.lock")), Times.Once); }
public async Task LockInitializationAsync_ShouldReturnFalse_IfLockConflicts() { var client = Mock.Of <IChangeFeedDocumentClient>(); Mock.Get(client) .Setup(c => c.CreateDocumentAsync(It.IsAny <string>(), It.IsAny <object>())) .ThrowsAsync(DocumentExceptionHelpers.CreateConflictException()); var leaseStore = new LeaseStore(client, collectionInfo, containerNamePrefix, leaseStoreCollectionLink); bool isLocked = await leaseStore.LockInitializationAsync(lockTime); Assert.False(isLocked); Mock.Get(client) .Verify(c => c.CreateDocumentAsync(leaseStoreCollectionLink, It.Is <Document>(d => d.TimeToLive == (int)lockTime.TotalSeconds && d.Id == "prefix.lock")), Times.Once); }