public void FindAllUpdated_DAL_Called()
        {
            // Arrange
            var educationPlanConverterMock = new Mock <IEducationPlanConverter>(MockBehavior.Strict);

            var moduleDataMapperMock = new Mock <IDataMapper <Module> >(MockBehavior.Strict);

            moduleDataMapperMock.Setup(dataMapper => dataMapper.FindAll()).Returns(GetDummyDataModules());

            var educationPlanDataMapperMock = new Mock <IEducationPlanDataMapper>(MockBehavior.Strict);

            educationPlanDataMapperMock.Setup(dataMapper => dataMapper.FindAllUpdated()).Returns(GetDummyEducationPlanCompareList());

            var educationPlanOutputterMock = new Mock <IEducationPlanOutputter>(MockBehavior.Strict);
            var plannerMock       = new Mock <IPlanner>(MockBehavior.Strict);
            var courseServiceMock = new Mock <ICourseService>(MockBehavior.Strict);

            var profileDataMapperMock = new Mock <IDataMapper <CourseProfile> >(MockBehavior.Strict);

            EducationPlanManager manager = new EducationPlanManager(courseServiceMock.Object, plannerMock.Object, educationPlanOutputterMock.Object, profileDataMapperMock.Object, educationPlanDataMapperMock.Object, educationPlanConverterMock.Object, moduleDataMapperMock.Object);

            // Act
            var result = manager.FindAllUpdated();

            // Assert
            educationPlanDataMapperMock.Verify(dataMapper => dataMapper.FindAllUpdated());
        }
        public void GenerateEducationPlan_null_ExceptionThrowed()
        {
            // Arrange
            var courses = new Collection <RestEducationPlanCourse> {
                new RestEducationPlanCourse
                {
                    Code = "2NETARCH"
                },
                new RestEducationPlanCourse
                {
                    Code = "ADCSB"
                },
            };

            var educationPlanDataMapperMock = new Mock <IEducationPlanDataMapper>(MockBehavior.Strict);
            var educationPlanOutputterMock  = new Mock <IEducationPlanOutputter>(MockBehavior.Strict);
            var plannerMock                = new Mock <IPlanner>(MockBehavior.Strict);
            var courseServiceMock          = new Mock <ICourseService>(MockBehavior.Strict);
            var profileDataMapperMock      = new Mock <IDataMapper <CourseProfile> >(MockBehavior.Strict);
            var educationPlanConverterMock = new Mock <IEducationPlanConverter>(MockBehavior.Strict);
            var moduleDataMapperMock       = new Mock <IDataMapper <Module> >(MockBehavior.Strict);

            EducationPlanManager manager       = new EducationPlanManager(courseServiceMock.Object, plannerMock.Object, educationPlanOutputterMock.Object, profileDataMapperMock.Object, educationPlanDataMapperMock.Object, educationPlanConverterMock.Object, moduleDataMapperMock.Object);
            RestEducationPlan    educationPlan = GetDummyRestEducationPlan(courses);

            // Act
            var result = manager.GenerateEducationPlan(null, null);

            // Assert ArgumentNullException
        }
Beispiel #3
0
        public void GenerateEducationPlan_IntegrationTest_WithPriority()
        {
            var courses = new Collection <RestEducationPlanCourse> {
                new RestEducationPlanCourse
                {
                    Code = "2NETARCH"
                },
                new RestEducationPlanCourse
                {
                    Code       = "ADCSB",
                    Priority   = -1,
                    Commentary = "Force to plan"
                },
            };

            RestEducationPlan restEducationPlan = GetDummyRestEducationPlan(courses);

            restEducationPlan.InPaymentFrom = new DateTime(2017, 3, 5);
            var courseServiceMock = new Mock <ICourseService>(MockBehavior.Strict);

            courseServiceMock.Setup(service => service.FindCourses(new List <string> {
                "2NETARCH", "ADCSB"
            })).Returns(
                new List <Integration.Course>()
            {
                CreateNewIntegrationCourseWithOneCourseImplementation("2NETARCH", 1,
                                                                      new Collection <DateTime> {
                    new DateTime(2017, 3, 6), new DateTime(2017, 3, 7), new DateTime(2017, 3, 8)
                }),
                CreateNewIntegrationCourseWithOneCourseImplementation("ADCSB", 1,
                                                                      new Collection <DateTime> {
                    new DateTime(2017, 3, 6), new DateTime(2017, 3, 7), new DateTime(2017, 3, 8)
                }),
            });
            var dalConfig = DalConfiguration.Configuration;

            IEducationPlanManager manager = new EducationPlanManager(dalConfig.ProfilePath, courseServiceMock.Object, dalConfig.ManagementPropertiesPath, dalConfig.EducationPlanPath, dalConfig.EducationPlanUpdatedPath, dalConfig.ModulePath);

            // Act
            var result = manager.GenerateEducationPlan(restEducationPlan, null);

            // Assert
            courseServiceMock.Verify(outputter => outputter.FindCourses(new List <string> {
                "2NETARCH", "ADCSB"
            }));

            Assert.AreEqual(3, result.PlannedCourses.Count());
            Assert.AreEqual("ADCSB", result.PlannedCourses.ElementAt(0).Code);
            Assert.AreEqual("Force to plan", result.PlannedCourses.ElementAt(0).Commentary);
            Assert.AreEqual("OLC1", result.PlannedCourses.ElementAt(1).Code);
            Assert.AreEqual("OLC2", result.PlannedCourses.ElementAt(2).Code);
            Assert.AreEqual(7, result.NotPlannedCourses.Count());
            Assert.AreEqual("2NETARCH", result.NotPlannedCourses.ElementAt(0).Code);
        }
        public void FindEducationPlans_DAL_Called()
        {
            // Arrange
            var courses = new Collection <RestEducationPlanCourse> {
                new RestEducationPlanCourse
                {
                    Code = "2NETARCH"
                },
                new RestEducationPlanCourse
                {
                    Code = "ADCSB"
                },
            };
            var educationPlanConverterMock = new Mock <IEducationPlanConverter>(MockBehavior.Strict);

            var moduleDataMapperMock = new Mock <IDataMapper <Module> >(MockBehavior.Strict);

            moduleDataMapperMock.Setup(dataMapper => dataMapper.FindAll()).Returns(GetDummyDataModules());

            var educationPlanDataMapperMock = new Mock <IEducationPlanDataMapper>(MockBehavior.Strict);

            educationPlanDataMapperMock.Setup(dataMapper => dataMapper.Find(It.IsAny <Func <EducationPlan, bool> >())).Returns(new List <EducationPlan>()
            {
                GetDummyEducationPlan()
            });

            var educationPlanOutputterMock = new Mock <IEducationPlanOutputter>(MockBehavior.Strict);
            var plannerMock       = new Mock <IPlanner>(MockBehavior.Strict);
            var courseServiceMock = new Mock <ICourseService>(MockBehavior.Strict);

            var profileDataMapperMock = new Mock <IDataMapper <CourseProfile> >(MockBehavior.Strict);

            EducationPlanManager manager = new EducationPlanManager(courseServiceMock.Object, plannerMock.Object, educationPlanOutputterMock.Object, profileDataMapperMock.Object, educationPlanDataMapperMock.Object, educationPlanConverterMock.Object, moduleDataMapperMock.Object);

            // Act
            manager.FindEducationPlans(new EducationPlanSearch());

            // Assert
            educationPlanDataMapperMock.Verify(dataMapper => dataMapper.Find(It.IsAny <Func <EducationPlan, bool> >()));
        }
        public void GenerateWordFile_EducationPlanConverter_Called()
        {
            // Arrange
            var courses = new Collection <RestEducationPlanCourse> {
                new RestEducationPlanCourse
                {
                    Code = "2NETARCH"
                },
                new RestEducationPlanCourse
                {
                    Code = "ADCSB"
                },
            };
            var educationPlanDataMapperMock = new Mock <IEducationPlanDataMapper>(MockBehavior.Strict);

            var moduleDataMapperMock = new Mock <IDataMapper <Module> >(MockBehavior.Strict);

            moduleDataMapperMock.Setup(dataMapper => dataMapper.FindAll()).Returns(GetDummyDataModules());

            var educationPlanConverterMock = new Mock <IEducationPlanConverter>(MockBehavior.Strict);

            educationPlanConverterMock.Setup(converter => converter.GenerateWord(It.IsAny <EducationPlan>())).Returns("path");

            var educationPlanOutputterMock = new Mock <IEducationPlanOutputter>(MockBehavior.Strict);
            var plannerMock       = new Mock <IPlanner>(MockBehavior.Strict);
            var courseServiceMock = new Mock <ICourseService>(MockBehavior.Strict);

            var profileDataMapperMock = new Mock <IDataMapper <CourseProfile> >(MockBehavior.Strict);

            EducationPlanManager manager = new EducationPlanManager(courseServiceMock.Object, plannerMock.Object, educationPlanOutputterMock.Object, profileDataMapperMock.Object, educationPlanDataMapperMock.Object, educationPlanConverterMock.Object, moduleDataMapperMock.Object);

            // Act
            var result = manager.GenerateWordFile(GetDummyEducationPlan());

            // Assert
            Assert.AreEqual("path", result);
            educationPlanConverterMock.Verify(converter => converter.GenerateWord(It.IsAny <EducationPlan>()));
        }
Beispiel #6
0
        public void GenerateEducationPlan_IntegrationTest()
        {
            // Arrange
            var courses = new Collection <RestEducationPlanCourse> {
                new RestEducationPlanCourse {
                    Code = "2NETARCH"
                }
            };

            RestEducationPlan restEducationPlan = GetDummyRestEducationPlan(courses);
            var courseServiceMock = new Mock <ICourseService>(MockBehavior.Strict);

            courseServiceMock.Setup(service => service.FindCourses(new List <string> {
                "2NETARCH"
            })).Returns(
                new List <Integration.Course>()
            {
                CreateNewIntegrationCourseWithTwoCourseImplementations("2NETARCH", 1,
                                                                       new Collection <DateTime> {
                    new DateTime(2017, 1, 2), new DateTime(2017, 1, 3), new DateTime(2017, 1, 4)
                },
                                                                       new Collection <DateTime> {
                    new DateTime(2017, 3, 6), new DateTime(2017, 3, 7), new DateTime(2017, 3, 8)
                })
            });
            var dalConfig = DalConfiguration.Configuration;

            IEducationPlanManager manager = new EducationPlanManager(dalConfig.ProfilePath, courseServiceMock.Object, dalConfig.ManagementPropertiesPath, dalConfig.EducationPlanPath, dalConfig.EducationPlanUpdatedPath, dalConfig.ModulePath);

            // Act
            var result = manager.GenerateEducationPlan(restEducationPlan, null);


            // Assert
            courseServiceMock.Verify(service => service.FindCourses(new List <string> {
                "2NETARCH"
            }));

            Assert.AreEqual(7, result.PlannedCourses.Count());
            Assert.AreEqual(6, result.NotPlannedCourses.Count());

            Assert.AreEqual("OLC1", result.PlannedCourses.ElementAt(0).Code);
            Assert.AreEqual(new DateTime(2016, 12, 5), result.PlannedCourses.ElementAt(0).Date);
            Assert.AreEqual(5, result.PlannedCourses.ElementAt(0).Days);

            Assert.AreEqual("OLC2", result.PlannedCourses.ElementAt(1).Code);
            Assert.AreEqual(new DateTime(2016, 12, 12), result.PlannedCourses.ElementAt(1).Date);
            Assert.AreEqual(5, result.PlannedCourses.ElementAt(1).Days);

            Assert.AreEqual("OLC3", result.PlannedCourses.ElementAt(2).Code);
            Assert.AreEqual(new DateTime(2016, 12, 19), result.PlannedCourses.ElementAt(2).Date);
            Assert.AreEqual(5, result.PlannedCourses.ElementAt(2).Days);

            Assert.AreEqual("OLC4", result.PlannedCourses.ElementAt(3).Code);
            Assert.AreEqual(new DateTime(2016, 12, 26), result.PlannedCourses.ElementAt(3).Date);
            Assert.AreEqual(5, result.PlannedCourses.ElementAt(3).Days);

            Assert.AreEqual("2NETARCH", result.PlannedCourses.ElementAt(4).Code);
            Assert.AreEqual(new DateTime(2017, 1, 2), result.PlannedCourses.ElementAt(4).Date);
            Assert.AreEqual(3, result.PlannedCourses.ElementAt(4).Days);

            Assert.AreEqual("OLC5", result.PlannedCourses.ElementAt(5).Code);
            Assert.AreEqual(new DateTime(2017, 1, 5), result.PlannedCourses.ElementAt(5).Date);
            Assert.AreEqual(2, result.PlannedCourses.ElementAt(5).Days);

            Assert.AreEqual("OLC6", result.PlannedCourses.ElementAt(6).Code);
            Assert.AreEqual(new DateTime(2017, 1, 9), result.PlannedCourses.ElementAt(6).Date);
            Assert.AreEqual(3, result.PlannedCourses.ElementAt(6).Days);
        }
        public void GenerateEducationPlan_Planner_Outputter_Service_DAL_Called()
        {
            // Arrange
            var courses = new Collection <RestEducationPlanCourse> {
                new RestEducationPlanCourse
                {
                    Code = "2NETARCH"
                },
                new RestEducationPlanCourse
                {
                    Code = "ADCSB"
                },
            };
            var moduleDataMapperMock = new Mock <IDataMapper <Module> >(MockBehavior.Strict);

            moduleDataMapperMock.Setup(dataMapper => dataMapper.FindAll()).Returns(GetDummyDataModules());

            var educationPlanConverterMock = new Mock <IEducationPlanConverter>(MockBehavior.Strict);

            var educationPlanDataMapperMock = new Mock <IEducationPlanDataMapper>(MockBehavior.Strict);

            var educationPlanOutputterMock = new Mock <IEducationPlanOutputter>(MockBehavior.Strict);

            educationPlanOutputterMock.Setup(planner => planner.GenerateEducationPlan(It.IsAny <EducationPlanData>())).Returns(GetDummyEducationPlan());

            var plannerMock = new Mock <IPlanner>(MockBehavior.Strict);

            plannerMock.Setup(planner => planner.PlanCoursesWithOlc(It.IsAny <IEnumerable <OpleidingsplanGenerator.Models.Course> >()));
            plannerMock.SetupSet(planner => planner.StartDate    = GetDummyRestEducationPlan(courses).InPaymentFrom).Verifiable();
            plannerMock.SetupSet(planner => planner.EndDate      = GetDummyRestEducationPlan(courses).EmployableFrom).Verifiable();
            plannerMock.SetupSet(planner => planner.BlockedDates = It.IsAny <Collection <DateTime> >()).Verifiable();
            plannerMock.SetupGet(planner => planner.AllCourses).Returns(GetDummyGeneratorCourses());
            plannerMock.Setup(planner => planner.AddModules(It.IsAny <IEnumerable <Module> >()));

            var courseServiceMock = new Mock <ICourseService>(MockBehavior.Strict);

            courseServiceMock.Setup(service => service.FindCourses(new List <string> {
                "2NETARCH", "ADCSB"
            })).Returns(
                new List <Integration.Course>()
            {
                CreateNewIntegrationCourseWithTwoCourseImplementations("2NETARCH", 1,
                                                                       new Collection <DateTime> {
                    new DateTime(2017, 1, 2), new DateTime(2017, 1, 3), new DateTime(2017, 1, 4)
                },
                                                                       new Collection <DateTime> {
                    new DateTime(2017, 3, 6), new DateTime(2017, 3, 7), new DateTime(2017, 3, 8)
                })
            });

            var profileDataMapperMock = new Mock <IDataMapper <CourseProfile> >(MockBehavior.Strict);

            profileDataMapperMock.Setup(dataMapper => dataMapper.FindById(1)).Returns(GetDummyDataProfiles().First());
            var dalConfig = DalConfiguration.Configuration;

            EducationPlanManager manager       = new EducationPlanManager(courseServiceMock.Object, plannerMock.Object, educationPlanOutputterMock.Object, profileDataMapperMock.Object, educationPlanDataMapperMock.Object, educationPlanConverterMock.Object, moduleDataMapperMock.Object);
            RestEducationPlan    educationPlan = GetDummyRestEducationPlan(courses);


            // Act
            var result = manager.GenerateEducationPlan(educationPlan, null);

            // Assert
            educationPlanOutputterMock.Verify(outputter => outputter.GenerateEducationPlan(It.IsAny <EducationPlanData>()));
            plannerMock.Verify(planner => planner.PlanCoursesWithOlc(It.IsAny <IEnumerable <OpleidingsplanGenerator.Models.Course> >()));
            courseServiceMock.Verify(outputter => outputter.FindCourses(new List <string> {
                "2NETARCH", "ADCSB"
            }));
            profileDataMapperMock.Verify(dataMapper => dataMapper.FindById(1));
            plannerMock.VerifySet(planner => planner.StartDate    = GetDummyRestEducationPlan(courses).InPaymentFrom);
            plannerMock.VerifySet(planner => planner.BlockedDates = It.IsAny <Collection <DateTime> >());
            moduleDataMapperMock.Verify(dataMapper => dataMapper.FindAll());
        }