@windward/integrations 0.2.1 → 0.4.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.
- package/components/Content/Blocks/ExternalIntegration/LtiConsumer.vue +5 -2
- package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumer.vue +3 -1
- package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumers.vue +3 -2
- package/components/ExternalIntegration/Driver/Lti1p1/ManageProvider.vue +3 -1
- package/components/ExternalIntegration/Driver/Lti1p1/ManageProviders.vue +3 -2
- package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumer.vue +3 -1
- package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumers.vue +3 -2
- package/components/ExternalIntegration/Driver/Lti1p3/ManageProvider.vue +3 -1
- package/components/ExternalIntegration/Driver/Lti1p3/ManageProviders.vue +3 -2
- package/components/ExternalIntegration/Driver/Lti1p3/ViewConsumer.vue +1 -1
- package/components/FileImport/FileImportMenu.vue +1 -1
- package/components/FileImport/Resourcespace.vue +2 -1
- package/components/Integration/Driver/ManageBase.vue +1 -1
- package/components/Integration/JobLog.vue +2 -1
- package/components/Integration/JobTable.vue +2 -1
- package/components/Integration/TestConnection.vue +1 -0
- package/components/Navigation/Items/CourseJobLog.vue +2 -1
- package/components/SecretField.vue +2 -2
- package/components/Settings/ExternalIntegration/LtiConsumerSettings.vue +5 -2
- package/package.json +2 -2
- package/pages/admin/importCourse.vue +1 -1
- package/pages/admin/vendors.vue +3 -2
- package/plugin.js +1 -1
- package/test/__mocks__/componentsMock.js +1 -48
- package/test/__mocks__/modelMock.js +12 -95
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
block.metadata.config.launch_type === 'new_window'
|
|
21
21
|
"
|
|
22
22
|
color="primary"
|
|
23
|
+
elevation="0"
|
|
23
24
|
block
|
|
24
25
|
@click="onLaunch"
|
|
25
26
|
>
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
<v-btn
|
|
35
36
|
v-else
|
|
36
37
|
color="primary"
|
|
38
|
+
elevation="0"
|
|
37
39
|
block
|
|
38
40
|
@click="setLaunchTimer(100)"
|
|
39
41
|
>
|
|
@@ -154,7 +156,7 @@ import BaseContentBlock from '~/components/Content/Blocks/BaseContentBlock'
|
|
|
154
156
|
import Course from '~/models/Course'
|
|
155
157
|
import Organization from '~/models/Organization'
|
|
156
158
|
import Enrollment from '~/models/Enrollment'
|
|
157
|
-
import DialogBox from '~/components/DialogBox.vue'
|
|
159
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
158
160
|
|
|
159
161
|
export default {
|
|
160
162
|
name: 'ContentBlockExternalIntegrationLti1p1Consumer',
|
|
@@ -321,7 +323,8 @@ export default {
|
|
|
321
323
|
},
|
|
322
324
|
onBeforeSave() {
|
|
323
325
|
// Set a generic body since we don't use this field
|
|
324
|
-
this.block.body =
|
|
326
|
+
this.block.body =
|
|
327
|
+
'lti-' + _.get(this.consumer, 'version', '0.0') + '-consumer'
|
|
325
328
|
},
|
|
326
329
|
},
|
|
327
330
|
}
|
|
@@ -112,6 +112,7 @@
|
|
|
112
112
|
<v-btn
|
|
113
113
|
text
|
|
114
114
|
color="primary"
|
|
115
|
+
elevation="0"
|
|
115
116
|
@click="deleteCustomParameter(index)"
|
|
116
117
|
>
|
|
117
118
|
<v-icon small> mdi-delete </v-icon>
|
|
@@ -125,6 +126,7 @@
|
|
|
125
126
|
<v-btn
|
|
126
127
|
color="primary"
|
|
127
128
|
class="mb-3"
|
|
129
|
+
elevation="0"
|
|
128
130
|
@click="addCustomParameter"
|
|
129
131
|
>{{ $t('shared.forms.add') }}</v-btn
|
|
130
132
|
>
|
|
@@ -154,7 +156,7 @@ import LtiConsumer from '../../../../models/ExternalIntegration/LtiConsumer'
|
|
|
154
156
|
import Organization from '~/models/Organization'
|
|
155
157
|
import Course from '~/models/Course'
|
|
156
158
|
import TextEditor from '~/components/Text/TextEditor.vue'
|
|
157
|
-
import FormVue from '~/components/Form'
|
|
159
|
+
import FormVue from '~/components/Core/Form'
|
|
158
160
|
|
|
159
161
|
export default {
|
|
160
162
|
name: 'ManageLti1p1ConsumerDriver',
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
<v-btn
|
|
53
53
|
color="error"
|
|
54
54
|
outlined
|
|
55
|
+
elevation="0"
|
|
55
56
|
class="outlined"
|
|
56
57
|
@click="onConfirmDelete(item)"
|
|
57
58
|
>
|
|
@@ -101,8 +102,8 @@ import LtiConsumer from '../../../../models/ExternalIntegration/LtiConsumer'
|
|
|
101
102
|
import ManageConsumer from './ManageConsumer.vue'
|
|
102
103
|
import Course from '~/models/Course'
|
|
103
104
|
import Organization from '~/models/Organization'
|
|
104
|
-
import DialogBox from '~/components/DialogBox.vue'
|
|
105
|
-
import SpeedDial from '~/components/SpeedDial.vue'
|
|
105
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
106
|
+
import SpeedDial from '~/components/Core/SpeedDial.vue'
|
|
106
107
|
|
|
107
108
|
export default {
|
|
108
109
|
name: 'ManageLti1p1ConsumersDriver',
|
|
@@ -167,6 +167,7 @@
|
|
|
167
167
|
<td>
|
|
168
168
|
<v-btn
|
|
169
169
|
icon
|
|
170
|
+
elevation="0"
|
|
170
171
|
@click="
|
|
171
172
|
deleteMapItem(
|
|
172
173
|
externalName
|
|
@@ -217,6 +218,7 @@
|
|
|
217
218
|
<td>
|
|
218
219
|
<v-btn
|
|
219
220
|
icon
|
|
221
|
+
elevation="0"
|
|
220
222
|
:disabled="
|
|
221
223
|
!newMap.id ||
|
|
222
224
|
!newMap.name
|
|
@@ -256,7 +258,7 @@ import _ from 'lodash'
|
|
|
256
258
|
import { mapGetters } from 'vuex'
|
|
257
259
|
import ProviderTargetPicker from '../../ProviderTargetPicker.vue'
|
|
258
260
|
import LtiProvider from '../../../../models/ExternalIntegration/LtiProvider'
|
|
259
|
-
import FormVue from '~/components/Form.vue'
|
|
261
|
+
import FormVue from '~/components/Core/Form.vue'
|
|
260
262
|
import Role from '~/models/Role'
|
|
261
263
|
import Organization from '~/models/Organization'
|
|
262
264
|
import Course from '~/models/Course'
|
|
@@ -71,6 +71,7 @@
|
|
|
71
71
|
<v-btn
|
|
72
72
|
color="error"
|
|
73
73
|
outlined
|
|
74
|
+
elevation="0"
|
|
74
75
|
class="outlined"
|
|
75
76
|
@click="onConfirmDelete(item)"
|
|
76
77
|
>
|
|
@@ -124,10 +125,10 @@ import LtiProvider from '../../../../models/ExternalIntegration/LtiProvider'
|
|
|
124
125
|
import SecretField from '../../../SecretField.vue'
|
|
125
126
|
import ProviderTargetViewer from '../../ProviderTargetViewer.vue'
|
|
126
127
|
import ManageProvider from './ManageProvider.vue'
|
|
127
|
-
import DialogBox from '~/components/DialogBox.vue'
|
|
128
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
128
129
|
import Organization from '~/models/Organization'
|
|
129
130
|
import Course from '~/models/Course'
|
|
130
|
-
import SpeedDial from '~/components/SpeedDial.vue'
|
|
131
|
+
import SpeedDial from '~/components/Core/SpeedDial.vue'
|
|
131
132
|
|
|
132
133
|
export default {
|
|
133
134
|
name: 'ManageLti1p1ProvidersDriver',
|
|
@@ -103,6 +103,7 @@
|
|
|
103
103
|
<v-btn
|
|
104
104
|
text
|
|
105
105
|
color="primary"
|
|
106
|
+
elevation="0"
|
|
106
107
|
@click="deleteCustomParameter(index)"
|
|
107
108
|
>
|
|
108
109
|
<v-icon small> mdi-delete </v-icon>
|
|
@@ -116,6 +117,7 @@
|
|
|
116
117
|
<v-btn
|
|
117
118
|
color="primary"
|
|
118
119
|
class="mb-3"
|
|
120
|
+
elevation="0"
|
|
119
121
|
@click="addCustomParameter"
|
|
120
122
|
>{{ $t('shared.forms.add') }}</v-btn
|
|
121
123
|
>
|
|
@@ -145,7 +147,7 @@ import LtiConsumer from '../../../../models/ExternalIntegration/LtiConsumer'
|
|
|
145
147
|
import Organization from '~/models/Organization'
|
|
146
148
|
import Course from '~/models/Course'
|
|
147
149
|
import TextEditor from '~/components/Text/TextEditor.vue'
|
|
148
|
-
import FormVue from '~/components/Form'
|
|
150
|
+
import FormVue from '~/components/Core/Form'
|
|
149
151
|
|
|
150
152
|
export default {
|
|
151
153
|
name: 'ManageLti1p3ConsumerDriver',
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
<v-btn
|
|
53
53
|
color="error"
|
|
54
54
|
outlined
|
|
55
|
+
elevation="0"
|
|
55
56
|
class="outlined"
|
|
56
57
|
@click="onConfirmDelete(item)"
|
|
57
58
|
>
|
|
@@ -128,8 +129,8 @@ import ManageConsumer from './ManageConsumer.vue'
|
|
|
128
129
|
import ViewConsumer from './ViewConsumer.vue'
|
|
129
130
|
import Course from '~/models/Course'
|
|
130
131
|
import Organization from '~/models/Organization'
|
|
131
|
-
import DialogBox from '~/components/DialogBox.vue'
|
|
132
|
-
import SpeedDial from '~/components/SpeedDial.vue'
|
|
132
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
133
|
+
import SpeedDial from '~/components/Core/SpeedDial.vue'
|
|
133
134
|
|
|
134
135
|
export default {
|
|
135
136
|
name: 'ManageLti1p1ConsumersDriver',
|
|
@@ -266,6 +266,7 @@
|
|
|
266
266
|
<td>
|
|
267
267
|
<v-btn
|
|
268
268
|
icon
|
|
269
|
+
elevation="0"
|
|
269
270
|
@click="
|
|
270
271
|
deleteMapItem(
|
|
271
272
|
externalName
|
|
@@ -316,6 +317,7 @@
|
|
|
316
317
|
<td>
|
|
317
318
|
<v-btn
|
|
318
319
|
icon
|
|
320
|
+
elevation="0"
|
|
319
321
|
:disabled="
|
|
320
322
|
!newMap.id ||
|
|
321
323
|
!newMap.name
|
|
@@ -356,7 +358,7 @@ import { mapGetters } from 'vuex'
|
|
|
356
358
|
import ProviderTargetPicker from '../../ProviderTargetPicker.vue'
|
|
357
359
|
import LtiProvider from '../../../../models/ExternalIntegration/LtiProvider'
|
|
358
360
|
|
|
359
|
-
import FormVue from '~/components/Form.vue'
|
|
361
|
+
import FormVue from '~/components/Core/Form.vue'
|
|
360
362
|
import Role from '~/models/Role'
|
|
361
363
|
import Organization from '~/models/Organization'
|
|
362
364
|
import Course from '~/models/Course'
|
|
@@ -77,6 +77,7 @@
|
|
|
77
77
|
<v-btn
|
|
78
78
|
color="error"
|
|
79
79
|
outlined
|
|
80
|
+
elevation="0"
|
|
80
81
|
class="outlined"
|
|
81
82
|
@click="onConfirmDelete(item)"
|
|
82
83
|
>
|
|
@@ -126,10 +127,10 @@ import LtiProvider from '../../../../models/ExternalIntegration/LtiProvider'
|
|
|
126
127
|
import SecretField from '../../../SecretField.vue'
|
|
127
128
|
import ProviderTargetViewer from '../../ProviderTargetViewer.vue'
|
|
128
129
|
import ManageProvider from './ManageProvider.vue'
|
|
129
|
-
import DialogBox from '~/components/DialogBox.vue'
|
|
130
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
130
131
|
import Organization from '~/models/Organization'
|
|
131
132
|
import Course from '~/models/Course'
|
|
132
|
-
import SpeedDial from '~/components/SpeedDial.vue'
|
|
133
|
+
import SpeedDial from '~/components/Core/SpeedDial.vue'
|
|
133
134
|
|
|
134
135
|
export default {
|
|
135
136
|
name: 'ManageLti1p1ProvidersDriver',
|
|
@@ -112,7 +112,7 @@ import LtiConsumer from '../../../../models/ExternalIntegration/LtiConsumer'
|
|
|
112
112
|
import SecretField from '../../../SecretField.vue'
|
|
113
113
|
import Organization from '~/models/Organization'
|
|
114
114
|
import Course from '~/models/Course'
|
|
115
|
-
import FormVue from '~/components/Form'
|
|
115
|
+
import FormVue from '~/components/Core/Form'
|
|
116
116
|
export default {
|
|
117
117
|
name: 'ViewLti1p3Consumer',
|
|
118
118
|
components: { SecretField },
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
import _ from 'lodash'
|
|
40
40
|
import { mapGetters } from 'vuex'
|
|
41
41
|
import Organization from '../../models/Organization'
|
|
42
|
-
import DialogBox from '~/components/DialogBox.vue'
|
|
42
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
43
43
|
|
|
44
44
|
export default {
|
|
45
45
|
name: 'FileImportMenu',
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
<v-btn
|
|
11
11
|
color="primary"
|
|
12
12
|
block
|
|
13
|
+
elevation="0"
|
|
13
14
|
:disabled="selectedFiles.length === 0"
|
|
14
15
|
:loading="loading"
|
|
15
16
|
@click="onConfirmImportFiles"
|
|
@@ -61,7 +62,7 @@ import { mapGetters } from 'vuex'
|
|
|
61
62
|
import OrganizationIntegration from '../../models/OrganizationIntegration'
|
|
62
63
|
import RemoteFile from '../../models/RemoteFile'
|
|
63
64
|
import Course from '~/models/Course'
|
|
64
|
-
import SearchField from '~/components/SearchField.vue'
|
|
65
|
+
import SearchField from '~/components/Core/SearchField.vue'
|
|
65
66
|
|
|
66
67
|
export default {
|
|
67
68
|
name: 'FileImportResourcespace',
|
|
@@ -3,7 +3,7 @@ import { mapGetters } from 'vuex'
|
|
|
3
3
|
import Organization from '../../../models/Organization'
|
|
4
4
|
import OrganizationIntegration from '../../../models/OrganizationIntegration'
|
|
5
5
|
import Vendor from '../../../models/Vendor'
|
|
6
|
-
import FormVue from '~/components/Form'
|
|
6
|
+
import FormVue from '~/components/Core/Form'
|
|
7
7
|
|
|
8
8
|
export default {
|
|
9
9
|
name: 'ManageBase',
|
|
@@ -123,6 +123,7 @@
|
|
|
123
123
|
<div class="remote-code grey darken-3">
|
|
124
124
|
<v-btn
|
|
125
125
|
icon
|
|
126
|
+
elevation="0"
|
|
126
127
|
@click="
|
|
127
128
|
onClickCopy(
|
|
128
129
|
logItem.context.remote_code
|
|
@@ -187,8 +188,8 @@
|
|
|
187
188
|
<script>
|
|
188
189
|
import _ from 'lodash'
|
|
189
190
|
import { mapGetters } from 'vuex'
|
|
190
|
-
import SearchField from '~/components/SearchField.vue'
|
|
191
191
|
import Organization from '../../models/Organization'
|
|
192
|
+
import SearchField from '~/components/Core/SearchField.vue'
|
|
192
193
|
|
|
193
194
|
export default {
|
|
194
195
|
name: 'IntegrationJobLog',
|
|
@@ -156,13 +156,14 @@
|
|
|
156
156
|
import Confetti from 'canvas-confetti'
|
|
157
157
|
import _ from 'lodash'
|
|
158
158
|
import { mapGetters } from 'vuex'
|
|
159
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
159
160
|
import Vendor from '../../models/Vendor'
|
|
160
161
|
import Organization from '../../models/Organization'
|
|
161
162
|
import JobLog from './JobLog.vue'
|
|
162
163
|
|
|
163
164
|
export default {
|
|
164
165
|
name: 'IntegrationJobs',
|
|
165
|
-
components: { JobLog },
|
|
166
|
+
components: { DialogBox, JobLog },
|
|
166
167
|
props: {
|
|
167
168
|
channel: { type: String, required: true },
|
|
168
169
|
event: { type: String, required: true },
|
|
@@ -20,11 +20,12 @@
|
|
|
20
20
|
<script>
|
|
21
21
|
import _ from 'lodash'
|
|
22
22
|
import { mapGetters } from 'vuex'
|
|
23
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
23
24
|
import JobLog from '../../Integration/JobLog.vue'
|
|
24
25
|
|
|
25
26
|
export default {
|
|
26
27
|
name: 'NavigationItemCourseJobLog',
|
|
27
|
-
components: { JobLog },
|
|
28
|
+
components: { DialogBox, JobLog },
|
|
28
29
|
props: {
|
|
29
30
|
config: { type: Object, required: true },
|
|
30
31
|
},
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
:label="label"
|
|
9
9
|
>
|
|
10
10
|
<template #append>
|
|
11
|
-
<v-btn icon @click="toggleClear">
|
|
11
|
+
<v-btn icon elevation="0" @click="toggleClear">
|
|
12
12
|
<v-icon>{{ showClear ? 'mdi-eye-off' : 'mdi-eye' }}</v-icon>
|
|
13
13
|
</v-btn>
|
|
14
|
-
<v-btn v-if="copy" icon @click="copyText(value)">
|
|
14
|
+
<v-btn v-if="copy" icon elevation="0" @click="copyText(value)">
|
|
15
15
|
<v-icon>mdi-content-copy</v-icon>
|
|
16
16
|
<span class="sr-only">{{ $t('shared.forms.copy') }}</span>
|
|
17
17
|
</v-btn>
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
'windward.integrations.components.settings.external_integration.lti_consumer.title'
|
|
11
11
|
)
|
|
12
12
|
"
|
|
13
|
+
:disabled="render"
|
|
13
14
|
></v-text-field>
|
|
14
15
|
<v-textarea
|
|
15
16
|
v-model="block.metadata.config.instructions"
|
|
@@ -21,6 +22,7 @@
|
|
|
21
22
|
'windward.integrations.components.settings.external_integration.lti_consumer.instructions'
|
|
22
23
|
)
|
|
23
24
|
"
|
|
25
|
+
:disabled="render"
|
|
24
26
|
></v-textarea>
|
|
25
27
|
<br />
|
|
26
28
|
<v-divider class="primary"></v-divider>
|
|
@@ -35,6 +37,7 @@
|
|
|
35
37
|
:items="launchTypes"
|
|
36
38
|
item-text="name"
|
|
37
39
|
item-value="value"
|
|
40
|
+
:disabled="render"
|
|
38
41
|
></v-select>
|
|
39
42
|
{{
|
|
40
43
|
$t(
|
|
@@ -50,8 +53,8 @@
|
|
|
50
53
|
v-for="consumer in consumers"
|
|
51
54
|
:key="consumer.id"
|
|
52
55
|
two-line
|
|
53
|
-
:disabled="!consumer.enabled"
|
|
54
56
|
:value="consumer.id"
|
|
57
|
+
:disabled="render || !consumer.enabled"
|
|
55
58
|
>
|
|
56
59
|
<v-list-item-avatar
|
|
57
60
|
:color="!consumer.enabled ? 'error' : ''"
|
|
@@ -88,7 +91,7 @@
|
|
|
88
91
|
<script>
|
|
89
92
|
import { mapGetters } from 'vuex'
|
|
90
93
|
import LtiConsumer from '../../../models/ExternalIntegration/LtiConsumer'
|
|
91
|
-
import BaseContentSettings from '~/components/Content/
|
|
94
|
+
import BaseContentSettings from '~/components/Content/Settings/BaseContentSettings.js'
|
|
92
95
|
import Course from '~/models/Course'
|
|
93
96
|
import Organization from '~/models/Organization'
|
|
94
97
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@windward/integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Windward UI Plugin Integrations for 3rd Party Systems",
|
|
5
5
|
"main": "plugin.js",
|
|
6
6
|
"scripts": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"homepage": "https://bitbucket.org/mindedge/windward-ui-plugin-integrations#readme",
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@windward/core": "^0.0
|
|
24
|
+
"@windward/core": "^0.3.0",
|
|
25
25
|
"canvas-confetti": "^1.6.0",
|
|
26
26
|
"eslint": "^8.11.0",
|
|
27
27
|
"laravel-echo": "^1.15.0",
|
package/pages/admin/vendors.vue
CHANGED
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
<v-btn
|
|
109
109
|
color="primary"
|
|
110
110
|
outlined
|
|
111
|
+
elevation="0"
|
|
111
112
|
@click="onManageIntegration(item)"
|
|
112
113
|
>
|
|
113
114
|
<v-icon>mdi-pencil</v-icon>
|
|
@@ -153,8 +154,8 @@ import _ from 'lodash'
|
|
|
153
154
|
import { mapGetters } from 'vuex'
|
|
154
155
|
import Organization from '../../models/Organization'
|
|
155
156
|
import IntegrationJobTable from '../../components/Integration/JobTable.vue'
|
|
156
|
-
import Breadcrumbs from '~/components/Breadcrumbs.vue'
|
|
157
|
-
import DialogBox from '~/components/DialogBox.vue'
|
|
157
|
+
import Breadcrumbs from '~/components/Core/Breadcrumbs.vue'
|
|
158
|
+
import DialogBox from '~/components/Core/DialogBox.vue'
|
|
158
159
|
|
|
159
160
|
export default {
|
|
160
161
|
name: 'PluginIntegrationsAdminVendorsPage',
|
package/plugin.js
CHANGED
|
@@ -215,7 +215,7 @@ export default {
|
|
|
215
215
|
{
|
|
216
216
|
tag: 'windward-integrations-lti-consumer-settings',
|
|
217
217
|
template: LtiConsumerBlockSettings,
|
|
218
|
-
context: ['block'],
|
|
218
|
+
context: ['block.windward-integrations-lti-consumer'],
|
|
219
219
|
metadata: {
|
|
220
220
|
icon: 'mdi-cog',
|
|
221
221
|
name: 'windward.integrations.shared.settings.title.lti_consumer',
|
|
@@ -1,48 +1 @@
|
|
|
1
|
-
//
|
|
2
|
-
jest.mock(
|
|
3
|
-
'~/components/Form.vue',
|
|
4
|
-
() => {
|
|
5
|
-
return {
|
|
6
|
-
data() {
|
|
7
|
-
return { validation: {} }
|
|
8
|
-
},
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
{ virtual: true }
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
jest.mock(
|
|
15
|
-
'~/components/Form',
|
|
16
|
-
() => {
|
|
17
|
-
return {
|
|
18
|
-
data() {
|
|
19
|
-
return { validation: {} }
|
|
20
|
-
},
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
{ virtual: true }
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
jest.mock(
|
|
27
|
-
'~/components/Breadcrumbs.vue',
|
|
28
|
-
() => {
|
|
29
|
-
return {
|
|
30
|
-
data() {
|
|
31
|
-
return { validation: {} }
|
|
32
|
-
},
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
{ virtual: true }
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
jest.mock(
|
|
39
|
-
'~/components/SearchField.vue',
|
|
40
|
-
() => {
|
|
41
|
-
return {
|
|
42
|
-
props: {},
|
|
43
|
-
computed: {},
|
|
44
|
-
methods: {},
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
{ virtual: true }
|
|
48
|
-
)
|
|
1
|
+
// Mock components from other repos
|
|
@@ -1,105 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { registerModels } from '@windward/core/test/__mocks__/modelMock.js'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
mockModel.$http = axios
|
|
6
|
-
|
|
7
|
-
jest.mock('axios')
|
|
8
|
-
|
|
9
|
-
// Define any new model mocks here. The imports / mocks will be auto-generated below
|
|
10
|
-
const mockVirtualModels = [
|
|
11
|
-
{ path: '~/models/Role', resource: 'roles' },
|
|
12
|
-
{ path: '~/models/Organization', resource: 'organizations' },
|
|
13
|
-
]
|
|
14
|
-
|
|
15
|
-
const mockModels = [
|
|
16
|
-
{ path: '../../models/Organization', resource: 'organizations' },
|
|
3
|
+
registerModels([
|
|
4
|
+
{ path: '@/models/Organization', resource: 'organizations' },
|
|
17
5
|
{
|
|
18
|
-
path: '
|
|
6
|
+
path: '@/models/OrganizationIntegration',
|
|
19
7
|
resource: 'organization-integrations',
|
|
20
8
|
},
|
|
21
9
|
{
|
|
22
|
-
path: '
|
|
10
|
+
path: '@/models/CourseSectionIntegration',
|
|
23
11
|
resource: 'section-integrations',
|
|
24
12
|
},
|
|
25
|
-
{ path: '
|
|
26
|
-
{ path: '
|
|
27
|
-
{ path: '
|
|
13
|
+
{ path: '@/models/IntegrationJob', resource: 'integration-jobs' },
|
|
14
|
+
{ path: '@/models/RemoteContent', resource: 'remote-content' },
|
|
15
|
+
{ path: '@/models/RemoteCourse', resource: 'remote-courses' },
|
|
28
16
|
{
|
|
29
|
-
path: '
|
|
17
|
+
path: '@/models/RemoteOrganization',
|
|
30
18
|
resource: 'remote-organizations',
|
|
31
19
|
},
|
|
32
|
-
{ path: '
|
|
33
|
-
{ path: '
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
// DO NOT ALTER THE BELOW CODE
|
|
37
|
-
jest.mock('', () => {
|
|
38
|
-
return {
|
|
39
|
-
__esModule: true,
|
|
40
|
-
default: class Model {},
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
class mockBaseModel extends mockModel {
|
|
44
|
-
baseURL() {
|
|
45
|
-
return 'http://windwardapi.local'
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
request(_config) {
|
|
49
|
-
return new Promise((resolve) => {
|
|
50
|
-
resolve({ data: {} })
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
jest.mock(
|
|
56
|
-
'~/models/Model',
|
|
57
|
-
() => {
|
|
58
|
-
return {
|
|
59
|
-
__esModule: true,
|
|
60
|
-
default: class Model extends mockBaseModel {},
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
{ virtual: true }
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
for (let mockI = 0; mockI < mockVirtualModels.length; mockI++) {
|
|
67
|
-
jest.mock(
|
|
68
|
-
mockVirtualModels[mockI].path,
|
|
69
|
-
() => {
|
|
70
|
-
return {
|
|
71
|
-
__esModule: true,
|
|
72
|
-
default: class Model extends mockBaseModel {
|
|
73
|
-
resource() {
|
|
74
|
-
return (
|
|
75
|
-
mockVirtualModels[mockI].resource ||
|
|
76
|
-
this.constructor.name
|
|
77
|
-
)
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
{ virtual: true }
|
|
83
|
-
)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
for (let mockJ = 0; mockJ < mockModels.length; mockJ++) {
|
|
87
|
-
jest.mock(mockModels[mockJ].path, () => {
|
|
88
|
-
return {
|
|
89
|
-
__esModule: true,
|
|
90
|
-
default: class Model extends mockBaseModel {
|
|
91
|
-
resource() {
|
|
92
|
-
return mockModels[mockJ].resource || this.constructor.name
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
integrations() {
|
|
96
|
-
return this
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
get() {
|
|
100
|
-
return []
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
}
|
|
104
|
-
})
|
|
105
|
-
}
|
|
20
|
+
{ path: '@/models/Vendor', resource: 'vendors' },
|
|
21
|
+
{ path: '@/models/RemoteFile', resource: 'remote-files' },
|
|
22
|
+
])
|