/// <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); }
/// <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()); }
/// <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); }
/// <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); }
/// <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); }
/// <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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
/// <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); }
/// <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()); }
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()); }
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()); }
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()); }
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()); }
/// <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()); }