275 lines
8.5 KiB
JavaScript
275 lines
8.5 KiB
JavaScript
import {expect} from 'chai';
|
|
import {describe, it} from 'mocha';
|
|
import * as h from './api_helpers';
|
|
import ErrorCodes from '../src/constants/error_codes';
|
|
import AICC from '../src/AICC';
|
|
|
|
const scorm12_error_codes = ErrorCodes.scorm12;
|
|
|
|
const api = () => {
|
|
const API = new AICC();
|
|
API.apiLogLevel = 1;
|
|
return API;
|
|
};
|
|
const apiInitialized = () => {
|
|
const API = api();
|
|
API.lmsInitialize();
|
|
return API;
|
|
};
|
|
|
|
describe('AICC API Tests', () => {
|
|
describe('setCMIValue()', () => {
|
|
describe('Invalid Sets - Should Always Fail', () => {
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi._version',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi._children',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.core._children',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.core.score._children',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.objectives._children',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.objectives._count',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.interactions._children',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.interactions._count',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.interactions.0.objectives._count',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: api(),
|
|
fieldName: 'cmi.interactions.0.correct_responses._count',
|
|
expectedError: scorm12_error_codes.INVALID_SET_VALUE,
|
|
});
|
|
});
|
|
|
|
describe('Invalid Sets - Should Fail After Initialization', () => {
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.launch_data',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.comments_from_lms',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.student_id',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.student_name',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.credit',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.entry',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.total_time',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.lesson_mode',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.student_data.mastery_score',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.student_data.max_time_allowed',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
h.checkSetCMIValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.student_data.time_limit_action',
|
|
expectedError: scorm12_error_codes.READ_ONLY_ELEMENT,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('LMSGetValue()', () => {
|
|
describe('Invalid Properties - Should Always Fail', () => {
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.close',
|
|
expectedError: scorm12_error_codes.GENERAL,
|
|
errorThrown: false,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.exit',
|
|
expectedError: scorm12_error_codes.GENERAL,
|
|
errorThrown: false,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.entry',
|
|
expectedError: scorm12_error_codes.GENERAL,
|
|
errorThrown: false,
|
|
});
|
|
});
|
|
|
|
describe('Write-Only Properties - Should Always Fail', () => {
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.exit',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.core.session_time',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.id',
|
|
initializeFirst: true,
|
|
initializationValue: 'AAA',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.time',
|
|
initializeFirst: true,
|
|
initializationValue: '12:59:59',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.type',
|
|
initializeFirst: true,
|
|
initializationValue: 'true-false',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.weighting',
|
|
initializeFirst: true,
|
|
initializationValue: '0',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.student_response',
|
|
initializeFirst: true,
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.result',
|
|
initializeFirst: true,
|
|
initializationValue: 'correct',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.latency',
|
|
initializeFirst: true,
|
|
initializationValue: '01:59:59.99',
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
h.checkLMSGetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.correct_responses.0.pattern',
|
|
initializeFirst: true,
|
|
expectedError: scorm12_error_codes.WRITE_ONLY_ELEMENT,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('LMSSetValue()', () => {
|
|
describe('Uninitialized - Should Fail', () => {
|
|
h.checkLMSSetValue({
|
|
api: api(),
|
|
fieldName: 'cmi.objectives.0.id',
|
|
expectedError: scorm12_error_codes.STORE_BEFORE_INIT,
|
|
});
|
|
h.checkLMSSetValue({
|
|
api: api(),
|
|
fieldName: 'cmi.interactions.0.id',
|
|
expectedError: scorm12_error_codes.STORE_BEFORE_INIT,
|
|
});
|
|
});
|
|
|
|
describe('Initialized - Should Succeed', () => {
|
|
h.checkLMSSetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.objectives.0.id',
|
|
valueToTest: 'AAA',
|
|
});
|
|
h.checkLMSSetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.interactions.0.id',
|
|
valueToTest: 'AAA',
|
|
});
|
|
h.checkLMSSetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.evaluation.comments.0.content',
|
|
valueToTest: 'AAA',
|
|
});
|
|
h.checkLMSSetValue({
|
|
api: apiInitialized(),
|
|
fieldName: 'cmi.student_data.tries.0.score.max',
|
|
valueToTest: '100',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('replaceWithAnotherScormAPI()', () => {
|
|
const firstAPI = api();
|
|
const secondAPI = api();
|
|
|
|
firstAPI.cmi.core.student_id = 'student_1';
|
|
secondAPI.cmi.core.student_id = 'student_2';
|
|
|
|
firstAPI.replaceWithAnotherScormAPI(secondAPI);
|
|
expect(
|
|
firstAPI.cmi.core.student_id,
|
|
).to.equal('student_2');
|
|
});
|
|
});
|