public void Setup() { _pushService = Substitute.For <IPushService>(); _pullService = Substitute.For <IPullService>(); _persistenceContextFactory = Substitute.For <IPersistenceContextFactory>(); _queryProvider = Substitute.For <IBackendlessQueryProvider>(); _query = Substitute.For <IBackendlessQuery>(); _queryProvider.Where().Returns(_query); _pullService.Pull <Assessment>().ReturnsForAnyArgs(Task.FromResult(new UpdateResult <Assessment>())); _pullService.Pull <AssessmentAttribute>().ReturnsForAnyArgs(Task.FromResult(new UpdateResult <AssessmentAttribute>())); _user = new User { Token = "blah", ObjectId = "xyz" }; _query.OwnedBy(_user.ObjectId).IsActive().Returns(_query); _syncService = new AttributedItemSyncService <Assessment, AssessmentAttribute>(_pushService, _pullService, _queryProvider, _persistenceContextFactory); }
public async Task <SyncResult> Sync(User user) { if (!await PushWith(user)) { return(SyncResult.Failed($"Unable to completely push {typeof(TItem).Name}.")); } var query = _queryProvider.Where().OwnedBy(user.ObjectId).IsActive(); if (!await PullAssessments(query)) { return(SyncResult.Failed($"Unable to pull latest {typeof(TItem).Name} from server.")); } if (!await PullAttributes(query)) { return(SyncResult.Failed($"Unable to pull latest {typeof(TValuedAttribute).Name} from server.")); } // remove all assessments that do not belong to this user RemoveOtherUsersItems(user); return(SyncResult.Success()); }