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(); }