package org.edx.mobile.test;
import android.net.Uri;
import org.edx.mobile.util.links.EdxCourseInfoLink;
import org.edx.mobile.util.links.EdxEnrollLink;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public class EdxLinkTests extends BaseTestCase {
@Test
public void testEdxEnrollLinkCorrectlyParsesCourseIdWithEmailOptIn() {
final String courseId = "course-v1:BerkeleyX+GG101x-2+1T2015";
final boolean emailOptIn = true;
final Uri uri = new Uri.Builder()
.scheme(EdxEnrollLink.SCHEME)
.authority(EdxEnrollLink.AUTHORITY)
.appendQueryParameter(EdxEnrollLink.COURSE_ID_PARAMETER_NAME, courseId)
.appendQueryParameter(EdxEnrollLink.EMAIL_OPT_IN_PARAMETER_NAME, String.valueOf(emailOptIn))
.build();
final EdxEnrollLink link = EdxEnrollLink.parse(uri.toString());
assertNotNull(link);
assertEquals(courseId, link.courseId);
assertEquals(emailOptIn, link.emailOptIn);
}
@Test
public void testEdxCourseInfoLinkParsesCourseIdAndRemovesCoursePrefix() {
final String courseId = "cosmology-anux-anu-astro4x";
final Uri uri = new Uri.Builder()
.scheme(EdxCourseInfoLink.SCHEME)
.authority(EdxCourseInfoLink.AUTHORITY)
.appendQueryParameter(EdxCourseInfoLink.PATH_ID_PARAMETER_NAME,
EdxCourseInfoLink.PATH_ID_COURSE_PREFIX + courseId)
.build();
final EdxCourseInfoLink link = EdxCourseInfoLink.parse(uri.toString());
assertNotNull(link);
assertEquals(courseId, link.pathId);
}
/**
* Tests our workaround for edx.org failing to encode plus signs in the course_id parameter
* See https://openedx.atlassian.net/browse/MA-1901
*/
@Test
public void testPlusSignsPreservedInEnrollLinks() {
final String courseIdWithPlusSign = "course+id";
// Not using Uri.Builder because we don't want the plus signs in the course_id parameter encoded
final String uri = EdxEnrollLink.SCHEME
+ "://" + EdxEnrollLink.AUTHORITY
+ "?" + EdxEnrollLink.COURSE_ID_PARAMETER_NAME + "=" + courseIdWithPlusSign;
final EdxEnrollLink link = EdxEnrollLink.parse(uri);
assertNotNull(link);
assertEquals(courseIdWithPlusSign, link.courseId);
}
}