@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.
Files changed (25) hide show
  1. package/components/Content/Blocks/ExternalIntegration/LtiConsumer.vue +5 -2
  2. package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumer.vue +3 -1
  3. package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumers.vue +3 -2
  4. package/components/ExternalIntegration/Driver/Lti1p1/ManageProvider.vue +3 -1
  5. package/components/ExternalIntegration/Driver/Lti1p1/ManageProviders.vue +3 -2
  6. package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumer.vue +3 -1
  7. package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumers.vue +3 -2
  8. package/components/ExternalIntegration/Driver/Lti1p3/ManageProvider.vue +3 -1
  9. package/components/ExternalIntegration/Driver/Lti1p3/ManageProviders.vue +3 -2
  10. package/components/ExternalIntegration/Driver/Lti1p3/ViewConsumer.vue +1 -1
  11. package/components/FileImport/FileImportMenu.vue +1 -1
  12. package/components/FileImport/Resourcespace.vue +2 -1
  13. package/components/Integration/Driver/ManageBase.vue +1 -1
  14. package/components/Integration/JobLog.vue +2 -1
  15. package/components/Integration/JobTable.vue +2 -1
  16. package/components/Integration/TestConnection.vue +1 -0
  17. package/components/Navigation/Items/CourseJobLog.vue +2 -1
  18. package/components/SecretField.vue +2 -2
  19. package/components/Settings/ExternalIntegration/LtiConsumerSettings.vue +5 -2
  20. package/package.json +2 -2
  21. package/pages/admin/importCourse.vue +1 -1
  22. package/pages/admin/vendors.vue +3 -2
  23. package/plugin.js +1 -1
  24. package/test/__mocks__/componentsMock.js +1 -48
  25. 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 = 'lti-' + this.consumer.version + '-consumer'
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 },
@@ -3,6 +3,7 @@
3
3
  <v-btn
4
4
  :disabled="disabled"
5
5
  :loading="loading"
6
+ elevation="0"
6
7
  outlined
7
8
  color="primary"
8
9
  @click="$emit('click')"
@@ -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/Tool/BaseContentSettings.js'
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.2.1",
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.2",
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",
@@ -116,7 +116,7 @@
116
116
  :disabled="!selected.remoteCourseId"
117
117
  ></v-switch>
118
118
 
119
- <v-btn color="primary" @click="onImport">
119
+ <v-btn color="primary" elevation="0" @click="onImport">
120
120
  {{
121
121
  $t(
122
122
  'windward.integrations.pages.import_course.start_import'
@@ -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
- // TODO find better way for jest to recognize utils imports
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 { Model as mockModel } from 'vue-api-query'
1
+ import { registerModels } from '@windward/core/test/__mocks__/modelMock.js'
2
2
 
3
- import axios from 'axios'
4
- jest.mock('axios')
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: '../../models/OrganizationIntegration',
6
+ path: '@/models/OrganizationIntegration',
19
7
  resource: 'organization-integrations',
20
8
  },
21
9
  {
22
- path: '../../models/CourseSectionIntegration',
10
+ path: '@/models/CourseSectionIntegration',
23
11
  resource: 'section-integrations',
24
12
  },
25
- { path: '../../models/IntegrationJob', resource: 'integration-jobs' },
26
- { path: '../../models/RemoteContent', resource: 'remote-content' },
27
- { path: '../../models/RemoteCourse', resource: 'remote-courses' },
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: '../../models/RemoteOrganization',
17
+ path: '@/models/RemoteOrganization',
30
18
  resource: 'remote-organizations',
31
19
  },
32
- { path: '../../models/Vendor', resource: 'vendors' },
33
- { path: '../../models/RemoteFile', resource: 'remote-files' },
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
+ ])