use of org.edx.mobile.model.course.VideoData in project edx-app-android by edx.
the class ApiTests method verifyModelParsing.
/**
* Verifies the parsing of course structure json to {@link CourseComponent} model class.
*
* @param component Parsed {@link CourseComponent} model.
*/
private void verifyModelParsing(CourseComponent component) throws IOException, JSONException {
JSONObject jsonObj;
jsonObj = new JSONObject(MockDataUtil.getMockResponse("get_course_structure"));
jsonObj = jsonObj.getJSONObject("blocks");
jsonObj = jsonObj.getJSONObject(component.getId());
assertNotNull(jsonObj);
// Not using the getDisplayName function below, because it returns a placeholder text
// when the display_name field's value is empty.
assertEquals(jsonObj.getString("display_name"), component.getInternalName());
assertEquals(jsonObj.getBoolean("graded"), component.isGraded());
assertEquals(jsonObj.getString("student_view_url"), component.getBlockUrl());
assertEquals(jsonObj.getBoolean("student_view_multi_device"), component.isMultiDevice());
assertEquals(jsonObj.getString("lms_web_url"), component.getWebUrl());
// Type specific validations
Gson gson = new Gson();
switch(component.getType()) {
case VIDEO:
{
JSONObject dataObj = jsonObj.getJSONObject("student_view_data");
// Our current parser checks the existence of these fields to determine the type to convert into
assertTrue(dataObj.has("encoded_videos") || dataObj.has("transcripts"));
String dataRawJson = dataObj.toString();
assertTrue(component instanceof VideoBlockModel);
VideoBlockModel model = (VideoBlockModel) component;
VideoData expected = gson.fromJson(dataRawJson, VideoData.class);
assertEquals(expected, model.getData());
break;
}
case DISCUSSION:
{
JSONObject dataObj = jsonObj.getJSONObject("student_view_data");
// Our current parser checks the existence of these fields to determine the type to convert into
assertTrue(dataObj.has("topic_id"));
String dataRawJson = dataObj.toString();
assertTrue(component instanceof DiscussionBlockModel);
DiscussionBlockModel model = (DiscussionBlockModel) component;
DiscussionData expected = gson.fromJson(dataRawJson, DiscussionData.class);
assertEquals(expected, model.getData());
break;
}
}
}
use of org.edx.mobile.model.course.VideoData in project edx-app-android by edx.
the class CourseUnitNavigationActivityTest method testUnitFragmentCreation.
/**
* Testing creation of various fragments in the {@link CourseUnitNavigationActivity}'s
* ViewPager, by supplying its {@link CourseUnitPagerAdapter} with all possible
* {@link CourseComponent} models.
*/
@Test
public void testUnitFragmentCreation() {
FragmentManager fragmentManager = Mockito.mock(FragmentManager.class);
EnrolledCoursesResponse courseData = Mockito.mock(EnrolledCoursesResponse.class);
CourseUnitFragment.HasComponent hasComponent = Mockito.mock(CourseUnitFragment.HasComponent.class);
List<CourseComponent> unitList = new ArrayList<>();
List<Class<? extends CourseUnitFragment>> classesList = new ArrayList<>();
VideoBlockModel encodeVideosModel = Mockito.mock(VideoBlockModel.class);
VideoData videoData = Mockito.mock(VideoData.class);
videoData.encodedVideos = Mockito.mock(EncodedVideos.class);
when(videoData.encodedVideos.getPreferredVideoInfo()).thenReturn(Mockito.mock(VideoInfo.class));
when(encodeVideosModel.getData()).thenReturn(videoData);
unitList.add(encodeVideosModel);
classesList.add(CourseUnitVideoFragment.class);
VideoBlockModel youtubeVideosModel = Mockito.mock(VideoBlockModel.class);
VideoData videoData2 = Mockito.mock(VideoData.class);
videoData2.encodedVideos = Mockito.mock(EncodedVideos.class);
when(videoData2.encodedVideos.getYoutubeVideoInfo()).thenReturn(Mockito.mock(VideoInfo.class));
when(youtubeVideosModel.getData()).thenReturn(videoData2);
unitList.add(youtubeVideosModel);
classesList.add(CourseUnitOnlyOnYoutubeFragment.class);
DiscussionBlockModel discussionModel = Mockito.mock(DiscussionBlockModel.class);
unitList.add(discussionModel);
if (config.isDiscussionsEnabled()) {
classesList.add(CourseUnitDiscussionFragment.class);
} else {
classesList.add(CourseUnitMobileNotSupportedFragment.class);
}
CourseComponent nonMultiDeviceModel = Mockito.mock(CourseComponent.class);
when(nonMultiDeviceModel.isMultiDevice()).thenReturn(false);
unitList.add(nonMultiDeviceModel);
classesList.add(CourseUnitMobileNotSupportedFragment.class);
HtmlBlockModel htmlModel = Mockito.mock(HtmlBlockModel.class);
when(htmlModel.isMultiDevice()).thenReturn(true);
when(htmlModel.getType()).thenReturn(BlockType.HTML);
unitList.add(htmlModel);
classesList.add(CourseUnitWebViewFragment.class);
CourseComponent unknownModel = Mockito.mock(CourseComponent.class);
when(unknownModel.isMultiDevice()).thenReturn(true);
when(unknownModel.getType()).thenReturn(BlockType.COURSE);
unitList.add(unknownModel);
classesList.add(CourseUnitEmptyFragment.class);
CourseComponent problemModel = Mockito.mock(CourseComponent.class);
when(problemModel.isMultiDevice()).thenReturn(true);
when(problemModel.getType()).thenReturn(BlockType.PROBLEM);
unitList.add(problemModel);
classesList.add(CourseUnitMobileNotSupportedFragment.class);
CourseComponent othersModel = Mockito.mock(CourseComponent.class);
when(othersModel.isMultiDevice()).thenReturn(true);
when(othersModel.getType()).thenReturn(BlockType.OTHERS);
unitList.add(othersModel);
classesList.add(CourseUnitMobileNotSupportedFragment.class);
CourseUnitPagerAdapter adapter = new CourseUnitPagerAdapter(fragmentManager, config, unitList, courseData, hasComponent);
for (int size = unitList.size(), i = 0; i < size; i++) {
assertThat(adapter.getItem(i)).isInstanceOf(classesList.get(i));
}
}
Aggregations