public void Assure_identical_WorkEffortHistoryItem_in_different_projects_are_distinct_in_database()
        {
            var persister = new ProjectInfoServerDatabaseRepository(sessionFactory);
            persister.Save(server);

            RecreateSessionFactory();

            var projectInfoServers =
                DatabaseRetriever.GetDatamodelFromDatabase<ProjectInfoServer>(sessionFactory);

            var CommonWorkEffortHistoryItemInProject1 =
                projectInfoServers[0].Projects.ElementAt(0).Iterations.ElementAt(0).Tasks.ElementAt(0).
                    WorkEffortHistory.Last();
            var CommonWorkEffortHistoryItemInProject2 =
                projectInfoServers[0].Projects.ElementAt(1).Iterations.ElementAt(0).Tasks.ElementAt(0).
                    WorkEffortHistory.Last();

            CommonWorkEffortHistoryItemInProject1.ShouldNotBe(CommonWorkEffortHistoryItemInProject2);
        }
        public void Assure_entire_hierarcy_is_correctly_persisted()
        {
            var persister = new ProjectInfoServerDatabaseRepository(sessionFactory);
            persister.Save(server);

            RecreateSessionFactory();
            var projectInfoServers = DatabaseRetriever.GetDatamodelFromDatabase<ProjectInfoServer>(sessionFactory);

            projectInfoServers.Count.ShouldBe(1);
            projectInfoServers[0].Name.ShouldBe(server.Name);

            var piServer = projectInfoServers.First();
            piServer.Projects.Count().ShouldBe(2);

            var project1 = piServer.Projects.ElementAt(0);
            project1.Name.ShouldBe(TESTPROJECTNAME_ONE);
            project1.Server.ShouldBe(piServer);
            project1.Iterations.Count().ShouldBe(1);

            var project2 = piServer.Projects.ElementAt(1);
            project2.Name.ShouldBe(TESTPROJECTNAME_TWO);
            project2.Server.ShouldBe(piServer);
            project2.Iterations.Count().ShouldBe(1);

            var iteration1 = project1.Iterations.ElementAt(0);
            iteration1.Name.ShouldBe(TESTITERATIONNAME_ONE);
            iteration1.Project.ShouldBe(project1);
            iteration1.Tasks.Count().ShouldBe(1);
            iteration1.Tasks.ElementAt(0).Iteration.ShouldBe(iteration1);

            var iteration2 = project2.Iterations.ElementAt(0);
            iteration2.Name.ShouldBe(TESTITERATIONNAME_TWO);
            iteration2.Project.ShouldBe(project2);
            iteration2.Tasks.Count().ShouldBe(1);
            iteration2.Tasks.ElementAt(0).Iteration.ShouldBe(iteration2);

            var task1 = iteration1.Tasks.ElementAt(0);
            task1.Name.ShouldBe(TESTTASKNAME_ONE);
            task1.Iteration.ShouldBe(iteration1);
            task1.WorkEffortHistory.Count().ShouldBe(2);
            task1.WorkEffortHistory.ElementAt(0).Task.ShouldBe(task1);

            var task2 = iteration2.Tasks.ElementAt(0);
            task2.Name.ShouldBe(TESTTASKNAME_TWO);
            task2.Iteration.ShouldBe(iteration2);
            task2.WorkEffortHistory.Count().ShouldBe(2);
            task2.WorkEffortHistory.ElementAt(0).Task.ShouldBe(task2);

            var whei_1_1 = task1.WorkEffortHistory.ElementAt(0);
            whei_1_1.Task.ShouldBe(task1);
            var whei_1_2 = task1.WorkEffortHistory.ElementAt(1);
            whei_1_2.Task.ShouldBe(task1);

            var whei_2_1 = task2.WorkEffortHistory.ElementAt(0);
            whei_2_1.Task.ShouldBe(task2);
            var whei_2_2 = task2.WorkEffortHistory.ElementAt(1);
            whei_2_2.Task.ShouldBe(task2);
        }