Example #1
0
        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());
        }