/// <summary>
        /// Database for holding departments
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeDepartments()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("departments").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Departments psychology = new Departments {
                Name = "Psychology", SubjectAbbr = "PSY"
            };
            Departments civilEng = new Departments {
                Name = "Civil Engineering", SubjectAbbr = "CVEN"
            };
            Departments lingustics = new Departments {
                Name = "Lingustics", SubjectAbbr = "LING"
            };
            Departments cs = new Departments {
                Name = "Computer Science", SubjectAbbr = "CS"
            };

            db.Departments.Add(psychology);
            db.Departments.Add(civilEng);
            db.Departments.Add(lingustics);
            db.Departments.Add(cs);

            db.SaveChanges();

            return(db);
        }
Example #2
0
        /// <summary>
        /// Helper for making one class for one professor
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeClassForProfessor()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("class_for_one_professor").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Courses cr_1010 = new Courses
            {
                CourseId     = 10,
                CourseNumber = 1010,
                Name         = "Beginner German I",
                SubjectAbbr  = "GERM"
            };

            Classes germ_1010 = new Classes
            {
                ClassId   = 11,
                CourseId  = 10,
                Location  = "BUC 204",
                Start     = TimeSpan.Parse("16:35:00"),
                End       = TimeSpan.Parse("18:50:00"),
                Semester  = "Fall 2018",
                Professor = "u0999990",
                Course    = cr_1010
            };

            db.Courses.Add(cr_1010);
            db.Classes.Add(germ_1010);
            db.SaveChanges();

            return(db);
        }
        /// <summary>
        /// Helper for making a tiny catalog (contains one class)
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeTinyCatalog()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("tiny_catalog").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Students student = new Students {
                UId       = "u0000003", FirstName = "Tony", LastName = "Diep",
                BirthDate = DateTime.Parse("02/02/1996"), Major = "LING"
            };

            Courses course = new Courses
            {
                CourseId     = 1,
                CourseNumber = 1069,
                SubjectAbbr  = "LING",
                Name         = "Bad Words & Taboo Terms"
            };

            Classes badwordsClass = new Classes {
                CourseId  = 1, Semester = "Fall 2020", Location = "LNCO 1104",
                Start     = TimeSpan.Parse("10:45:00"), End = TimeSpan.Parse("11:35:00"),
                Professor = "u0000002"
            };

            db.Classes.Add(badwordsClass);
            db.Students.Add(student);
            db.Courses.Add(course);
            db.SaveChanges();

            return(db);
        }
        public void NoEnrolledClassesShouldDisplayNoClassesForStudent()
        {
            StudentController student = new StudentController();
            Team55LMSContext  db      = MakeEmptyDatabase();

            Students tony = new Students
            {
                UId       = "u0000000",
                FirstName = "Tony",
                LastName  = "Diep",
                BirthDate = DateTime.Parse("02/02/1996"),
                Major     = "CS"
            };

            db.Students.Add(tony);
            db.SaveChanges();

            student.UseLMSContext(db);
            student.GetMyClasses(tony.UId);

            var classes = from cla in db.Classes
                          join enr in db.Enrolled on cla.ClassId equals enr.ClassId
                          into claJoinEnr
                          from enrolled in claJoinEnr.DefaultIfEmpty()
                          where enrolled.UId == tony.UId
                          select cla;

            Assert.Equal(0, classes.Count());
        }
Example #5
0
        /// <summary>
        /// Helper for making a student user in the database
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeStudentUser()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("student_user").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Students tony = new Students
            {
                FirstName = "Tony",
                LastName  = "Diep",
                BirthDate = DateTime.Parse("02/02/1996"),
                Major     = "CS",
                UId       = "u0000001"
            };

            db.Students.Add(tony);

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return(db);
        }
Example #6
0
        /// <summary>
        /// Helper for configuring a database with no assignment categories
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeDatabaseWithOneAssignment()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("one_assignment").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Courses course = new Courses
            {
                CourseId     = 5,
                CourseNumber = 2210,
                Name         = "Calculus III",
                SubjectAbbr  = "MATH"
            };

            Classes calculusIII = new Classes
            {
                CourseId  = 2,
                Location  = "TBA",
                Semester  = "Summer 2020",
                Professor = "u0000010",
                Start     = TimeSpan.Parse("12:25:00"),
                End       = TimeSpan.Parse("13:10:00"),
            };

            Enrolled enr = new Enrolled
            {
                ClassId = calculusIII.ClassId,
                Grade   = "--",
                UId     = "u0000002",
            };

            AssignmentCategories category = new AssignmentCategories
            {
                ClassId = calculusIII.ClassId,
                Name    = "Assignments",
                Weight  = 50,
            };

            Assignments assignment = new Assignments
            {
                AssignCatId = category.AssignCatId,
                Contents    = "Just compute the indefinite integral on problem 2, page 303 :)",
                MaxPoints   = 10,
                Name        = "One Problem",
                DueDate     = DateTime.Parse("12/01/2020 11:59:59"),
            };

            db.Courses.Add(course);
            db.Classes.Add(calculusIII);
            db.Enrolled.Add(enr);
            db.AssignmentCategories.Add(category);
            db.Assignments.Add(assignment);
            db.SaveChanges();

            return(db);
        }
Example #7
0
        /// <summary>
        /// Miny database for courses
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext ConfigureDatabaseNoData()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("tiny_catalog").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            return(db);
        }
        /// <summary>
        /// Miny database for courses
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeEmptyDatabase()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("empty_database").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            return(db);
        }
Example #9
0
        /// <summary>
        /// Helper for making some classes for one professor
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeClassesForProfessor()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("classes_for_one_professor").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Courses cr_1030 = new Courses
            {
                CourseId     = 6,
                CourseNumber = 1030,
                Name         = "Intro to Computer Science",
                SubjectAbbr  = "CS"
            };

            Classes cs1030 = new Classes
            {
                ClassId   = 3,
                CourseId  = cr_1030.CourseId,
                Location  = "WEB L104",
                Semester  = "Fall 2018",
                Start     = TimeSpan.Parse("10:45:00"),
                End       = TimeSpan.Parse("11:35:00"),
                Professor = "u1111110",
                Course    = cr_1030
            };

            Courses cr_2420 = new Courses
            {
                CourseId     = 7,
                CourseNumber = 2420,
                Name         = "Data Structures & Algorithms",
                SubjectAbbr  = "CS"
            };

            Classes cs2420 = new Classes
            {
                ClassId   = 4,
                CourseId  = cr_2420.CourseId,
                Location  = "WEB L103",
                Semester  = "Fall 2017",
                Start     = TimeSpan.Parse("14:00:00"),
                End       = TimeSpan.Parse("15:20:00"),
                Professor = "u1111110",
                Course    = cr_2420
            };

            db.Classes.Add(cs1030);
            db.Classes.Add(cs2420);
            db.SaveChanges();

            return(db);
        }
        public void CanEnrollInClass()
        {
            StudentController student = new StudentController();
            Team55LMSContext  db      = MakeTinyCatalog();

            student.UseLMSContext(db);

            var result = student.Enroll("LING", 1069, "Fall", 2020, "u0000003") as JsonResult;

            Assert.Equal("{ success = True }", result.Value.ToString());
        }
        public void CanCreateOneCourse()
        {
            AdministratorController admin = new AdministratorController();
            Team55LMSContext        db    = ConfigureDatabaseNoData();

            admin.UseLMSContext(db);

            var result = admin.CreateCourse("CHEM", 1210, "Organic Chemistry I") as JsonResult;

            Assert.Equal("{ success = True }", result.Value.ToString());
        }
Example #12
0
        public void CanGetStudentUser()
        {
            CommonController common = new CommonController();
            Team55LMSContext db     = MakeStudentUser();

            common.UseLMSContext(db);

            var     studentUser = common.GetUser("u0000001") as JsonResult;
            dynamic result      = studentUser.Value;

            Assert.Equal("{ fname = Tony, lname = Diep, uid = u0000001, department = CS }", result.ToString());
        }
Example #13
0
        public void CanGetMyClassOne()
        {
            ProfessorController prof = new ProfessorController();
            Team55LMSContext    db   = MakeClassForProfessor();

            prof.UseLMSContext(db);

            var     oneClass = prof.GetMyClasses("u0999990") as JsonResult;
            dynamic result   = oneClass.Value;

            Assert.Equal("{ subject = GERM, number = 1010, name = Beginner German I, season = Fall, year = 2018 }", result[0].ToString());
        }
Example #14
0
        public void CannotMakeDuplicateAssignmentCategory()
        {
            ProfessorController prof = new ProfessorController();
            Team55LMSContext    db   = MakeDatabaseWithOneAssignmentCategory();

            prof.UseLMSContext(db);

            var     create = prof.CreateAssignmentCategory("CS", 3200, "Spring", 2021, "Assignments", 60) as JsonResult;
            dynamic result = create.Value;

            Assert.Equal("{ success = False }", result.ToString());
        }
Example #15
0
        public void CanMakeAssignmentCategory()
        {
            ProfessorController prof = new ProfessorController();
            Team55LMSContext    db   = MakeAssignmentCategoryDatabase();

            prof.UseLMSContext(db);

            var     create = prof.CreateAssignmentCategory("CS", 3100, "Fall", 2020, "Dreaded Quizzes", 30) as JsonResult;
            dynamic result = create.Value;

            Assert.Equal("{ success = True }", result.ToString());
        }
Example #16
0
        public void CannotCreateAssignmentCategoryWithEmptyNameAndWeight()
        {
            ProfessorController prof = new ProfessorController();
            Team55LMSContext    db   = MakeDatabaseWithNoValidAssignmentCategories();

            prof.UseLMSContext(db);

            var     empty  = prof.CreateAssignmentCategory("MATH", 2210, "Summer", 2020, null, new int()) as JsonResult;
            dynamic result = empty.Value;

            Assert.Equal("{ success = False }", result.ToString());
        }
        public void CanCreateOneClass()
        {
            AdministratorController admin = new AdministratorController();
            Team55LMSContext        db    = DatabaseWithOneCourse();

            admin.UseLMSContext(db);

            DateTime start = new DateTime(2020, 8, 24, 10, 45, 0);
            DateTime end   = new DateTime(2020, 8, 24, 11, 35, 0);

            var result = admin.CreateClass("RUSS", 1010, "Fall", 2020, start, end, "LNCO 1104", "Elena Khordova") as JsonResult;

            Assert.Equal("{ success = True }", result.Value.ToString());
        }
        public void CannotEnrollInSameClass()
        {
            StudentController student = new StudentController();
            Team55LMSContext  db      = MakeTinyCatalog();

            student.UseLMSContext(db);

            student.Enroll("LING", 1069, "Fall", 2020, "u0000003");

            var     enrolled = student.Enroll("LING", 1069, "Fall", 2020, "u0000003") as JsonResult;
            dynamic result   = enrolled.Value;

            Assert.Equal("{ success = False }", result.ToString());
        }
        public void CanCreateMultipleUniqueCourses()
        {
            AdministratorController admin = new AdministratorController();
            Team55LMSContext        db    = ConfigureDatabaseNoData();

            admin.UseLMSContext(db);

            var databases    = admin.CreateCourse("CS", 5530, "Database Systems") as JsonResult;
            var begRussian   = admin.CreateCourse("RUSS", 1010, "Beginner Russian") as JsonResult;
            var interWriting = admin.CreateCourse("WRTG", 2010, "Intermediate Writing") as JsonResult;

            Assert.Equal("{ success = True }", databases.Value.ToString());
            Assert.Equal("{ success = True }", begRussian.Value.ToString());
            Assert.Equal("{ success = True }", interWriting.Value.ToString());
        }
Example #20
0
        /// <summary>
        /// Helper for configuring a database with no assignment categories
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeDatabaseWithOneAssignmentCategory()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("one_assignment_category").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Courses course = new Courses
            {
                CourseId     = 5,
                CourseNumber = 3200,
                Name         = "Scientific Computing",
                SubjectAbbr  = "CS"
            };

            Classes scientificComputing = new Classes
            {
                CourseId  = 2,
                Location  = "WEB L103",
                Semester  = "Spring 2021",
                Professor = "u0000009",
                Start     = TimeSpan.Parse("8:05:00"),
                End       = TimeSpan.Parse("09:10:00"),
            };

            Enrolled enr = new Enrolled
            {
                ClassId = scientificComputing.ClassId,
                Grade   = "--",
                UId     = "u0000001",
            };

            AssignmentCategories category = new AssignmentCategories
            {
                ClassId = scientificComputing.ClassId,
                Name    = "Assignments",
                Weight  = 60,
            };

            db.Courses.Add(course);
            db.Classes.Add(scientificComputing);
            db.Enrolled.Add(enr);
            db.AssignmentCategories.Add(category);
            db.SaveChanges();

            return(db);
        }
Example #21
0
        /// <summary>
        /// Helper for configuring a database with no assignment categories
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeDatabaseWithNoAssignments()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("no_assignments").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Courses course = new Courses
            {
                CourseId     = 5,
                CourseNumber = 2210,
                Name         = "Calculus III",
                SubjectAbbr  = "MATH"
            };

            Classes calculusIII = new Classes
            {
                CourseId  = course.CourseId,
                Location  = "TBA",
                Semester  = "Summer 2020",
                Professor = "u0000010",
                Start     = TimeSpan.Parse("12:25:00"),
                End       = TimeSpan.Parse("13:10:00"),
            };

            Enrolled enr = new Enrolled
            {
                ClassId = calculusIII.ClassId,
                Grade   = "--",
                UId     = "u0000002",
            };

            AssignmentCategories category = new AssignmentCategories
            {
                ClassId = calculusIII.ClassId,
                Name    = "Assignments",
                Weight  = 50,
            };

            db.Courses.Add(course);
            db.Classes.Add(calculusIII);
            db.Enrolled.Add(enr);
            db.AssignmentCategories.Add(category);
            db.SaveChanges();

            return(db);
        }
        public void CannotCreateDuplicateCourse()
        {
            AdministratorController admin = new AdministratorController();
            Team55LMSContext        db    = ConfigureDatabaseNoData();

            admin.UseLMSContext(db);

            admin.CreateCourse("ESSF", 1710, "Elem Hip-Hop Dance");
            var duplicateCourse = admin.CreateCourse("ESSF", 1710, "Elem Hip-Hop Dance") as JsonResult;

            var courses = from co in db.Courses
                          select co;

            Assert.Equal("{ success = False }", duplicateCourse.Value.ToString());
            Assert.Equal(1, courses.Count());
        }
Example #23
0
        public void CanGetMyClasses()
        {
            ProfessorController prof = new ProfessorController();
            Team55LMSContext    db   = MakeClassesForProfessor();

            prof.UseLMSContext(db);

            var     profClasses = prof.GetMyClasses("u1111110") as JsonResult;
            dynamic result      = profClasses.Value;

            String firstClass  = "{ subject = CS, number = 1030, name = Intro to Computer Science, season = Fall, year = 2018 }";
            String secondClass = "{ subject = CS, number = 2420, name = Data Structures & Algorithms, season = Fall, year = 2017 }";

            Assert.Equal(firstClass, result[0].ToString());
            Assert.Equal(secondClass, result[1].ToString());
        }
Example #24
0
        public void CanGetDepartments()
        {
            CommonController common = new CommonController();
            Team55LMSContext db     = MakeDepartments();

            common.UseLMSContext(db);

            var     departments = common.GetDepartments() as JsonResult;
            dynamic result      = departments.Value;

            var departmentsQuery = from depart in db.Departments
                                   select depart;

            Assert.Equal("{ name = Psychology, subject = PSY }", result[0].ToString());
            Assert.Equal("{ name = Civil Engineering, subject = CVEN }", result[1].ToString());
            Assert.Equal(2, departmentsQuery.Count());
        }
        public void CannotCreateClassSameClassesThatViolateTimeRange()
        {
            AdministratorController admin = new AdministratorController();
            Team55LMSContext        db    = ConfigureDatabaseNoData();

            admin.UseLMSContext(db);

            DateTime start       = new DateTime(2020, 8, 24, 10, 45, 0);
            DateTime secondStart = new DateTime(2020, 8, 24, 11, 0, 0);
            DateTime end         = new DateTime(2020, 8, 24, 11, 35, 0);

            admin.CreateClass("CS", 2420, "Spring", 2020, start, end, "WEB L104", "Swaroop Joshi");
            var     createClass = admin.CreateClass("CS", 2420, "Spring", 2020, secondStart, end, "WEB L104", "Swaroop Joshi") as JsonResult;
            dynamic result      = createClass.Value;

            Assert.Equal("{ success = False }", result.ToString());
        }
        public void CanGetProfessorInCSDepartment()
        {
            AdministratorController admin = new AdministratorController();
            Team55LMSContext        db    = MakeProfessors();

            admin.UseLMSContext(db);

            var     professors = admin.GetProfessors("CS") as JsonResult;
            dynamic result     = professors.Value;

            var csProfessors = from pro in db.Professors
                               where pro.Department == "CS"
                               select pro;

            Assert.Equal("{ lname = Kopta, fname = Daniel, uid = u0000001 }", result[0].ToString());
            Assert.Equal(1, csProfessors.Count());
        }
Example #27
0
        public void CannotCreateDuplicateAssignment()
        {
            ProfessorController prof = new ProfessorController();
            Team55LMSContext    db   = MakeDatabaseWithOneAssignment();

            prof.UseLMSContext(db);

            string   category = "Assignments";
            string   name     = "One Problem";
            DateTime due      = DateTime.Parse("12/01/2020 11:59:59");
            string   contents = "Just compute the indefinite integral on problem 2, page 303 :)";

            var     duplicate = prof.CreateAssignment("MATH", 2210, "Summer", 2020, category, name, 10, due, contents) as JsonResult;
            dynamic result    = duplicate.Value;

            Assert.Equal("{ success = False }", result.ToString());
        }
Example #28
0
        public void CanCreateAssignment()
        {
            ProfessorController prof = new ProfessorController();
            Team55LMSContext    db   = MakeDatabaseWithNoAssignments();

            prof.UseLMSContext(db);

            string   aName    = "Homework 1";
            string   category = "Assignments";
            string   contents = "Compute gradients for problems 1-20";
            DateTime due      = DateTime.Parse("04/20/2020 11:59:59");

            var     createAssignment = prof.CreateAssignment("MATH", 2210, "Summer", 2020, category, aName, 100, due, contents) as JsonResult;
            dynamic result           = createAssignment.Value;

            Assert.Equal("{ success = True }", result.ToString());
        }
Example #29
0
        /// <summary>
        /// Helper for configuring a database to have some class offerings
        /// </summary>
        /// <returns></returns>
        private Team55LMSContext MakeClassOfferings()
        {
            var optionsBuilder = new DbContextOptionsBuilder <Team55LMSContext>();

            optionsBuilder.UseInMemoryDatabase("tiny_class_offerings").UseApplicationServiceProvider(NewServiceProvider());

            Team55LMSContext db = new Team55LMSContext(optionsBuilder.Options);

            Courses course = new Courses
            {
                CourseId     = 0,
                CourseNumber = 5530,
                Name         = "Database Systems",
                SubjectAbbr  = "CS"
            };

            Classes dbFall2020Morning = new Classes
            {
                ClassId   = 4,
                CourseId  = 0,
                Semester  = "Fall 2020",
                Location  = "WEB L104",
                Start     = TimeSpan.Parse("10:45:00"),
                End       = TimeSpan.Parse("11:35:00"),
                Professor = "u0000001"
            };

            Classes dbFall2020Evening = new Classes
            {
                ClassId   = 5,
                CourseId  = 0,
                Semester  = "Fall 2020",
                Location  = "WEB L104",
                Start     = TimeSpan.Parse("17:00:00"),
                End       = TimeSpan.Parse("18:35:00"),
                Professor = "u0000001"
            };

            db.Courses.Add(course);
            db.Classes.Add(dbFall2020Morning);
            db.Classes.Add(dbFall2020Evening);
            db.SaveChanges();

            return(db);
        }
        public void CanGetProfessorsInLinguisticsDepartment()
        {
            AdministratorController admin = new AdministratorController();
            Team55LMSContext        db    = MakeProfessors();

            admin.UseLMSContext(db);

            var     professors = admin.GetProfessors("LING") as JsonResult;
            dynamic result     = professors.Value;

            var lingProfessors = from pro in db.Professors
                                 where pro.Department == "LING"
                                 select pro;

            Assert.Equal("{ lname = Eggert, fname = Randall, uid = u0000002 }", result[0].ToString());
            Assert.Equal("{ lname = Paul Vooge, fname = Nathan, uid = u0000003 }", result[1].ToString());
            Assert.Equal(2, lingProfessors.Count());
        }