import com.google.gson.Gson;
import com.instructure.canvasapi.model.Course;
import com.instructure.canvasapi.utilities.CanvasRestAdapter;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
@Config(sdk = 17)
@RunWith(RobolectricGradleTestRunner.class)
public class CourseUnitTest extends Assert{
@Test
public void testCourse(){
Gson gson = CanvasRestAdapter.getGSONParser();
Course course = gson.fromJson(courseJSON, Course.class);
assertNotNull(course);
assertTrue(course.getId() == 1383418);
assertTrue(course.getApplyAssignmentGroupWeights());
assertNotNull(course.getName());
assertTrue(course.getNeedsGradingCount() == 0);
assertFalse(course.isFinalGradeHidden());
assertFalse(course.isPublic());
assertTrue(course.canCreateDiscussion());
assertTrue(course.getTerm().getId() == 3142);
}
@Test
public void testFavoriteCourses(){
Gson gson = CanvasRestAdapter.getGSONParser();
Course[] favoriteCourses = gson.fromJson(favoriteCoursesJSON, Course[].class);
Course course = favoriteCourses[0];
assertNotNull(favoriteCourses);
assertNotNull(course);
assertTrue(course.getId() == 1383420);
assertFalse(course.getApplyAssignmentGroupWeights());
assertNotNull(course.getName());
assertTrue(course.getNeedsGradingCount() == 0);
assertFalse(course.isFinalGradeHidden());
assertTrue(course.isPublic());
assertTrue(course.getTerm().getId() == 3142);
}
//vanilla course
//@GET("/courses/{courseid}?include[]=term&include[]=permissions&include[]=license&include[]=is_public&include[]=needs_grading_count")
//void getCourse(@Path("courseid") long courseId, CanvasCallback<Course> callback);
final String courseJSON = "{\n" +
"\"account_id\": 99299,\n" +
"\"course_code\": \"TEE-101\",\n" +
"\"default_view\": \"feed\",\n" +
"\"id\": 1383418,\n" +
"\"is_public\": false,\n" +
"\"license\": \"private\",\n" +
"\"name\": \"Trevor's Emporium Extraordinarium\",\n" +
"\"start_at\": \"2014-06-16T19:18:59Z\",\n" +
"\"end_at\": null,\n" +
"\"public_syllabus\": false,\n" +
"\"storage_quota_mb\": 500,\n" +
"\"hide_final_grades\": false,\n" +
"\"permissions\": {\n" +
"\"create_discussion_topic\": true\n" +
"},\n" +
"\"term\": {\n" +
"\"end_at\": null,\n" +
"\"id\": 3142,\n" +
"\"name\": \"Default Term\",\n" +
"\"start_at\": null,\n" +
"\"workflow_state\": \"active\",\n" +
"\"sis_term_id\": null\n" +
"},\n" +
"\"apply_assignment_group_weights\": true,\n" +
"\"calendar\": {\n" +
"\"ics\": \"https://mobiledev.instructure.com/feeds/calendars/course_V80l8TpKunkQOkK2msOaajKOEDDc3oUQkyl9KHoM.ics\"\n" +
"},\n" +
"\"sis_course_id\": null,\n" +
"\"integration_id\": null,\n" +
"\"enrollments\": [\n" +
"{\n" +
"\"type\": \"teacher\",\n" +
"\"role\": \"TeacherEnrollment\",\n" +
"\"enrollment_state\": \"active\"\n" +
"}\n" +
"],\n" +
"\"needs_grading_count\": 0,\n" +
"\"workflow_state\": \"available\"\n" +
"}";
//favorite courses
//@GET("/users/self/favorites/courses?include[]=term&include[]=total_scores&include[]=license&include[]=is_public&include[]=needs_grading_count")
//void getFavoriteCourses(CanvasCallback<Course[]> callback);
final String favoriteCoursesJSON = "[\n" +
"{\n" +
"\"account_id\": 99299,\n" +
"\"course_code\": \"abcdefghijklmnopqrstuvwxyz\",\n" +
"\"default_view\": \"feed\",\n" +
"\"id\": 1383420,\n" +
"\"is_public\": true,\n" +
"\"license\": \"public_domain\",\n" +
"\"name\": \"abcdefghijklmnopqrstuvwxyz\",\n" +
"\"start_at\": \"2014-06-16T19:21:13Z\",\n" +
"\"end_at\": null,\n" +
"\"public_syllabus\": false,\n" +
"\"storage_quota_mb\": 500,\n" +
"\"term\": {\n" +
"\"end_at\": null,\n" +
"\"id\": 3142,\n" +
"\"name\": \"Default Term\",\n" +
"\"start_at\": null,\n" +
"\"workflow_state\": \"active\",\n" +
"\"sis_term_id\": null\n" +
"},\n" +
"\"apply_assignment_group_weights\": false,\n" +
"\"calendar\": {\n" +
"\"ics\": \"https://mobiledev.instructure.com/feeds/calendars/course_t1ldkwlkCgHnQFds7qnA1V6Zw9NQDZ5m8FQZRKe6.ics\"\n" +
"},\n" +
"\"sis_course_id\": null,\n" +
"\"integration_id\": null,\n" +
"\"enrollments\": [\n" +
"{\n" +
"\"type\": \"teacher\",\n" +
"\"role\": \"TeacherEnrollment\",\n" +
"\"enrollment_state\": \"active\"\n" +
"}\n" +
"],\n" +
"\"needs_grading_count\": 0,\n" +
"\"hide_final_grades\": false,\n" +
"\"workflow_state\": \"available\"\n" +
"},\n" +
"{\n" +
"\"account_id\": 99299,\n" +
"\"course_code\": \"Candroid\",\n" +
"\"default_view\": \"modules\",\n" +
"\"id\": 1279999,\n" +
"\"is_public\": false,\n" +
"\"license\": \"private\",\n" +
"\"name\": \"Candroid\",\n" +
"\"start_at\": \"2014-03-06T07:00:00Z\",\n" +
"\"end_at\": null,\n" +
"\"public_syllabus\": false,\n" +
"\"storage_quota_mb\": 500,\n" +
"\"term\": {\n" +
"\"end_at\": null,\n" +
"\"id\": 3142,\n" +
"\"name\": \"Default Term\",\n" +
"\"start_at\": null,\n" +
"\"workflow_state\": \"active\",\n" +
"\"sis_term_id\": null\n" +
"},\n" +
"\"apply_assignment_group_weights\": false,\n" +
"\"calendar\": {\n" +
"\"ics\": \"https://mobiledev.instructure.com/feeds/calendars/course_iQsZnvF73lcKz37GJHOziVS13HB7lcFekFDv8zqI.ics\"\n" +
"},\n" +
"\"sis_course_id\": null,\n" +
"\"integration_id\": null,\n" +
"\"enrollments\": [\n" +
"{\n" +
"\"type\": \"teacher\",\n" +
"\"role\": \"TeacherEnrollment\",\n" +
"\"enrollment_state\": \"active\"\n" +
"}\n" +
"],\n" +
"\"needs_grading_count\": 0,\n" +
"\"hide_final_grades\": false,\n" +
"\"workflow_state\": \"available\"\n" +
"},\n" +
"{\n" +
"\"account_id\": 99299,\n" +
"\"course_code\": \"TEE-101\",\n" +
"\"default_view\": \"feed\",\n" +
"\"id\": 1383418,\n" +
"\"is_public\": false,\n" +
"\"license\": \"private\",\n" +
"\"name\": \"Trevor's Emporium Extraordinarium\",\n" +
"\"start_at\": \"2014-06-16T19:18:59Z\",\n" +
"\"end_at\": null,\n" +
"\"public_syllabus\": false,\n" +
"\"storage_quota_mb\": 500,\n" +
"\"term\": {\n" +
"\"end_at\": null,\n" +
"\"id\": 3142,\n" +
"\"name\": \"Default Term\",\n" +
"\"start_at\": null,\n" +
"\"workflow_state\": \"active\",\n" +
"\"sis_term_id\": null\n" +
"},\n" +
"\"apply_assignment_group_weights\": true,\n" +
"\"calendar\": {\n" +
"\"ics\": \"https://mobiledev.instructure.com/feeds/calendars/course_V80l8TpKunkQOkK2msOaajKOEDDc3oUQkyl9KHoM.ics\"\n" +
"},\n" +
"\"sis_course_id\": null,\n" +
"\"integration_id\": null,\n" +
"\"enrollments\": [\n" +
"{\n" +
"\"type\": \"teacher\",\n" +
"\"role\": \"TeacherEnrollment\",\n" +
"\"enrollment_state\": \"active\"\n" +
"}\n" +
"],\n" +
"\"needs_grading_count\": 0,\n" +
"\"hide_final_grades\": false,\n" +
"\"workflow_state\": \"available\"\n" +
"},\n" +
"{\n" +
"\"account_id\": 99299,\n" +
"\"course_code\": \"Android\",\n" +
"\"default_view\": \"feed\",\n" +
"\"id\": 833052,\n" +
"\"is_public\": false,\n" +
"\"license\": \"private\",\n" +
"\"name\": \"Android Development\",\n" +
"\"start_at\": \"2012-10-09T06:00:00Z\",\n" +
"\"end_at\": \"2014-11-22T05:55:00Z\",\n" +
"\"public_syllabus\": false,\n" +
"\"storage_quota_mb\": 500,\n" +
"\"term\": {\n" +
"\"end_at\": null,\n" +
"\"id\": 3142,\n" +
"\"name\": \"Default Term\",\n" +
"\"start_at\": null,\n" +
"\"workflow_state\": \"active\",\n" +
"\"sis_term_id\": null\n" +
"},\n" +
"\"apply_assignment_group_weights\": true,\n" +
"\"calendar\": {\n" +
"\"ics\": \"https://mobiledev.instructure.com/feeds/calendars/course_gCcqY1HU2LJCQxiPHWmrQNGnl7QRL3Xig6M237zD.ics\"\n" +
"},\n" +
"\"sis_course_id\": null,\n" +
"\"integration_id\": null,\n" +
"\"enrollments\": [\n" +
"{\n" +
"\"type\": \"student\",\n" +
"\"role\": \"StudentEnrollment\",\n" +
"\"enrollment_state\": \"active\",\n" +
"\"computed_current_score\": null,\n" +
"\"computed_final_score\": null,\n" +
"\"computed_current_grade\": null,\n" +
"\"computed_final_grade\": null\n" +
"}\n" +
"],\n" +
"\"hide_final_grades\": false,\n" +
"\"workflow_state\": \"available\"\n" +
"}\n" +
"]";
}