public async Task Should_Pull_Disasters()
        {
            var result = new UpdateResult <Disaster>();

            _pullService.Pull <Disaster>().Returns(Task.FromResult(result));

            var syncResult = await _service.Sync(_user);

            Assert.That(syncResult.HasErrors, Is.False);
            await _pullService.Received().Pull <Disaster>();
        }
        public async Task Should_Persist_Successful_Items()
        {
            var tm1 = CreateTestModel();
            var tm2 = CreateTestModel();

            SetupSuccessfulPull(tm1, tm2);

            await _service.Pull <TestModel>();

            _persistenceContext.Received().Save(tm1);
            _persistenceContext.Received().Save(tm2);
        }
Exemple #3
0
        public async Task Should_NOT_Pull_Attributes_When_Assessments_Are_Not_Pulled_Successfully()
        {
            SetupEmptyPush();
            var assessmentUpdateResult = new UpdateResult <Assessment>();

            assessmentUpdateResult.Failed(CreateItem <Assessment>(), "error!!");
            _pullService.Pull <Assessment>(_query).Returns(Task.FromResult(assessmentUpdateResult));

            var syncResult = await _syncService.Sync(_user);

            Assert.That(syncResult.HasErrors);
            await _pullService.DidNotReceiveWithAnyArgs().Pull <AssessmentAttribute>();
        }
Exemple #4
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);
        }
Exemple #5
0
        public async Task <IEnumerable <Disaster> > GetDisasters(bool reload = false)
        {
            var lastDownload = GetLastDownloadDate();

            if (reload || (lastDownload.HasValue && DateTimeOffset.UtcNow.Subtract(lastDownload.Value).TotalDays >= 1))
            {
                await _pullService.Pull <Disaster>();

                UpdateLastDownloadDate();
            }
            return(await _service.GetDisasters());
        }
Exemple #6
0
        public async Task <SyncResult> Sync(User user)
        {
            var pullResult = await _pullService.Pull <Disaster>();

            var pulledItems = new HashSet <string>(pullResult.SuccessfulItems.Select(i => i.ObjectId));

            if (!pullResult.FailedItems.Any() && pulledItems.Any())
            {
                PurgeRelated <Assessment>(pulledItems);
                PurgeRelated <Shelter>(pulledItems);
            }
            return(pullResult.FailedItems.Any() ? SyncResult.Failed("Unable to pull latest Disasters.")
                : SyncResult.Success());
        }
Exemple #7
0
        public async Task <SyncResult> Sync(User user)
        {
            var result = await _pullService.Pull <Attribute>();

            return(result.FailedItems.Any() ? SyncResult.Failed("Unable to pull latest Attributes.") : SyncResult.Success());
        }
        private async Task <bool> PullAttributes(IQuery query)
        {
            var pulledAttributesResult = await _pullService.Pull <TValuedAttribute>(query);

            return(!pulledAttributesResult.FailedItems.Any());
        }