public void PlaylistFinishedEventHandler_AllSongsHaveRatingSet_DoesNotShowRatePlaylistSongsView() { // Arrange var songs = new[] { new SongModel { Rating = RatingModel.R5 }, new SongModel { Rating = RatingModel.R8 }, }; var playlistFinishedEvent = new PlaylistFinishedEventArgs(songs); var mocker = new AutoMocker(); mocker.Use(Enumerable.Empty <IApplicationInitializer>()); var target = mocker.CreateInstance <ApplicationViewModel>(); // Act Messenger.Default.Send(playlistFinishedEvent); // Assert mocker.GetMock <IViewNavigator>().Verify(x => x.ShowRatePlaylistSongsView(It.IsAny <IEnumerable <SongModel> >()), Times.Never); }
public async Task SongPlaybackFinishedEventHandler_IfPlaylistHasMoreSongs_StartsPlayingNextSong() { // Arrange var songs = new[] { new SongModel { Id = new ItemId("Song 1") }, new SongModel { Id = new ItemId("Song 2") }, }; var currentSongIndex = 0; var playlistStub = new Mock <IPlaylistViewModel>(); playlistStub.Setup(x => x.Songs).Returns(songs); playlistStub.Setup(x => x.CurrentSong).Returns(() => songs[currentSongIndex]); playlistStub.Setup(x => x.SwitchToNextSong(It.IsAny <CancellationToken>())).Callback <CancellationToken>(_ => currentSongIndex++); var songPlayerMock = new Mock <ISongPlayerViewModel>(); var mocker = new AutoMocker(); mocker.Use(playlistStub); mocker.Use(songPlayerMock); var target = mocker.CreateInstance <PlaylistPlayerViewModel>(); await target.ReversePlaying(CancellationToken.None); songPlayerMock.Invocations.Clear(); PlaylistFinishedEventArgs playlistFinishedEvent = null; Messenger.Default.Register <PlaylistFinishedEventArgs>(this, e => e.RegisterEvent(ref playlistFinishedEvent)); // Act Messenger.Default.Send(new SongPlaybackFinishedEventArgs()); // Assert songPlayerMock.Verify(x => x.Play(songs[1], It.IsAny <CancellationToken>()), Times.Once); playlistFinishedEvent.Should().BeNull(); }
public async Task SongPlaybackFinishedEventHandler_IfPlaylistHasNoMoreSongs_SendsPlaylistFinishedEvent() { // Arrange var songs = new[] { new SongModel { Id = new ItemId("Song 1") }, new SongModel { Id = new ItemId("Song 2") }, }; var currentSong = songs.Last(); var playlistStub = new Mock <IPlaylistViewModel>(); playlistStub.Setup(x => x.Songs).Returns(songs); playlistStub.Setup(x => x.CurrentSong).Returns(() => currentSong); playlistStub.Setup(x => x.SwitchToNextSong(It.IsAny <CancellationToken>())).Callback <CancellationToken>(_ => currentSong = null); var mocker = new AutoMocker(); mocker.Use(playlistStub); var target = mocker.CreateInstance <PlaylistPlayerViewModel>(); await target.ReversePlaying(CancellationToken.None); PlaylistFinishedEventArgs playlistFinishedEvent = null; Messenger.Default.Register <PlaylistFinishedEventArgs>(this, e => e.RegisterEvent(ref playlistFinishedEvent)); // Act Messenger.Default.Send(new SongPlaybackFinishedEventArgs()); // Assert playlistFinishedEvent.Should().NotBeNull(); playlistFinishedEvent.Songs.Should().BeEquivalentTo(songs, x => x.WithStrictOrdering()); }