public async Task QueueOperationAsync_RemovesExistingOperation_WhenOperationIsCancelled() { var testNewOperation = new CreateMobileServiceFileOperation("id", "fileId"); var testExistingOperation = new Mock <IMobileServiceFileOperation>(); testExistingOperation.SetupGet(m => m.Id).Returns("testID"); testExistingOperation.Setup(m => m.OnQueueingNewOperation(It.Is <IMobileServiceFileOperation>(o => o == testNewOperation))) .Callback(() => testExistingOperation.SetupGet(m => m.State).Returns(FileOperationState.Cancelled)); MobileServiceFileSyncContextInput input = MobileServiceFileSyncContextInput.CreateWithout(MobileServiceFileSyncContextArgs.OperationQueue); var operationQueueMock = new Mock <IFileOperationQueue>(); operationQueueMock.Setup(m => m.GetOperationByFileIdAsync(It.Is <string>(s => string.Compare(s, testNewOperation.FileId) == 0))) .Returns(() => Task.FromResult <IMobileServiceFileOperation>(testExistingOperation.Object)); input.OperationsQueue = operationQueueMock.Object; MobileServiceFileSyncContext context = CreateContext(input); await context.QueueOperationAsync(testNewOperation); Assert.Equal(FileOperationState.Cancelled, testExistingOperation.Object.State); operationQueueMock.Verify(m => m.RemoveAsync(It.Is <string>(s => s == testExistingOperation.Object.Id)), Times.Once()); }
public async Task QueueOperationAsync_NotifiesExistingOperation_WhenOperationIsQueued() { var testNewOperation = new CreateMobileServiceFileOperation("id", "fileId"); var testExistingOperation = new Mock <IMobileServiceFileOperation>(); MobileServiceFileSyncContextInput input = MobileServiceFileSyncContextInput.CreateWithout(MobileServiceFileSyncContextArgs.OperationQueue); var operationQueueMock = new Mock <IFileOperationQueue>(); operationQueueMock.Setup(m => m.GetOperationByFileIdAsync(It.Is <string>(s => string.Compare(s, testNewOperation.FileId) == 0))) .Returns(() => Task.FromResult <IMobileServiceFileOperation>(testExistingOperation.Object)); input.OperationsQueue = operationQueueMock.Object; MobileServiceFileSyncContext context = CreateContext(input); await context.QueueOperationAsync(testNewOperation); testExistingOperation.Verify(m => m.OnQueueingNewOperation(It.Is <IMobileServiceFileOperation>(o => o.Equals(testNewOperation))), Times.Once()); }
public async Task AddFileAsync(MobileServiceFile file) { var metadata = new MobileServiceFileMetadata { FileId = file.Id, FileName = file.Name, Length = file.Length, Location = FileLocation.Local, ContentMD5 = file.ContentMD5, ParentDataItemType = file.TableName, ParentDataItemId = file.ParentId }; await metadataStore.CreateOrUpdateAsync(metadata); var operation = new CreateMobileServiceFileOperation(Guid.NewGuid().ToString(), file.Id); await QueueOperationAsync(operation); NotifyFileOperationCompletion(file, FileOperationKind.Create, FileOperationSource.Local); }
private bool IsOperationValid(CreateMobileServiceFileOperation operation) { return(operation.FileId == this.inputFile.Id && operation.Kind == FileOperationKind.Create && operation.State == FileOperationState.Pending); }