• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CenterForOpenScience / ember-osf-web / 14961817356

12 May 2025 01:24AM UTC coverage: 67.414%. First build
14961817356

Pull #2559

github

web-flow
Merge 91fa8fad3 into a28878b48
Pull Request #2559: [ENG-7575][ENG-7782]Link service project workflow

3241 of 5292 branches covered (61.24%)

Branch coverage included in aggregate %.

18 of 50 new or added lines in 6 files covered. (36.0%)

8485 of 12102 relevant lines covered (70.11%)

184.43 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/app/models/configured-link-addon.ts
1
import { AsyncBelongsTo, attr, belongsTo } from '@ember-data/model';
2
import { waitFor } from '@ember/test-waiters';
3
import { task } from 'ember-concurrency';
4
import { ConnectedLinkOperationNames, Item, OperationKwargs } from 'ember-osf-web/models/addon-operation-invocation';
5
import ResourceReferenceModel from 'ember-osf-web/models/resource-reference';
6

7
import ExternalLinkServiceModel, { SupportedResourceTypes } from 'ember-osf-web/models/external-link-service';
8
import AuthorizedLinkAccountModel from 'ember-osf-web/models/authorized-link-account';
9
import { tracked } from 'tracked-built-ins';
10
import { taskFor } from 'ember-concurrency-ts';
11
import ConfiguredAddonModel from './configured-addon';
12

13

14
export default class ConfiguredLinkAddonModel extends ConfiguredAddonModel {
15
    @attr('string') targetId!: string;
16
    @attr('string') resourceType!: SupportedResourceTypes;
17

18
    @belongsTo('external-link-service', { inverse: null })
19
    externalLinkService!: AsyncBelongsTo<ExternalLinkServiceModel> & ExternalLinkServiceModel;
20

21
    @belongsTo('authorized-link-account')
22
    baseAccount!: AsyncBelongsTo<AuthorizedLinkAccountModel> & AuthorizedLinkAccountModel;
23

24
    @belongsTo('resource-reference', { inverse: 'configuredLinkAddons' })
25
    authorizedResource!: AsyncBelongsTo<ResourceReferenceModel> & ResourceReferenceModel;
26

27
    get externalServiceId() {
28
        return (this as ConfiguredLinkAddonModel).belongsTo('externalLinkService').id();
×
29
    }
30

31
    get hasRootFolder() {
NEW
32
        return false;
×
33
    }
34

35
    @task
36
    @waitFor
37
    async getFolderItems(this: ConfiguredAddonModel, kwargs?: OperationKwargs) {
38
        const operationKwargs = kwargs || {};
×
39
        const operationName = operationKwargs.itemId ? ConnectedLinkOperationNames.ListChildItems :
×
40
            ConnectedLinkOperationNames.ListRootItems;
41
        const newInvocation = this.store.createRecord('addon-operation-invocation', {
×
42
            operationName,
43
            operationKwargs,
44
            thruAddon: this,
45
        });
46
        return await newInvocation.save();
×
47
    }
48

49
    @task
50
    @waitFor
51
    async getItemInfo(this: ConfiguredAddonModel, itemId: string) {
52
        const newInvocation = this.store.createRecord('addon-operation-invocation', {
×
53
            operationName: ConnectedLinkOperationNames.GetItemInfo,
54
            operationKwargs: { itemId },
55
            thruAddon: this,
56
        });
57
        return await newInvocation.save();
×
58
    }
59

NEW
60
    @tracked targetItemName = '';
×
61

62
    @task
63
    @waitFor
64
    async getTargetItemName(this: ConfiguredLinkAddonModel) {
NEW
65
        const response = await taskFor(this.getItemInfo).perform(this.targetId);
×
NEW
66
        this.targetItemName = (response.operationResult as Item).itemName;
×
67
    }
68
}
69

70
declare module 'ember-data/types/registries/model' {
71
    export default interface ModelRegistry {
72
        'configured-link-addon': ConfiguredLinkAddonModel;
73
    } // eslint-disable-line semi
74
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc