public void ImageExplorerViewModel_SyncsIntialItemsFromCache_WhenItemsAvailable() =>
        new TestScheduler().With(scheduler =>
        {
            var source = new SourceCache <ImageHandle, string>(x => x.LoadingSettings.FilePath);
            source.AddOrUpdate(GetDummyHandle("foo"));

            var sut = new ImageExplorerViewModel(source.AsObservableCache());
            sut.Activator.Activate();

            scheduler.AdvanceBy(2);

            Assert.Equal(1, sut.Children.Count);
        });
        public void ImageExplorerViewModel_SelectionsObservableFires_WhenNewItemSelected() =>
        new TestScheduler().With(scheduler =>
        {
            bool success = false;

            var source = new SourceCache <ImageHandle, string>(x => x.LoadingSettings.FilePath);
            source.AddOrUpdate(GetDummyHandle("foo"));
            source.AddOrUpdate(GetDummyHandle("bar"));

            var sut = new ImageExplorerViewModel(source.AsObservableCache());
            sut.Activator.Activate();
            scheduler.AdvanceBy(2);
            sut.Selections.Where(x => x.LoadingSettings.FilePath == "bar").Subscribe(_ => success = true);
            sut.SelectNext.Execute().Subscribe();
            scheduler.AdvanceBy(2);

            Assert.True(success);
        });
        public void ImageExplorerViewModel_SelectNextSelectsNextItem_WhenAtLeastTwoItemsAvailable() =>
        new TestScheduler().With(scheduler =>
        {
            var source = new SourceCache <ImageHandle, string>(x => x.LoadingSettings.FilePath);
            source.AddOrUpdate(GetDummyHandle("foo"));
            source.AddOrUpdate(GetDummyHandle("bar"));

            var sut = new ImageExplorerViewModel(source.AsObservableCache());
            sut.Activator.Activate();
            scheduler.AdvanceBy(2);

            Assert.Equal("foo", sut.SelectedItem.ExplorerItem.FilePath);

            sut.SelectNext.Execute().Subscribe();
            scheduler.AdvanceBy(1);

            Assert.Equal("bar", sut.SelectedItem.ExplorerItem.FilePath);
        });