scorm-again 1.5.3 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,71 @@
1
1
  import {describe, it} from 'mocha';
2
2
  import {expect} from 'chai';
3
- import {ValidationError} from '../src/exceptions';
3
+ import {ValidationError, AICCValidationError, Scorm12ValidationError, Scorm2004ValidationError} from '../src/exceptions';
4
+ import APIConstants from '../src/constants/api_constants';
5
+
6
+ const scorm12_errors = APIConstants.scorm12.error_descriptions;
7
+ const aicc_errors = APIConstants.aicc.error_descriptions;
8
+ const scorm2004_errors = APIConstants.scorm2004.error_descriptions;
9
+
10
+ const checkValidationMessage = (
11
+ {
12
+ errorClass,
13
+ errorCodes,
14
+ error_messages,
15
+ }
16
+ ) => {
17
+ describe(`ValidationError: ${typeof errorClass}`, () => {
18
+ it(`${typeof errorClass} should return general errorCode number when not recognized`, () => {
19
+ expect(
20
+ new errorClass.prototype.constructor(53).errorCode,
21
+ ).to.equal(101);
22
+ });
23
+ it(`${typeof errorClass} should return general message when not recognized`, () => {
24
+ expect(
25
+ new errorClass.prototype.constructor(53).message,
26
+ ).to.equal(error_messages['101'].basicMessage);
27
+ });
28
+
29
+ for (let i = 0; i < errorCodes.length; i++) {
30
+ const errorCode = errorCodes[i];
31
+ it(`${typeof errorClass} should return proper errorCode number when recognized`, () => {
32
+ expect(
33
+ new errorClass.prototype.constructor(errorCode).errorCode,
34
+ ).to.equal(errorCode);
35
+ });
36
+ it(`${typeof errorClass} should return proper ${errorCode} message`, () => {
37
+ expect(
38
+ new errorClass.prototype.constructor(errorCode).message,
39
+ ).to.equal(error_messages[String(errorCode)].basicMessage);
40
+ });
41
+ }
42
+ });
43
+ };
4
44
 
5
45
  describe('Exception Tests', () => {
6
46
  it('ValidationException should return message string', () => {
7
47
  expect(
8
- new ValidationError(0).message,
9
- ).to.equal('0');
48
+ new ValidationError(0, 'Error Message').message,
49
+ ).to.equal('Error Message');
10
50
  });
11
51
  it('ValidationException should return errorCode number', () => {
12
52
  expect(
13
- new ValidationError(0).errorCode,
53
+ new ValidationError(0, 'Error Message').errorCode,
14
54
  ).to.equal(0);
15
55
  });
56
+ checkValidationMessage({
57
+ errorClass: AICCValidationError,
58
+ errorCodes: [101, 201, 202, 203, 301, 401, 402, 403, 404, 405, 407, 408],
59
+ error_messages: aicc_errors,
60
+ });
61
+ checkValidationMessage({
62
+ errorClass: Scorm12ValidationError,
63
+ errorCodes: [101, 201, 202, 203, 301, 401, 402, 403, 404, 405, 407, 408],
64
+ error_messages: scorm12_errors,
65
+ });
66
+ checkValidationMessage({
67
+ errorClass: Scorm2004ValidationError,
68
+ errorCodes: [0, 101, 102, 103, 104, 111, 112, 113, 122, 123, 132, 133, 142, 143, 201, 301, 351, 391, 401, 402, 403, 404, 405, 406, 407, 408],
69
+ error_messages: scorm2004_errors,
70
+ });
16
71
  });
package/webpack.js ADDED
@@ -0,0 +1,78 @@
1
+ const path = require('path');
2
+ const webpack = require('webpack');
3
+ const ESLintPlugin = require('eslint-webpack-plugin');
4
+ const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
5
+
6
+ const JSLoader = {
7
+ test: /\.js$/i,
8
+ use: {
9
+ loader: 'babel-loader',
10
+ options: {
11
+ presets: [
12
+ [
13
+ '@babel/preset-env',
14
+ {
15
+ 'corejs': '3',
16
+ 'useBuiltIns': 'entry',
17
+ 'targets': {
18
+ 'browsers': [
19
+ 'edge >= 16',
20
+ 'safari >= 9',
21
+ 'firefox >= 57',
22
+ 'ie >= 11',
23
+ 'ios >= 9',
24
+ 'chrome >= 49',
25
+ ],
26
+ },
27
+ },
28
+ ],
29
+ ['@babel/preset-flow'],
30
+ ],
31
+ plugins: [
32
+ '@babel/plugin-proposal-class-properties',
33
+ '@babel/plugin-proposal-private-methods',
34
+ '@babel/plugin-proposal-optional-chaining',
35
+ ],
36
+ },
37
+ },
38
+ };
39
+
40
+ module.exports = {
41
+ mode: 'development',
42
+ devtool: 'source-map',
43
+ entry: {
44
+ 'aicc': './src/exports/aicc.js',
45
+ 'scorm12': './src/exports/scorm12.js',
46
+ 'scorm2004': './src/exports/scorm2004.js',
47
+ 'scorm-again': './src/exports/scorm-again.js',
48
+ 'aicc.min': './src/exports/aicc.js',
49
+ 'scorm12.min': './src/exports/scorm12.js',
50
+ 'scorm2004.min': './src/exports/scorm2004.js',
51
+ 'scorm-again.min': './src/exports/scorm-again.js',
52
+ },
53
+ target: ['web', 'es5'],
54
+ module: {
55
+ rules: [
56
+ JSLoader,
57
+ ],
58
+ },
59
+ output: {
60
+ path: path.resolve(__dirname, 'dist'),
61
+ environment: {
62
+ arrowFunction: false,
63
+ },
64
+ },
65
+ optimization: {
66
+ minimize: true,
67
+ minimizer: [new UglifyJsPlugin({
68
+ include: /\.min\.js$/,
69
+ })],
70
+ },
71
+ plugins: [
72
+ new ESLintPlugin({
73
+ overrideConfigFile: path.resolve(__dirname, '.eslintrc.js'),
74
+ context: path.resolve(__dirname, '../src'),
75
+ files: '**/*.js',
76
+ }),
77
+ ],
78
+ };
package/gruntfile.js DELETED
@@ -1,87 +0,0 @@
1
- module.exports = function(grunt) {
2
- grunt.initConfig({
3
- mochaTest: {
4
- test: {
5
- options: {
6
- reporter: 'list',
7
- require: '@babel/register',
8
- noFail: false,
9
- recursive: true,
10
- captureFile: false,
11
- },
12
- src: ['test/**/*.spec.js'],
13
- },
14
- },
15
- watch: {
16
- scripts: {
17
- files: ['src/**/*.js'],
18
- tasks: ['default'],
19
- options: {
20
- spawn: false,
21
- },
22
- },
23
- },
24
- browserify: {
25
- development: {
26
- src: [
27
- './src/**/*.js',
28
- ],
29
- dest: './dist/scorm-again.js',
30
- options: {
31
- browserifyOptions: {debug: true},
32
- transform: [
33
- [
34
- 'babelify', {
35
- 'presets': ['@babel/preset-env', '@babel/preset-flow'],
36
- 'plugins': [
37
- '@babel/plugin-proposal-class-properties',
38
- '@babel/plugin-proposal-private-methods',
39
- '@babel/plugin-proposal-optional-chaining',
40
- ],
41
- },
42
- ],
43
- ],
44
- },
45
- },
46
- production: {
47
- src: [
48
- './src/**/*.js',
49
- ],
50
- dest: './dist/scorm-again.min.js',
51
- options: {
52
- browserifyOptions: {debug: true},
53
- transform: [
54
- [
55
- 'babelify', {
56
- 'presets': ['@babel/preset-env', '@babel/preset-flow'],
57
- 'plugins': [
58
- '@babel/plugin-proposal-class-properties',
59
- '@babel/plugin-proposal-private-methods',
60
- '@babel/plugin-proposal-optional-chaining',
61
- ],
62
- },
63
- ],
64
- ],
65
- plugin: [
66
- [
67
- 'minifyify',
68
- {
69
- map: 'scorm-again.js.map',
70
- output: './dist/scorm-again.js.map',
71
- }],
72
- ],
73
- },
74
- },
75
- },
76
-
77
- });
78
-
79
- grunt.loadNpmTasks('grunt-browserify');
80
- grunt.loadNpmTasks('grunt-mocha-test');
81
- grunt.loadNpmTasks('grunt-contrib-watch');
82
-
83
- grunt.registerTask('test', 'mochaTest');
84
-
85
- grunt.registerTask('default',
86
- ['browserify:development', 'browserify:production']);
87
- };
package/src/exports.js DELETED
@@ -1,7 +0,0 @@
1
- import Scorm2004API from './Scorm2004API';
2
- import Scorm12API from './Scorm12API';
3
- import AICC from './AICC';
4
-
5
- window.Scorm12API = Scorm12API;
6
- window.Scorm2004API = Scorm2004API;
7
- window.AICC = AICC;