Esempio n. 1
0
        public void ShouldCreateGenreWithArtists()
        {
            Genre savedGenre = new Genre { Name = "Pop" };
            List<Artist> artists = new List<Artist> {
                    new Artist { Name = "1" },
                    new Artist { Name = "2" }
                };
            savedGenre.AddArtists(artists);
            Session.SaveOrUpdate(savedGenre);
            m_uow.Commit();
            Session.Clear();

            Genre retrievedGenre = Session.Get<Genre>(1);

            Assert.AreNotEqual(null, retrievedGenre);
            Assert.IsFalse(ReferenceEquals(savedGenre, retrievedGenre));
            Assert.AreEqual(savedGenre.Name, retrievedGenre.Name);
            Assert.AreEqual(savedGenre.Artists.Count, retrievedGenre.Artists.Count);
            Assert.IsFalse(ReferenceEquals(savedGenre.Artists[0], retrievedGenre.Artists[0]));
            Assert.AreEqual(savedGenre.Artists[0].Name, retrievedGenre.Artists[0].Name);
            Assert.IsFalse(ReferenceEquals(savedGenre.Artists[1], retrievedGenre.Artists[1]));
            Assert.AreEqual(savedGenre.Artists[1].Name, retrievedGenre.Artists[1].Name);

            //new PersistenceSpecification<Genre>(Session)
            //    .CheckProperty(g => g.Id, 1) //identity starts at 1 - can't reset to zero
            //    .CheckProperty(g => g.Name, "Genre")
            //    .CheckList(g => g.Artists, artists, (g, a) => g.AddArtist(a))
            //    .VerifyTheMappings();
        }
        protected override void SetupContext(ISession session)
        {
            Mock<IValidator> v = new Mock<IValidator>();
            m_repository = new ArtistsRepository(session, v.Object);

            SortedDictionary<int, Artist> artists = new SortedDictionary<int, Artist>();
            for (int i = 1; i <= 4; i++)
            {
                artists.Add(i, new Artist { Name = i.ToString() });
            }

            Genre pop = new Genre { Name = "Pop" };
            pop.AddArtists(artists.Values.Take(2));

            Genre rock = new Genre { Name = "Rock" };
            rock.AddArtists(artists.Values.Skip(2).Take(2));

            session.Save(pop);
            session.Save(rock);
        }