001package edu.pdx.cs.joy.grader.canvas; 002 003import edu.pdx.cs.joy.grader.gradebook.Assignment; 004import edu.pdx.cs.joy.grader.gradebook.GradeBook; 005import edu.pdx.cs.joy.grader.gradebook.Student; 006import org.junit.jupiter.api.Test; 007 008import static org.hamcrest.CoreMatchers.equalTo; 009import static org.hamcrest.CoreMatchers.hasItem; 010import static org.hamcrest.MatcherAssert.assertThat; 011import static org.junit.jupiter.api.Assertions.assertThrows; 012 013public class GradesFromCanvasImporterTest extends CanvasTestCase { 014 015 @Test 016 public void errorWhenCanvasQuizDoesNotExistInGradebook() { 017 String studentId = "studentId"; 018 019 GradeBook gradebook = new GradeBook("test"); 020 Student student = new Student(studentId); 021 gradebook.addStudent(student); 022 023 GradesFromCanvas canvas = new GradesFromCanvas(); 024 GradesFromCanvas.CanvasAssignment assignment = new GradesFromCanvas.CanvasAssignment("quiz", 1234); 025 GradesFromCanvas.CanvasStudent canvasStudent = createCanvasStudentWithId(studentId); 026 canvasStudent.setScore(assignment, 3.4); 027 canvas.addStudent(canvasStudent); 028 029 assertThrows(IllegalStateException.class, () -> 030 GradesFromCanvasImporter.importGradesFromCanvas(canvas, gradebook) 031 ); 032 } 033 034 private GradesFromCanvas.CanvasStudent createCanvasStudentWithId(String studentId) { 035 return createCanvasStudent("First", "Last", studentId); 036 } 037 038 @Test 039 public void importScoreFromCanvasWhenStudentIdMatchesCanvasId() { 040 String studentId = "studentId"; 041 String quizName = "quiz"; 042 double score = 3.4; 043 044 GradeBook gradebook = new GradeBook("test"); 045 gradebook.addAssignment(new Assignment(quizName, 4.0)); 046 Student student = new Student(studentId); 047 gradebook.addStudent(student); 048 049 GradesFromCanvas canvas = new GradesFromCanvas(); 050 GradesFromCanvas.CanvasAssignment assignment = new GradesFromCanvas.CanvasAssignment(quizName, 1234); 051 GradesFromCanvas.CanvasStudent canvasStudent = createCanvasStudentWithId(studentId); 052 canvasStudent.setScore(assignment, score); 053 canvas.addStudent(canvasStudent); 054 055 GradesFromCanvasImporter.importGradesFromCanvas(canvas, gradebook); 056 057 assertThat(student.getGradeNames(), hasItem(quizName)); 058 assertThat(student.getGrade(quizName).getScore(), equalTo(score)); 059 } 060 061 @Test 062 public void importScoreFromCanvasWhenStudentNameMatchesCanvasName() { 063 String firstName = "first"; 064 String lastName = "last"; 065 066 String quizName = "quiz"; 067 double score = 3.4; 068 069 GradeBook gradebook = new GradeBook("test"); 070 gradebook.addAssignment(new Assignment(quizName, 4.0)); 071 Student student = new Student("studentId"); 072 student.setFirstName(firstName); 073 student.setLastName(lastName); 074 gradebook.addStudent(student); 075 076 GradesFromCanvas canvas = new GradesFromCanvas(); 077 GradesFromCanvas.CanvasStudent canvasStudent = createCanvasStudent(firstName, lastName); 078 GradesFromCanvas.CanvasAssignment quiz = new GradesFromCanvas.CanvasAssignment(quizName, 1234); 079 canvasStudent.setScore(quiz, score); 080 canvas.addStudent(canvasStudent); 081 082 GradesFromCanvasImporter.importGradesFromCanvas(canvas, gradebook); 083 084 assertThat(student.getGradeNames(), hasItem(quizName)); 085 assertThat(student.getGrade(quizName).getScore(), equalTo(score)); 086 } 087 088 089 090}