public void ShouldMap()
        {
            var sessionFactory = new NHibernateConfiguration().Configure().BuildSessionFactory();

            using (var session = sessionFactory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var createdUser = new User {GooglePlusId = "some id?", Name = "user name"};
                    var playlist = new Playlist("boss songs") {User = createdUser};
                    createdUser.AddPlaylist(playlist);

                    session.Save(createdUser);
                    session.Flush();
                    session.Clear();

                    var savedUser = session.Get<User>(createdUser.Id);
                    Assert.That(savedUser.Id, Is.Not.EqualTo(Guid.Empty));

                    Assert.That(savedUser.GooglePlusId, Is.EqualTo(createdUser.GooglePlusId));
                    Assert.That(savedUser.Name, Is.EqualTo(createdUser.Name));
                    Assert.That(savedUser.Playlists, Has.Count.EqualTo(2));

                    Assert.That(session.Query<Playlist>().Where(p => p.User == savedUser).ToList(), Has.Count.EqualTo(2));

                    transaction.Rollback();
                }
            }
        }
        public void ShouldMap()
        {
            var sessionFactory = new NHibernateConfiguration().Configure().BuildSessionFactory();

            using (var session = sessionFactory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var createdUser = new User {GooglePlusId = "some id?", Name = "user name"};
                    session.Save(createdUser);

                    var playlist2 = new Playlist("users second playlist")
                        {
                            User = createdUser,
                            Sequence = 200,
                        };

                    var video = new Video
                        {
                            Id = "some id",
                            Author = "video author",
                            Duration = 90,
                            HighDefinition = true,
                            Title = "my video",
                        };
                    session.Save(video);
                    var playlistItem = new PlaylistItem
                        {
                            Cid = "cid",
                            Playlist = playlist2,
                            Video = video,
                            Sequence = 300,
                            Title = "My playlist item",
                        };

                    playlist2.AddItem(playlistItem);

                    session.Save(playlist2);

                    session.Flush();
                    session.Clear();

                    var savedPlaylistItem = session.Get<PlaylistItem>(playlistItem.Id);

                    Assert.That(savedPlaylistItem.Title, Is.EqualTo("My playlist item"));
                    Assert.That(savedPlaylistItem.Id, Is.Not.EqualTo(Guid.Empty));
                    Assert.That(savedPlaylistItem.Sequence, Is.EqualTo(300));

                    Assert.That(savedPlaylistItem.Video, Is.EqualTo(playlistItem.Video));

                    transaction.Rollback();
                }
            }
        }
        public void ShouldMap()
        {
            var sessionFactory = new NHibernateConfiguration().Configure().BuildSessionFactory();

            using (var session = sessionFactory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var createdUser = new User {GooglePlusId = "some id?", Name = "user name"};

                    session.Save(createdUser);

                    var playlist2 = new Playlist("users second playlist")
                        {
                            User = createdUser,
                            Sequence = 200,
                        };

                    var playlistItem = new PlaylistItem
                        {
                            Cid = "cid",
                            Playlist = playlist2,
                            Video = new Video(),
                            Sequence = 200,
                        };

                    playlist2.AddItem(playlistItem);

                    var playlistId = session.Save(playlist2);

                    session.Flush();
                    session.Clear();

                    var savedPlaylist = session.Get<Playlist>(playlistId);

                    Assert.That(savedPlaylist.Title, Is.EqualTo("users second playlist"));
                    Assert.That(savedPlaylist.Id, Is.Not.EqualTo(Guid.Empty));
                    Assert.That(savedPlaylist.Sequence, Is.EqualTo(200));

                    Assert.That(savedPlaylist.Items, Has.Exactly(1).EqualTo(playlistItem));

                    transaction.Rollback();
                }
            }
        }
        public void ShouldMap()
        {
            var sessionFactory = new NHibernateConfiguration().Configure().BuildSessionFactory();

            using (var session = sessionFactory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    new PersistenceSpecification<Video>(session)
                        .CheckProperty(v => v.Author, "author")
                        .CheckProperty(v => v.Duration, 90)
                        .CheckProperty(v => v.HighDefinition, true)
                        .CheckProperty(v => v.Id, "some id")
                        .CheckProperty(v => v.Title, "title")
                        .VerifyTheMappings();

                    transaction.Rollback();
                }
            }
        }
        public void ShouldMap()
        {
            var sessionFactory = new NHibernateConfiguration().Configure().BuildSessionFactory();

            using (var session = sessionFactory.OpenSession())
            {
                using (session.BeginTransaction())
                {
                    var sampleOccurenceTime = DateTime.Today;

                    new PersistenceSpecification<Error>(session)
                        .CheckProperty(e => e.LineNumber, 1)
                        .CheckProperty(e => e.Message, "testmessage")
                        .CheckProperty(e => e.OperatingSystem, "operating system")
                        .CheckProperty(e => e.TimeOccurred, sampleOccurenceTime)
                        .CheckProperty(e => e.Url, "url")
                        .CheckProperty(e => e.Architecture, "astrological")
                        .VerifyTheMappings();
                }
            }
        }