Skip to content

Commit f7889d5

Browse files
committed
feat: Add getLinkTemplates method and corresponding model interfaces
1 parent ceca85b commit f7889d5

File tree

4 files changed

+69
-2
lines changed

4 files changed

+69
-2
lines changed

src/OFS.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
OFSGetSubmittedFormsParams,
2626
OFSSubmittedFormsResponse,
2727
OFSActivityLinkTypeResponse,
28+
OFSLinkTemplatesResponse,
2829
} from "./model";
2930

3031
export * from "./model";
@@ -899,6 +900,12 @@ export class OFS {
899900
return this._get(partialURL, params);
900901
}
901902

903+
//Meta: Link Templates
904+
async getLinkTemplates(): Promise<OFSLinkTemplatesResponse> {
905+
const partialURL = "/rest/ofscMetadata/v1/linkTemplates";
906+
return this._get(partialURL) as Promise<OFSLinkTemplatesResponse>;
907+
}
908+
902909
async getPropertyDetails(pid: string): Promise<OFSPropertyDetailsResponse> {
903910
const partialURL = `/rest/ofscMetadata/v1/properties/${pid}`;
904911
return this._get(partialURL);

src/model.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
export interface OFSLinkTemplate {
2+
linkTemplateId: string;
3+
name: string;
4+
description?: string;
5+
linkType: string;
6+
sourceType: string;
7+
targetType: string;
8+
links?: any;
9+
}
10+
11+
export interface OFSLinkTemplatesData {
12+
totalResults: number;
13+
items: OFSLinkTemplate[];
14+
links?: any;
15+
}
16+
17+
// ...existing code...
18+
// Move OFSLinkTemplatesResponse after OFSResponse
19+
// ...existing code...
20+
// ...existing code...
21+
// ...existing code...
22+
// ...existing code...
23+
// ...existing code...
24+
// ...existing code...
25+
// ...existing code...
26+
// ...existing code...
27+
// Place this after OFSResponse class
128
/*
229
* Copyright © 2022, 2023, Oracle and/or its affiliates.
330
* Licensed under the Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
@@ -43,6 +70,18 @@ export class OFSResponse implements OFSResponseInterface {
4370
}
4471
}
4572

73+
export class OFSLinkTemplatesResponse extends OFSResponse {
74+
data: {
75+
totalResults: number;
76+
items: OFSLinkTemplate[];
77+
links?: any;
78+
} = {
79+
totalResults: 0,
80+
items: [],
81+
links: undefined,
82+
};
83+
}
84+
4685
export interface ListResponse {
4786
totalResults: number;
4887
items: Array<any>;

test/general/core.activities.test.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,8 +541,18 @@ test("Get Linked Activities for Activity", async () => {
541541

542542
test("Get Activity Link Type", async () => {
543543
var aid = 4225599; // sample activity id
544-
var linkedActivityId = 4225600; // sample linked activity id
545-
var linkType = "requires"; // example link type
544+
// Get link templates to use a valid linkType
545+
var linkTemplatesResult = await myProxy.getLinkTemplates();
546+
expect(linkTemplatesResult.status).toBe(200);
547+
expect(linkTemplatesResult.data.items.length).toBeGreaterThan(0);
548+
var linkType = linkTemplatesResult.data.items[0].linkType;
549+
// Get linked activities to use a valid linkedActivityId
550+
var linkedActivitiesResult = await myProxy.getLinkedActivities(aid);
551+
expect(linkedActivitiesResult.status).toBeGreaterThanOrEqual(200);
552+
expect(linkedActivitiesResult.status).toBeLessThan(400);
553+
var linkedActivityId = Array.isArray(linkedActivitiesResult.data.items) && linkedActivitiesResult.data.items.length > 0
554+
? linkedActivitiesResult.data.items[0].activityId
555+
: 4225600; // fallback to sample id if none found
546556
var result = await myProxy.getActivityLinkType(aid, linkedActivityId, linkType);
547557
// API may return 200 with link type info
548558
expect(result.status).toBeGreaterThanOrEqual(200);

test/general/meta.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,3 +302,14 @@ test("Get a list of configured timeslots", async () => {
302302
throw error;
303303
}
304304
});
305+
306+
test("Get Link Templates", async () => {
307+
var result = await myProxy.getLinkTemplates();
308+
expect(result.status).toBe(200);
309+
expect(result.data.items.length).toBeGreaterThan(0);
310+
expect(Array.isArray(result.data.items)).toBe(true);
311+
// Optionally log the first template for inspection
312+
if (result.data.items.length > 0) {
313+
console.log("First Link Template:", result.data.items[0]);
314+
}
315+
});

0 commit comments

Comments
 (0)