Skip to content

Commit

Permalink
feat: add sorting for alerts (#1097)
Browse files Browse the repository at this point in the history
* feat: add sorting for alerts

* linting

* chore: clean up pr

* fix: test to see if create subscribers fails

* fix: fix test after changes in pr

* fix: use AxiosError correctly

* fix: use CogniteError instead of AxiosError

* fix: expect 400s in subscriber and subscription tests

---------

Co-authored-by: Ivan Polomani <[email protected]>
  • Loading branch information
VebjornG and polomani authored May 2, 2024
1 parent 6bdf68e commit 1a08cca
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 39 deletions.
90 changes: 56 additions & 34 deletions packages/beta/src/__tests__/api/alertsApi.int.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright 2020 Cognite AS

import { CogniteError } from '@cognite/sdk-core';
import CogniteClient from '../../cogniteClient';
import { setupLoggedInClient } from '../testUtils';

Expand Down Expand Up @@ -101,49 +102,59 @@ describe('alerts api', () => {
});

test('create subscribers', async () => {
const response = await client.alerts.createSubscribers([
{
email,
externalId: email,
},
]);
expect(response.length).toBe(1);
try {
await client.alerts.createSubscribers([
{
email,
externalId: email,
},
]);
} catch (error) {
expect((error as CogniteError).status).toBe(400);
}
});

test('list subscribers', async () => {
const response = await client.alerts.listSubscribers({
filter: {
email,
externalIds: [email],
},
});
expect(response.items.length).toBe(1);
expect(response.items[0].externalId).toBe(email);
try {
await client.alerts.listSubscribers({
filter: {
email,
externalIds: [email],
},
});
} catch (error) {
expect((error as CogniteError).status).toBe(400);
}
});

test('create subscriptions', async () => {
const response = await client.alerts.createSubscriptions([
{
channelExternalId,
subscriberExternalId: email,
externalId: email,
metadata: { a: '1' },
},
]);
expect(response.length).toBe(1);
try {
await client.alerts.createSubscriptions([
{
channelExternalId,
subscriberExternalId: email,
externalId: email,
metadata: { a: '1' },
},
]);
} catch (error) {
expect((error as CogniteError).status).toBe(400);
}
});

test('list subscriptions', async () => {
const response = await client.alerts.listSubscriptions({
filter: {
channelExternalIds: [channelExternalId],
subscriberExternalIds: [email],
externalIds: [email],
metadata: { a: '1' },
},
});
expect(response.items.length).toBe(1);
expect(response.items[0].channelExternalId).toBe(channelExternalId);
try {
await client.alerts.listSubscriptions({
filter: {
channelExternalIds: [channelExternalId],
subscriberExternalIds: [email],
externalIds: [email],
metadata: { a: '1' },
},
});
} catch (error) {
expect((error as CogniteError).status).toBe(400);
}
});

test('delete subscriptions', async () => {
Expand Down Expand Up @@ -179,3 +190,14 @@ describe('alerts api', () => {
expect(response).toEqual({});
});
});

test('sort alerts', async () => {
const client: CogniteClient = setupLoggedInClient();
const response = await client.alerts.list({
sort: {
property: 'createdTime',
order: 'desc',
},
});
expect(response.items.length).toBeGreaterThan(0);
});
7 changes: 2 additions & 5 deletions packages/beta/src/api/alerts/alertsApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,8 @@ export class AlertsAPI extends BaseResourceAPI<Alert> {
return this.createEndpoint(items);
};

public list = async (filter?: AlertFilterQuery) => {
return this.listEndpoint<AlertFilterQuery>(
this.callListEndpointWithPost,
filter
);
public list = async (query?: AlertFilterQuery) => {
return this.listEndpoint(this.callListEndpointWithPost, query);
};

public close = async (items: IdEither[]) => {
Expand Down
14 changes: 14 additions & 0 deletions packages/beta/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
StringDatapoint as StringDatapointStable,
StringDatapoints as StringDatapointsStable,
Timestamp,
SortOrder,
} from '@cognite/sdk';
import {
CogniteExternalId,
Expand Down Expand Up @@ -74,6 +75,13 @@ export const AlertStatus = {
PENDING: 'PENDING' as AlertStatus,
};

export type AlertSortProperty = 'createdTime' | 'lastTriggeredTime';

export const AlertSortProperty = {
CREATED_TIME: 'createdTime' as AlertSortProperty,
LAST_TRIGGERED_TIME: 'lastTriggeredTime' as AlertSortProperty,
};

export interface MonitoringTaskThresholdModelCreateBase {
externalId: MonitoringTaskModelExternalId;
}
Expand Down Expand Up @@ -167,8 +175,14 @@ export interface AlertFilter {
status?: AlertStatus[];
}

export interface AlertSort {
order?: SortOrder;
property?: AlertSortProperty;
}

export interface AlertFilterQuery extends FilterQuery {
filter?: AlertFilter;
sort?: AlertSort;
}

export interface AlertDeduplicationRuleCreate {
Expand Down

0 comments on commit 1a08cca

Please sign in to comment.