Пример #1
0
        IPlayViewModel setupStandardMock(MoqMockingKernel kernel, IRoutingState router, Action extraSetup = null)
        {
            kernel.Bind <IPlayViewModel>().To <PlayViewModel>();

            var playApi = kernel.GetMock <IPlayApi>();

            playApi.Setup(x => x.ListenUrl()).Returns(Observable.Never <string>());
            playApi.Setup(x => x.ConnectToSongChangeNotifications()).Returns(Observable.Never <Unit>());
            playApi.Setup(x => x.NowPlaying()).Returns(Observable.Return(Fakes.GetSong()));
            playApi.Setup(x => x.Queue()).Returns(Observable.Return(Fakes.GetAlbum()));
            playApi.Setup(x => x.FetchImageForAlbum(It.IsAny <Song>())).Returns(Observable.Return <BitmapImage>(null));

            kernel.GetMock <IScreen>().Setup(x => x.Router).Returns(router);

            kernel.GetMock <ILoginMethods>()
            .Setup(x => x.EraseCredentialsAndNavigateToLogin())
            .Callback(() => router.Navigate.Execute(kernel.Get <IWelcomeViewModel>()));

            kernel.GetMock <ILoginMethods>()
            .Setup(x => x.CurrentAuthenticatedClient)
            .Returns(kernel.Get <IPlayApi>());

            if (extraSetup != null)
            {
                extraSetup();
            }

            RxApp.ConfigureServiceLocator((t, s) => kernel.Get(t, s), (t, s) => kernel.GetAll(t, s));
            return(kernel.Get <IPlayViewModel>());
        }
        static ISongTileViewModel setupStandardFixture(Song song, MoqMockingKernel kernel)
        {
            kernel.Bind <IBlobCache>().To <TestBlobCache>().Named("UserAccount");
            kernel.Bind <IBlobCache>().To <TestBlobCache>().Named("LocalMachine");

            kernel.GetMock <IPlayApi>().Setup(x => x.QueueSong(It.IsAny <Song>()))
            .Returns(Observable.Return(Unit.Default))
            .Verifiable();

            kernel.GetMock <IPlayApi>().Setup(x => x.AllSongsOnAlbum(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(Observable.Return(Fakes.GetAlbum()))
            .Verifiable();

            kernel.GetMock <IPlayApi>().Setup(x => x.FetchImageForAlbum(It.IsAny <Song>()))
            .Returns(Observable.Return(new BitmapImage()));

            return(new SongTileViewModel(song, kernel.Get <IPlayApi>()));
        }
        public void QueueingAlbumShouldCallQueueSongForEverySong()
        {
            var kernel = new MoqMockingKernel();
            var song   = Fakes.GetSong();

            var fakeAlbum   = Fakes.GetAlbum();
            var queuedSongs = new List <Song>();
            var fixture     = setupStandardFixture(song, kernel);

            kernel.GetMock <IPlayApi>().Setup(x => x.QueueSong(It.IsAny <Song>()))
            .Callback <Song>(queuedSongs.Add)
            .Returns(Observable.Return(Unit.Default))
            .Verifiable();

            fixture.QueueAlbum.Execute(null);

            this.Log().Info("Queued songs: {0}", String.Join(",", queuedSongs.Select(x => x.name)));
            queuedSongs.Count.Should().Be(fakeAlbum.Count);
            fakeAlbum.Zip(queuedSongs, (e, a) => e.id == a.id).All(x => x).Should().BeTrue();
        }