Example #1
0
        public void ThrowsWhenTheDeviceIsOffline()
        {
            var    observables   = createFetchObservables(Observable.Throw <ITestModel>(new OfflineException(new Exception())));
            var    state         = new EnsureFetchSingletonSucceededState <ITestModel>();
            Action startingState = () => state.Start(observables).Wait();

            startingState.Should().Throw <OfflineException>();
        }
Example #2
0
        public async Task ReturnsFailureResultWhenFetchingThrows(ApiException exception)
        {
            var fetchObservables = createFetchObservables(Observable.Throw <ITestModel>(exception));
            var state            = new EnsureFetchSingletonSucceededState <ITestModel>();
            var transition       = await state.Start(fetchObservables);

            transition.Result.Should().Be(state.ErrorOccured);
        }
Example #3
0
        public async Task ReturnsContinueResultWhenFetchingCompletes()
        {
            var fetchObservables = createFetchObservables(Observable.Return(new TestModel()));
            var state            = new EnsureFetchSingletonSucceededState <ITestModel>();
            var transition       = await state.Start(fetchObservables);

            transition.Result.Should().Be(state.Done);
        }
Example #4
0
        public void ThrowsIfFetchObservablePublishesTwice()
        {
            var fetchObservables = createFetchObservables(
                Observable.Create <ITestModel>(observer =>
            {
                observer.OnNext(new TestModel());
                observer.OnNext(new TestModel());
                return(() => { });
            }));
            var    state      = new EnsureFetchSingletonSucceededState <ITestModel>();
            Action fetchTwice = () => state.Start(fetchObservables).Wait();

            fetchTwice.Should().Throw <InvalidOperationException>();
        }