musora-content-services 1.2.4 → 1.3.1
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.
- package/.prettierignore +5 -0
- package/.prettierrc +8 -0
- package/CHANGELOG.md +11 -0
- package/babel.config.cjs +1 -1
- package/jest.config.js +9 -10
- package/jsdoc.json +17 -12
- package/package.json +2 -1
- package/src/contentMetaData.js +1190 -1131
- package/src/contentTypeConfig.js +492 -387
- package/src/filterBuilder.js +163 -145
- package/src/index.d.ts +227 -237
- package/src/index.js +226 -236
- package/src/services/config.js +12 -12
- package/src/services/contentLikes.js +33 -32
- package/src/services/contentProgress.js +233 -200
- package/src/services/dataContext.js +99 -93
- package/src/services/lastUpdated.js +7 -7
- package/src/services/railcontent.js +368 -364
- package/src/services/sanity.js +975 -955
- package/src/services/userPermissions.js +12 -14
- package/test/contentLikes.test.js +89 -86
- package/test/contentProgress.test.js +229 -236
- package/test/initializeTests.js +54 -51
- package/test/lastUpdated.test.js +20 -18
- package/test/live/contentProgressLive.test.js +135 -137
- package/test/live/railcontentLive.test.js +12 -14
- package/test/localStorageMock.js +16 -16
- package/test/log.js +5 -5
- package/test/sanityQueryService.test.js +857 -821
- package/test/userPermissions.test.js +15 -15
- package/tools/generate-index.cjs +108 -111
- package/.yarnrc.yml +0 -1
|
@@ -1,141 +1,139 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
recordWatchSession,
|
|
3
|
+
getProgressPercentage,
|
|
4
|
+
dataContext,
|
|
5
|
+
getProgressState,
|
|
6
|
+
contentStatusCompleted,
|
|
7
|
+
contentStatusReset,
|
|
8
|
+
assignmentStatusCompleted,
|
|
9
|
+
} from '../../src/services/contentProgress'
|
|
10
|
+
import { initializeTestService } from '../initializeTests'
|
|
9
11
|
|
|
10
12
|
describe('contentProgressDataContextLocal', function () {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
test('verifyProgressPercentage', async () => {
|
|
16
|
-
let contentId = 241250;
|
|
17
|
-
await contentStatusReset(contentId);
|
|
18
|
-
|
|
19
|
-
await recordWatchSession(contentId, "video", "vimeo", 100, 50, 50);
|
|
20
|
-
|
|
21
|
-
let result = await getProgressPercentage(contentId);
|
|
22
|
-
expect(result).toBe(50);
|
|
23
|
-
dataContext.clearCache();
|
|
24
|
-
|
|
25
|
-
result = await getProgressPercentage(contentId);
|
|
26
|
-
expect(result).toBe(50);
|
|
27
|
-
}, 100000);
|
|
13
|
+
beforeEach(async () => {
|
|
14
|
+
await initializeTestService(true)
|
|
15
|
+
}, 1000000)
|
|
28
16
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
17
|
+
test('verifyProgressPercentage', async () => {
|
|
18
|
+
let contentId = 241250
|
|
19
|
+
await contentStatusReset(contentId)
|
|
20
|
+
|
|
21
|
+
await recordWatchSession(contentId, 'video', 'vimeo', 100, 50, 50)
|
|
22
|
+
|
|
23
|
+
let result = await getProgressPercentage(contentId)
|
|
24
|
+
expect(result).toBe(50)
|
|
25
|
+
dataContext.clearCache()
|
|
26
|
+
|
|
27
|
+
result = await getProgressPercentage(contentId)
|
|
28
|
+
expect(result).toBe(50)
|
|
29
|
+
}, 100000)
|
|
30
|
+
|
|
31
|
+
test('verifyState', async () => {
|
|
32
|
+
let contentId = 241251
|
|
33
|
+
await contentStatusReset(contentId)
|
|
34
|
+
|
|
35
|
+
let result = await getProgressState(contentId)
|
|
36
|
+
expect(result).toBe('')
|
|
37
|
+
|
|
38
|
+
await recordWatchSession(contentId, 'video', 'vimeo', 100, 50, 50)
|
|
39
|
+
|
|
40
|
+
result = await getProgressState(contentId)
|
|
41
|
+
expect(result).toBe('started')
|
|
42
|
+
dataContext.clearCache()
|
|
43
|
+
await new Promise((resolve) => setTimeout(resolve, 3000)) // 3 sec
|
|
44
|
+
|
|
45
|
+
result = await getProgressState(contentId)
|
|
46
|
+
expect(result).toBe('started')
|
|
47
|
+
}, 100000)
|
|
48
|
+
|
|
49
|
+
test('verifyStateCompleted', async () => {
|
|
50
|
+
let contentId = 241252
|
|
51
|
+
await contentStatusReset(contentId)
|
|
52
|
+
|
|
53
|
+
await contentStatusCompleted(241252)
|
|
54
|
+
let result = await getProgressState(241252)
|
|
55
|
+
expect(result).toBe('completed')
|
|
56
|
+
|
|
57
|
+
result = await getProgressState(contentId)
|
|
58
|
+
expect(result).toBe('completed')
|
|
59
|
+
dataContext.clearCache()
|
|
60
|
+
|
|
61
|
+
result = await getProgressState(contentId)
|
|
62
|
+
expect(result).toBe('completed')
|
|
63
|
+
}, 100000)
|
|
64
|
+
|
|
65
|
+
test('verifyStateReset', async () => {
|
|
66
|
+
let contentId = 241253
|
|
67
|
+
await contentStatusReset(contentId)
|
|
68
|
+
|
|
69
|
+
await contentStatusCompleted(contentId)
|
|
70
|
+
|
|
71
|
+
let result = await getProgressState(contentId)
|
|
72
|
+
expect(result).toBe('completed')
|
|
73
|
+
await contentStatusReset(contentId)
|
|
74
|
+
|
|
75
|
+
result = await getProgressState(contentId)
|
|
76
|
+
expect(result).toBe('')
|
|
77
|
+
dataContext.clearCache()
|
|
78
|
+
|
|
79
|
+
result = await getProgressState(contentId)
|
|
80
|
+
expect(result).toBe('')
|
|
81
|
+
}, 100000)
|
|
82
|
+
|
|
83
|
+
test('assignmentCompleteBubblingToCompletedMultiple', async () => {
|
|
84
|
+
let contentId = 281709
|
|
85
|
+
await contentStatusReset(contentId)
|
|
86
|
+
|
|
87
|
+
let state = await getProgressState(contentId)
|
|
88
|
+
expect(state).toBe('')
|
|
89
|
+
|
|
90
|
+
let assignmentIds = [281710, 281711, 281712, 281713, 281714, 281715]
|
|
91
|
+
for (const assignmentId of assignmentIds) {
|
|
92
|
+
await assignmentStatusCompleted(assignmentId, contentId)
|
|
93
|
+
state = await getProgressState(assignmentId)
|
|
94
|
+
expect(state).toBe('completed')
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
state = await getProgressState(contentId) //assignment
|
|
98
|
+
expect(state).toBe('completed')
|
|
99
|
+
|
|
100
|
+
dataContext.clearCache()
|
|
101
|
+
|
|
102
|
+
state = await getProgressState(contentId) //assignment
|
|
103
|
+
expect(state).toBe('completed')
|
|
104
|
+
|
|
105
|
+
for (const assignmentId of assignmentIds) {
|
|
106
|
+
state = await getProgressState(assignmentId)
|
|
107
|
+
expect(state).toBe('completed')
|
|
108
|
+
}
|
|
109
|
+
}, 100000)
|
|
110
|
+
|
|
111
|
+
//
|
|
112
|
+
// test('progressBubbling', async () => {
|
|
113
|
+
// let serverVersion = 2;
|
|
114
|
+
// let mock2 = jest.spyOn(railContentModule, 'postRecordWatchSession');
|
|
115
|
+
// mock2.mockImplementation(() => JSON.parse(`{"version": ${serverVersion}}`));
|
|
116
|
+
// let progress = await getProgressPercentage(241250); //force load context
|
|
117
|
+
//
|
|
118
|
+
// await recordWatchSession(241250, "video", "vimeo", 100, 50, 50);
|
|
119
|
+
// serverVersion++;
|
|
120
|
+
// await recordWatchSession(241251, "video", "vimeo", 100, 50, 50);
|
|
121
|
+
// serverVersion++;
|
|
122
|
+
// await recordWatchSession(241252, "video", "vimeo", 100, 50, 50);
|
|
123
|
+
// serverVersion++;
|
|
124
|
+
// await recordWatchSession(241260, "video", "vimeo", 100, 100, 100);
|
|
125
|
+
// serverVersion++;
|
|
126
|
+
// await recordWatchSession(241261, "video", "vimeo", 100, 100, 100);
|
|
127
|
+
// serverVersion++;
|
|
128
|
+
// progress = await getProgressPercentage(241250);
|
|
129
|
+
//
|
|
130
|
+
// expect(progress).toBe(50);
|
|
131
|
+
// let progress241249 = await getProgressPercentage(241249);
|
|
132
|
+
// expect(progress241249).toBe(15);
|
|
133
|
+
// let progress241248 = await getProgressPercentage(241248);
|
|
134
|
+
// expect(progress241248).toBe(7);
|
|
135
|
+
// let progress241247 = await getProgressPercentage(241247);
|
|
136
|
+
// expect(progress241247).toBe(1);
|
|
137
|
+
//
|
|
138
|
+
// }, 100000);
|
|
139
|
+
})
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import {initializeTestService} from
|
|
2
|
-
import {fetchChallengeIndexMetadata} from
|
|
3
|
-
|
|
1
|
+
import { initializeTestService } from '../initializeTests'
|
|
2
|
+
import { fetchChallengeIndexMetadata } from '../../src'
|
|
4
3
|
|
|
5
4
|
describe('railcontentLive', function () {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
5
|
+
beforeEach(async () => {
|
|
6
|
+
await initializeTestService(true)
|
|
7
|
+
}, 1000000)
|
|
8
|
+
|
|
9
|
+
test('challengeIndexMetadata', async () => {
|
|
10
|
+
let contentId = 281709
|
|
11
|
+
let results = await fetchChallengeIndexMetadata([contentId])
|
|
12
|
+
expect(Array.isArray(results)).toBe(true)
|
|
13
|
+
})
|
|
14
|
+
})
|
package/test/localStorageMock.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
export class LocalStorageMock {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
constructor() {
|
|
3
|
+
this.store = {}
|
|
4
|
+
}
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
clear() {
|
|
7
|
+
this.store = {}
|
|
8
|
+
}
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
getItem(key) {
|
|
11
|
+
return this.store[key] || null
|
|
12
|
+
}
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
setItem(key, value) {
|
|
15
|
+
this.store[key] = String(value)
|
|
16
|
+
}
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
18
|
+
removeItem(key) {
|
|
19
|
+
delete this.store[key]
|
|
20
|
+
}
|
|
21
|
+
}
|
package/test/log.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export function log(message, forceEnabled = false) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
1
|
+
export function log(message, forceEnabled = false) {
|
|
2
|
+
if (process.env.DEBUG === 'true' || forceEnabled) {
|
|
3
|
+
console.log(message)
|
|
4
|
+
}
|
|
5
|
+
}
|