import com.google.gson.Gson;
import com.instructure.canvasapi.model.RubricCriterion;
import com.instructure.canvasapi.model.RubricCriterionRating;
import com.instructure.canvasapi.utilities.CanvasRestAdapter;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
import java.util.List;
@Config(sdk = 17)
@RunWith(RobolectricGradleTestRunner.class)
public class RubricCriterionUnitTest extends Assert {
@Test
public void testRubricCriterion() {
Gson gson = CanvasRestAdapter.getGSONParser();
RubricCriterion[] rubricCriterions = gson.fromJson(rubricCriterionJSON, RubricCriterion[].class);
assertNotNull(rubricCriterions);
for(RubricCriterion rubricCriterion : rubricCriterions) {
assertNotNull(rubricCriterion);
assertNotNull(rubricCriterion.getCriterionDescription());
assertNotNull(rubricCriterion.getId());
assertTrue(rubricCriterion.getPoints() >= 0);
}
}
@Test
public void testRubricCriterionRating() {
Gson gson = CanvasRestAdapter.getGSONParser();
RubricCriterion[] rubricCriterions = gson.fromJson(rubricCriterionJSON, RubricCriterion[].class);
for(RubricCriterion rubricCriterion : rubricCriterions) {
if(rubricCriterion.getGradedCriterionRating() != null) {
List<RubricCriterionRating> ratings = rubricCriterion.getRatings();
for(RubricCriterionRating rubricCriterionRating : ratings) {
assertNotNull(rubricCriterionRating.getId());
assertNotNull(rubricCriterionRating.getRatingDescription());
}
}
}
}
String rubricCriterionJSON = "[\n" +
"{\n" +
"\"id\": \"387653_8589\",\n" +
"\"points\": 10,\n" +
"\"description\": \"Description of criterion\",\n" +
"\"long_description\": \"\",\n" +
"\"ratings\": [\n" +
"{\n" +
"\"id\": \"blank\",\n" +
"\"points\": 10,\n" +
"\"description\": \"Full Marks\"\n" +
"},\n" +
"{\n" +
"\"id\": \"blank_2\",\n" +
"\"points\": 0,\n" +
"\"description\": \"No Marks\"\n" +
"}\n" +
"]\n" +
"},\n" +
"{\n" +
"\"id\": \"387653_1612\",\n" +
"\"points\": 12,\n" +
"\"description\": \"Description of criterion\",\n" +
"\"long_description\": \"\",\n" +
"\"ratings\": [\n" +
"{\n" +
"\"id\": \"387653_8361\",\n" +
"\"points\": 12,\n" +
"\"description\": \"Full Marks\"\n" +
"},\n" +
"{\n" +
"\"id\": \"387653_870\",\n" +
"\"points\": 0,\n" +
"\"description\": \"No Marks\"\n" +
"}\n" +
"]\n" +
"},\n" +
"{\n" +
"\"id\": \"387653_8896\",\n" +
"\"points\": 10,\n" +
"\"description\": \"Description of criterion\",\n" +
"\"long_description\": \"\",\n" +
"\"ratings\": [\n" +
"{\n" +
"\"id\": \"387653_7003\",\n" +
"\"points\": 10,\n" +
"\"description\": \"Full Marks\"\n" +
"},\n" +
"{\n" +
"\"id\": \"387653_6719\",\n" +
"\"points\": 0,\n" +
"\"description\": \"No Marks\"\n" +
"}\n" +
"]\n" +
"},\n" +
"{\n" +
"\"id\": \"387653_5670\",\n" +
"\"points\": 8,\n" +
"\"description\": \"Description of criterion\",\n" +
"\"long_description\": \"\",\n" +
"\"ratings\": [\n" +
"{\n" +
"\"id\": \"387653_3621\",\n" +
"\"points\": 8,\n" +
"\"description\": \"Full Marks\"\n" +
"},\n" +
"{\n" +
"\"id\": \"387653_2577\",\n" +
"\"points\": 0,\n" +
"\"description\": \"No Marks\"\n" +
"}\n" +
"]\n" +
"}" +
"]";
}