public void AddTaskEventWhenAddSongMethodIsHandled()
        {
            MediaFile mediaFile1 = Create.MediaFile();
            MediaFile mediaFile2 = Create.MediaFile();
            MediaFile mediaFile3 = Create.MediaFile();

            SongToAdd songToAdd1 = new SongToAdd {IsSelected = true, Song = Create.Song(), MediaFile = mediaFile1};
            SongToAdd songToAdd2 = new SongToAdd {IsSelected = false, Song = Create.Song(), MediaFile = mediaFile2};
            SongToAdd songToAdd3 = new SongToAdd {IsSelected = true, Song = Create.Song(), MediaFile = mediaFile3};

            UploadSongsViewModel viewModel = new UploadSongsViewModel
                {
                    SongsToAdd = new ObservableCollection<SongToAdd>
                        {
                            songToAdd1,
                            songToAdd2,
                            songToAdd3,
                        }
                };

            viewModel.AddSongCommand.Execute(null);

            Assert.IsTrue(TaskEventCatcher.AddTaskInvoked);
            Assert.AreEqual(2, TaskEventCatcher.TaskListToAdd.Count);
            List<Song> expectedSongsToAdd =
                TaskEventCatcher.TaskListToAdd.Cast<UploadTask>().Select(ut => ut.Song).ToList();
            CollectionAssert.Contains(expectedSongsToAdd, songToAdd1.Song);
            CollectionAssert.DoesNotContain(expectedSongsToAdd, songToAdd2.Song);
            CollectionAssert.Contains(expectedSongsToAdd, songToAdd3.Song);
            Assert.AreEqual(2, TaskEventCatcher.AddTaskTimes);
        }
        public void InstantiateCorrectly()
        {
            SongToAdd songToAdd = new SongToAdd();
            DownloadTask uploadTask = new DownloadTask(songToAdd.Song);

            Assert.AreEqual(songToAdd.Song, uploadTask.Song);
        }
        public void InstantiateCorrectly()
        {
            SongToAdd songToAdd = new SongToAdd();
            UploadTask uploadTask = new UploadTask(songToAdd.Song, songToAdd.MediaFile);

            Assert.AreEqual(songToAdd.Song, uploadTask.Song);
            Assert.AreEqual(songToAdd.MediaFile, uploadTask.MediaFile);
        }
        public void CallServiceOnDoActionAndRaiseFinishedTaskEvent()
        {
            MediaFile mediaFile = Create.MediaFile();
            Song song = Create.Song();
            const string path = "path";
            SongToAdd songToAdd = new SongToAdd()
                {
                    IsSelected = true,
                    MediaFile = mediaFile,
                    Path = path,
                    Song = song
                };

            UploadTask uploadTask = new UploadTask(songToAdd.Song, songToAdd.MediaFile);
            uploadTask.DoActionInNewThread();
            while (uploadTask.Worker.IsBusy) { }

            Assert.AreEqual(string.Format(MusicResource.UploadSongTask, songToAdd.Song.Title), uploadTask.StringDescription);
            MockService.Verify(s => s.AddASong(songToAdd.Song, songToAdd.MediaFile), Times.Once());
        }