public void WhenFileExistsItIsUpdated() { // Arrange IDataAdapter <Album> albumAdapterMock; IDataAdapter <Genre> genreAdapterMock; IDataAdapter <Artist> artistAdapterMock; IDataAdapter <Title> titleAdapterMock; IDataAdapter <Year> yearAdapterMock; var adaptersMock = TestHelper.CreateReferenceAdaptersMock( out albumAdapterMock, out artistAdapterMock, out titleAdapterMock, out genreAdapterMock, out yearAdapterMock); var fileAdapterMock = Mock.Create <IDataAdapter <StorableTaggedFile> >(); const string fileName = "Filename"; var existingId = StorableTaggedFile.GenerateLowerCaseId(fileName, StorableTaggedFile.FilenameNamespace); var existingFile = new StorableTaggedFile { Filename = fileName }; Mock.Arrange(() => fileAdapterMock.GetFirstById(existingId)).Returns(existingFile); var file = new StorableTaggedFile { Album = new Album { Name = "Album" }, Artist = new Artist { Name = "Artist" }, Comment = "Blah", Filename = fileName, Genre = new Genre { Name = "Genre" }, Title = new Title { Name = "Title" }, TrackNo = 50000, Year = new Year { Name = "Year" }, Id = existingId, }; var target = new Builder <TaggedFilePersister>().With(adaptersMock).With(fileAdapterMock).Build(); target.Save(file); Assert.AreEqual(file.AlbumId, existingFile.AlbumId); Assert.AreEqual(file.ArtistId, existingFile.ArtistId); Assert.AreEqual(file.Comment, existingFile.Comment); Assert.AreEqual(file.Filename, existingFile.Filename); Assert.AreEqual(file.GenreId, existingFile.GenreId); Assert.AreEqual(file.TitleId, existingFile.TitleId); Assert.AreEqual(file.TrackNo, existingFile.TrackNo); Assert.AreEqual(file.YearId, existingFile.YearId); }
public void WhenSaveReferencesQueried() { // Arrange IDataAdapter <Album> albumAdapterMock; IDataAdapter <Genre> genreAdapterMock; IDataAdapter <Artist> artistAdapterMock; IDataAdapter <Title> titleAdapterMock; IDataAdapter <Year> yearAdapterMock; var adaptersMock = TestHelper.CreateReferenceAdaptersMock( out albumAdapterMock, out artistAdapterMock, out titleAdapterMock, out genreAdapterMock, out yearAdapterMock); var fileAdapterMock = Mock.Create <IDataAdapter <StorableTaggedFile> >(); var configManagerMock = Mock.Create <IConfigurationManager>(); Mock.Arrange(() => configManagerMock.GetValue(Arg.IsAny <string>(), Arg.IsAny <int>(), Arg.IsAny <string>())) .Returns(Mock.Create <IConfigurableValue <int> >()); var file = new StorableTaggedFile { Album = new Album { Name = "Album" }, Artist = new Artist { Name = "Artist" }, Comment = "Blah", Filename = "Blah2", Genre = new Genre { Name = "Genre" }, Title = new Title { Name = "Title" }, TrackNo = 50000, Year = new Year { Name = "Year" }, }; var target = new Builder <TaggedFilePersister>().With(adaptersMock).With(fileAdapterMock).With(configManagerMock).Build(); // Act target.Save(file); // Assert // ReSharper disable ImplicitlyCapturedClosure Mock.Assert( () => albumAdapterMock.GetFirstById(StorableTaggedFile.GenerateLowerCaseId(file.Album.Name, StorableTaggedFile.AlbumNamespace))); Mock.Assert( () => genreAdapterMock.GetFirstById(StorableTaggedFile.GenerateLowerCaseId(file.Genre.Name, StorableTaggedFile.GenreNamespace))); Mock.Assert( () => artistAdapterMock.GetFirstById(StorableTaggedFile.GenerateLowerCaseId(file.Artist.Name, StorableTaggedFile.ArtistNamespace))); Mock.Assert( () => titleAdapterMock.GetFirstById(StorableTaggedFile.GenerateLowerCaseId(file.Title.Name, StorableTaggedFile.TitleNamespace))); Mock.Assert( () => yearAdapterMock.GetFirstById(StorableTaggedFile.GenerateLowerCaseId(file.Year.Name, StorableTaggedFile.YearNamespace))); // ReSharper restore ImplicitlyCapturedClosure }