예제 #1
0
        public async void UpdateSession_StudentSession_CompletelyChangeClassesAndReasons_ShouldSaveSelectedIntoDatabase()
        {
            var classes = new List <Class>()
            {
                new Class()
                {
                    Name       = "Into to Excel",
                    ShortName  = "CS 101",
                    CRN        = 24668,
                    Department = new Department()
                    {
                        Code = 134,
                        Name = "STEM"
                    }
                },
                new Class()
                {
                    Name       = "Advanced Datastructures",
                    ShortName  = "CS 387",
                    CRN        = 546789,
                    Department = new Department()
                    {
                        Code = 134,
                        Name = "STEM"
                    }
                }
            };
            var reasons = new List <Reason>()
            {
                new Reason()
                {
                    Id   = 1,
                    Name = "Bone Use"
                },
                new Reason()
                {
                    Id   = 2,
                    Name = "Computer Use"
                }
            };

            var person = new Person()
            {
                Email      = "*****@*****.**",
                FirstName  = "Tom",
                LastName   = "Betty",
                Id         = 4697,
                PersonType = PersonType.Student
            };
            var semester = new Semester()
            {
                Code = 201903
            };

            var session = new Session()
            {
                InTime         = DateTime.Now,
                OutTime        = DateTime.Now.Add(new TimeSpan(5)),
                PersonId       = person.Id,
                SemesterCode   = semester.Code,
                SessionClasses = new List <SessionClass>()
                {
                    new SessionClass()
                    {
                        ClassId = 24668
                    }
                },
                SessionReasons = new List <SessionReason>()
                {
                    new SessionReason()
                    {
                        ReasonId = 1
                    }
                }
            };

            db.Classes.AddRange(classes);
            db.People.Add(person);
            db.Semesters.Add(semester);
            db.Sessions.Add(session);
            db.SaveChanges();

            var sessionUpdate = new SessionPostOrPutDTO()
            {
                InTime          = session.InTime,
                OutTime         = session.OutTime.Value,
                PersonId        = session.PersonId,
                Id              = session.Id,
                SemesterCode    = session.SemesterCode,
                Tutoring        = session.Tutoring,
                SelectedClasses = new List <int>()
                {
                    546789
                },
                SelectedReasons = new List <int>()
                {
                    2
                }
            };

            await sessionController.UpdateSession(sessionUpdate.Id, sessionUpdate);

            var sessionClasses = db.SessionClasses.Where(x => x.SessionId == session.Id);
            var sessionReasons = db.SessionReasons.Where(x => x.SessionId == session.Id);

            Assert.Equal(sessionUpdate.SelectedClasses, sessionClasses.Select(x => x.ClassId).ToList());
            Assert.Equal(sessionUpdate.SelectedReasons, sessionReasons.Select(x => x.ReasonId).ToList());
        }
예제 #2
0
        public async void Session_DeletedIsFalse_DeletedSetToTrueAfterCallingRemove()
        {
            var classes = new List <Class>()
            {
                new Class()
                {
                    Name       = "Into to Excel",
                    ShortName  = "CS 101",
                    CRN        = 24668,
                    Department = new Department()
                    {
                        Code = 134,
                        Name = "STEM"
                    }
                },
                new Class()
                {
                    Name       = "Advanced Datastructures",
                    ShortName  = "CS 387",
                    CRN        = 546789,
                    Department = new Department()
                    {
                        Code = 134,
                        Name = "STEM"
                    }
                }
            };
            var reasons = new List <Reason>()
            {
                new Reason()
                {
                    Id   = 1,
                    Name = "Bone Use"
                },
                new Reason()
                {
                    Id   = 2,
                    Name = "Computer Use"
                }
            };

            var person = new Person()
            {
                Email      = "*****@*****.**",
                FirstName  = "Tom",
                LastName   = "Betty",
                Id         = 4697,
                PersonType = PersonType.Student
            };
            var semester = new Semester()
            {
                Code = 201903
            };

            var session = new Session()
            {
                InTime         = DateTime.Now,
                OutTime        = DateTime.Now.Add(new TimeSpan(5)),
                PersonId       = person.Id,
                SemesterCode   = semester.Code,
                SessionClasses = new List <SessionClass>()
                {
                    new SessionClass()
                    {
                        ClassId = 24668
                    }
                },
                SessionReasons = new List <SessionReason>()
                {
                    new SessionReason()
                    {
                        ReasonId = 1
                    }
                },
                Deleted = false
            };

            db.Classes.AddRange(classes);
            db.People.Add(person);
            db.Semesters.Add(semester);
            db.Sessions.Add(session);
            db.SaveChanges();

            var deletedSession = await sessionRepo.Remove(x => x.Id == session.Id);

            Assert.True(deletedSession.Deleted);
        }
예제 #3
0
        public async void GetPersonInfo_StudentExistsButHasOldSchedule_ShouldReturnStudentInfoAndSaveToDatabase(string identifier)
        {
            var email  = identifier;
            var id     = Utils.ParseOrDefault(identifier, 54321687);
            var person = new Person()
            {
                Id        = id,
                Email     = email,
                FirstName = "Billy",
                LastName  = "Joe"
            };
            var semester = new Semester()
            {
                Code = 201901
            };

            var newSemesterId = 201902;
            var oldCourses    = new List <Class>()
            {
                new Class()
                {
                    CRN        = 13465,
                    Name       = "Intro to Computers",
                    Department = new Department()
                    {
                        Code = 13465,
                        Name = "STEM"
                    }
                }
            };

            var bannerPersonInfo = new BannerPersonInfo()
            {
                WVUPID       = person.Id,
                EmailAddress = person.Email,
                Courses      = new List <BannerClass>()
                {
                    new BannerClass()
                    {
                        CRN        = 11112,
                        CourseName = "Intro to Excel",
                        ShortName  = "CS 101",
                        Department = new BannerDepartment()
                        {
                            Code = 1234,
                            Name = "STEM"
                        }
                    }
                },
                FirstName = person.FirstName,
                LastName  = person.LastName,
                TermCode  = newSemesterId
            };

            db.People.Add(person);
            db.Semesters.Add(semester);
            db.Classes.AddRange(oldCourses);
            db.SaveChanges();


            mockBannerService.Setup(x => x.GetBannerInfo(It.IsAny <string>())).ReturnsAsync(() => bannerPersonInfo);

            var personInfo = await unitPerson.GetPersonInfo(identifier);

            mockBannerService.Verify(x => x.GetBannerInfo(It.Is <string>(a => a == person.Email || a == person.Id.ToString())), Times.Once());

            Assert.Equal(personInfo.Schedule.Select(x => x.CRN), bannerPersonInfo.Courses.Select(x => x.CRN));
            var addedSemester = db.Semesters.SingleOrDefault(x => x.Code == newSemesterId);

            Assert.NotNull(addedSemester);
            Assert.Equal(personInfo.Schedule.Select(x => x.CRN), db.Schedules.Where(x => x.Person.Email == person.Email).Select(x => x.ClassCRN));
        }