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 java.io.IOException; 009import java.io.StringReader; 010import java.io.StringWriter; 011import java.util.List; 012 013import static org.hamcrest.MatcherAssert.assertThat; 014import static org.hamcrest.Matchers.equalTo; 015import static org.hamcrest.Matchers.hasSize; 016 017public class CanvasGradesCSVGeneratorTest { 018 019 @Test 020 void canvasCSVHasStudentName() throws IOException { 021 GradeBook book = new GradeBook("Test"); 022 String firstName = "First Name"; 023 String lastName = "Last Name"; 024 book.addStudent(new Student("id").setFirstName(firstName).setLastName(lastName)); 025 026 CanvasGradesCSVParser parser = convertToCSVAndBack(book); 027 List<GradesFromCanvas.CanvasStudent> students = parser.getGrades().getStudents(); 028 assertThat(students, hasSize(1)); 029 030 GradesFromCanvas.CanvasStudent student = students.get(0); 031 assertThat(student.getFirstName(), equalTo(firstName)); 032 assertThat(student.getLastName(), equalTo(lastName)); 033 } 034 035 @Test 036 void canvasCSVHasStudentCanvasId() throws IOException { 037 GradeBook book = new GradeBook("Test"); 038 String canvasId = "Canvas Id"; 039 book.addStudent(new Student("id") 040 .setFirstName("First Name") 041 .setLastName("Last Name") 042 .setCanvasId(canvasId)); 043 044 CanvasGradesCSVParser parser = convertToCSVAndBack(book); 045 List<GradesFromCanvas.CanvasStudent> students = parser.getGrades().getStudents(); 046 assertThat(students, hasSize(1)); 047 048 GradesFromCanvas.CanvasStudent student = students.get(0); 049 assertThat(student.getCanvasId(), equalTo(canvasId)); 050 } 051 052 @Test 053 void canvasCSVHasStudentSection() throws IOException { 054 GradeBook book = new GradeBook("Test"); 055 String sectionName = "Section Name"; 056 book.setSectionName(Student.Section.UNDERGRADUATE, sectionName); 057 book.addStudent(new Student("id") 058 .setFirstName("First Name") 059 .setLastName("Last Name") 060 .setCanvasId("Canvas Id") 061 .setEnrolledSection(Student.Section.UNDERGRADUATE)); 062 063 CanvasGradesCSVParser parser = convertToCSVAndBack(book); 064 List<GradesFromCanvas.CanvasStudent> students = parser.getGrades().getStudents(); 065 assertThat(students, hasSize(1)); 066 067 GradesFromCanvas.CanvasStudent student = students.get(0); 068 assertThat(student.getSection(), equalTo(sectionName)); 069 } 070 071 @Test 072 void canvasCSVHasAssignment() throws IOException { 073 GradeBook book = new GradeBook("Test"); 074 String assignmentName = "Test Assignment"; 075 double points = 3.0; 076 int canvasId = 12345; 077 book.addAssignment(new Assignment(assignmentName, points).setCanvasId(canvasId)); 078 079 CanvasGradesCSVParser parser = convertToCSVAndBack(book); 080 List<GradesFromCanvas.CanvasAssignment> assignments = parser.getAssignments(); 081 082 assertThat(assignments, hasSize(1)); 083 084 GradesFromCanvas.CanvasAssignment canvasAssignment = assignments.get(0); 085 assertThat(canvasAssignment.getName(), equalTo(assignmentName)); 086 assertThat(canvasAssignment.getPointsPossible(), equalTo(points)); 087 assertThat(canvasAssignment.getId(), equalTo(canvasId)); 088 } 089 090 private CanvasGradesCSVParser convertToCSVAndBack(GradeBook book) throws IOException { 091 StringWriter sw = new StringWriter(); 092 CanvasGradesCSVGenerator generator = new CanvasGradesCSVGenerator(sw); 093 generator.generate(book); 094 095 String csv = sw.toString(); 096 return new CanvasGradesCSVParser(new StringReader(csv)); 097 } 098}