Skip to content

Commit f174530

Browse files
committed
1 parent a0f81e1 commit f174530

File tree

4 files changed

+151
-1
lines changed

4 files changed

+151
-1
lines changed

src/main/java/edu/ksu/canvas/impl/ModuleItemImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.google.gson.reflect.TypeToken;
44
import edu.ksu.canvas.interfaces.CanvasWriter;
5-
import edu.ksu.canvas.interfaces.ModuleItemReader;;
5+
import edu.ksu.canvas.interfaces.ModuleItemReader;
66
import edu.ksu.canvas.model.ModuleItem;
77
import edu.ksu.canvas.net.RestClient;
88
import edu.ksu.canvas.oauth.OauthToken;

src/main/java/edu/ksu/canvas/model/ModuleItem.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class ModuleItem extends BaseCanvasModel implements Serializable {
1616
private String pageUrl; /* only for 'Page' type */
1717
private String externalUrl; /* only for 'ExternalUrl' and 'ExternalTool' types */
1818
private Boolean newTab; /* only for 'ExternalTool' type */
19+
private CompletionRequirement completionRequirement;
1920
private Boolean published;
2021

2122
public Long getId() {
@@ -114,11 +115,48 @@ public void setNewTab(java.lang.Boolean newTab) {
114115
this.newTab = newTab;
115116
}
116117

118+
public CompletionRequirement getCompletionRequirement() {
119+
return completionRequirement;
120+
}
121+
122+
public void setCompletionRequirement(CompletionRequirement completionRequirement) {
123+
this.completionRequirement = completionRequirement;
124+
}
125+
117126
public Boolean getPublished() {
118127
return published;
119128
}
120129

121130
public void setPublished(Boolean published) {
122131
this.published = published;
123132
}
133+
134+
public class CompletionRequirement extends BaseCanvasModel implements Serializable {
135+
private String type;
136+
private java.math.BigDecimal minScore;
137+
private Boolean completed;
138+
139+
public java.math.BigDecimal getMinScore() {
140+
return minScore;
141+
}
142+
143+
public void setMinScore(java.math.BigDecimal minScore) {
144+
this.minScore = minScore;
145+
}
146+
147+
public Boolean getCompleted() {
148+
return completed;
149+
}
150+
151+
public void setCompleted(Boolean completed) {
152+
this.completed = completed;
153+
}
154+
155+
public String getType() {
156+
return type;
157+
}
158+
public void setType(String type) {
159+
this.type = type;
160+
}
161+
}
124162
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package edu.ksu.canvas.tests.module;
2+
3+
import edu.ksu.canvas.CanvasTestBase;
4+
import edu.ksu.canvas.impl.ModuleItemImpl;
5+
import edu.ksu.canvas.interfaces.ModuleItemReader;
6+
import edu.ksu.canvas.model.ModuleItem;
7+
import edu.ksu.canvas.net.FakeRestClient;
8+
import edu.ksu.canvas.requestOptions.ListModuleItemsOptions;
9+
import org.junit.Assert;
10+
import org.junit.Before;
11+
import org.junit.Test;
12+
import org.springframework.beans.factory.annotation.Autowired;
13+
14+
import java.io.IOException;
15+
import java.util.List;
16+
17+
public class ModuleItemListingTest extends CanvasTestBase {
18+
@Autowired
19+
private FakeRestClient fakeRestClient;
20+
private ModuleItemReader moduleItemReader;
21+
22+
@Before
23+
public void setupData() {
24+
moduleItemReader = new ModuleItemImpl(baseUrl, apiVersion, SOME_OAUTH_TOKEN, fakeRestClient, SOME_CONNECT_TIMEOUT, SOME_READ_TIMEOUT, DEFAULT_PAGINATION_PAGE_SIZE, false);
25+
}
26+
27+
@Test
28+
public void testListModuleItemsInModule() throws IOException {
29+
Long courseId = 1092L;
30+
Long moduleId = 1059720L;
31+
ListModuleItemsOptions options = new ListModuleItemsOptions(courseId, moduleId);
32+
String url = baseUrl + "/api/v1/courses/1092/modules/1059720/items";
33+
34+
fakeRestClient.addSuccessResponse(url, "SampleJson/ModuleItems.json");
35+
List<ModuleItem> moduleItems = moduleItemReader.getModuleItemsInModule(options);
36+
Assert.assertNotNull(moduleItems);
37+
Assert.assertEquals(4, moduleItems.size());
38+
for (ModuleItem moduleItem: moduleItems) { /* Copied from https://github.com/instructure/CanvasAPI/blob/develop/src/test/java/ModuleItemUnitTest.java */
39+
Assert.assertTrue(moduleItem.getId() > 0);
40+
Assert.assertNotNull(moduleItem.getType());
41+
Assert.assertNotNull(moduleItem.getTitle());
42+
Assert.assertNotNull(moduleItem.getHtmlUrl());
43+
Assert.assertNotNull(moduleItem.getUrl());
44+
if (moduleItem.getCompletionRequirement() != null) {
45+
Assert.assertNotNull(moduleItem.getCompletionRequirement().getType());
46+
}
47+
}
48+
}
49+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
[
2+
{
3+
"id": 9012239,
4+
"indent": 0,
5+
"position": 1,
6+
"title": "Android 101",
7+
"type": "Assignment",
8+
"module_id": 1059720,
9+
"html_url": "https://mobiledev.instructure.com/courses/833052/modules/items/9012239",
10+
"content_id": 2241839,
11+
"url": "https://mobiledev.instructure.com/api/v1/courses/833052/assignments/2241839",
12+
"completion_requirement": {
13+
"type": "must_submit",
14+
"completed": true
15+
}
16+
},
17+
{
18+
"id": 9012244,
19+
"indent": 0,
20+
"position": 2,
21+
"title": "Favorite App Video",
22+
"type": "Assignment",
23+
"module_id": 1059720,
24+
"html_url": "https://mobiledev.instructure.com/courses/833052/modules/items/9012244",
25+
"content_id": 2241864,
26+
"url": "https://mobiledev.instructure.com/api/v1/courses/833052/assignments/2241864",
27+
"completion_requirement": {
28+
"type": "min_score",
29+
"min_score": "5",
30+
"completed": true
31+
}
32+
},
33+
{
34+
"id": 9012248,
35+
"indent": 0,
36+
"position": 3,
37+
"title": "Android vs. iOS",
38+
"type": "Discussion",
39+
"module_id": 1059720,
40+
"html_url": "https://mobiledev.instructure.com/courses/833052/modules/items/9012248",
41+
"content_id": 1369942,
42+
"url": "https://mobiledev.instructure.com/api/v1/courses/833052/discussion_topics/1369942",
43+
"completion_requirement": {
44+
"type": "must_contribute",
45+
"completed": false
46+
}
47+
},
48+
{
49+
"id": 9012251,
50+
"indent": 0,
51+
"position": 4,
52+
"title": "Easy Quiz",
53+
"type": "Quiz",
54+
"module_id": 1059720,
55+
"html_url": "https://mobiledev.instructure.com/courses/833052/modules/items/9012251",
56+
"content_id": 757314,
57+
"url": "https://mobiledev.instructure.com/api/v1/courses/833052/quizzes/757314",
58+
"completion_requirement": {
59+
"type": "must_submit",
60+
"completed": true
61+
}
62+
}
63+
]

0 commit comments

Comments
 (0)