Skip to content

Commit 4cf8a8a

Browse files
committed
refactor: sends the expected message to StreamLabs
1 parent 4026ade commit 4cf8a8a

File tree

3 files changed

+38
-14
lines changed

3 files changed

+38
-14
lines changed

src/reactions/gitlab/merge-request-opened.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
import { Config } from '../../config';
22
import { Reaction, ReactionCanHandleOptions, ReactionHandleOptions } from '../github/reaction';
3+
import { MergeRequestPayload } from '../../schemas/gitlab/merge-request-payload';
34

4-
type Payload = any;
5-
6-
export class MergeRequestOpened extends Reaction<Payload> {
7-
getStreamLabsMessage({ payload }: ReactionHandleOptions<Payload>): string {
5+
export class MergeRequestOpened extends Reaction<MergeRequestPayload> {
6+
getStreamLabsMessage({ payload }: ReactionHandleOptions<MergeRequestPayload>): string {
87
return `*${payload.user.username}* just opened a merge request in *${payload.repository.name}*`;
98
}
109

11-
getTwitchChatMessage({ payload }: ReactionHandleOptions<Payload>): string {
10+
getTwitchChatMessage({ payload }: ReactionHandleOptions<MergeRequestPayload>): string {
1211
return `${payload.user.username} just opened a merge request in ${payload.repository.homepage}`;
1312
}
1413

15-
canHandle({ payload, event, config }: ReactionCanHandleOptions<Payload>): boolean {
14+
canHandle({ payload, event, config }: ReactionCanHandleOptions<MergeRequestPayload>): boolean {
1615
return (
1716
event === 'Merge Request Hook' &&
1817
payload.object_attributes.state === 'opened' &&
1918
this.isAllowedByConfig(config, payload)
2019
);
2120
}
2221

23-
private isAllowedByConfig(config: Config | undefined, payload: Payload): boolean {
22+
private isAllowedByConfig(config: Config | undefined, payload: MergeRequestPayload): boolean {
2423
return (
2524
!config ||
2625
!config.IGNORE_PR_OPENED_BY.includes(payload.user.username) ||
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
type url = string;
2+
3+
export interface MergeRequestPayload {
4+
user: {
5+
name: string;
6+
username: string;
7+
avatar_url: url;
8+
};
9+
repository: {
10+
name: string;
11+
url: url;
12+
description: string;
13+
homepage: url;
14+
};
15+
object_attributes: {
16+
state: 'merged' | 'created' | 'updated' | 'closed' | 'opened';
17+
};
18+
}

test/reactions/gitlab/merge-request-opened.spec.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { StreamLabsMock } from '../../__mocks__/StreamLabs';
22
import { TwitchChatMock } from '../../__mocks__/TwitchChat';
33
import { MergeRequestOpened } from '../../../src/reactions/gitlab/merge-request-opened';
44
import { Config } from '../../../src/config';
5+
import { MergeRequestPayload } from '../../../src/schemas/gitlab/merge-request-payload';
56

67
describe('MergeRequestOpened', () => {
78
const twitchChat = new TwitchChatMock();
@@ -19,7 +20,7 @@ describe('MergeRequestOpened', () => {
1920

2021
const result = subject.canHandle({
2122
event: 'Merge Request Hook',
22-
payload: { object_attributes: { state: 'opened' } },
23+
payload: { object_attributes: { state: 'opened' } } as MergeRequestPayload,
2324
});
2425

2526
expect(result).toEqual(true);
@@ -30,7 +31,7 @@ describe('MergeRequestOpened', () => {
3031

3132
const result = subject.canHandle({
3233
event: 'Fork',
33-
payload: { object_attributes: { state: 'opened' } },
34+
payload: { object_attributes: { state: 'opened' } } as MergeRequestPayload,
3435
});
3536

3637
expect(result).toEqual(false);
@@ -41,7 +42,7 @@ describe('MergeRequestOpened', () => {
4142

4243
const result = subject.canHandle({
4344
event: 'Merge Request Hook',
44-
payload: { object_attributes: { state: 'merged' } },
45+
payload: { object_attributes: { state: 'merged' } } as MergeRequestPayload,
4546
});
4647

4748
expect(result).toEqual(false);
@@ -52,7 +53,10 @@ describe('MergeRequestOpened', () => {
5253

5354
const result = subject.canHandle({
5455
event: 'Merge Request Hook',
55-
payload: { object_attributes: { state: 'opened' }, user: { username: 'SantiMA10' } },
56+
payload: {
57+
object_attributes: { state: 'opened' },
58+
user: { username: 'SantiMA10' },
59+
} as MergeRequestPayload,
5660
config: { IGNORE_PR_OPENED_BY: ['SantiMA10'] } as Config,
5761
});
5862

@@ -64,7 +68,10 @@ describe('MergeRequestOpened', () => {
6468

6569
const result = subject.canHandle({
6670
event: 'Merge Request Hook',
67-
payload: { object_attributes: { state: 'opened' }, user: { username: 'SantiMA10' } },
71+
payload: {
72+
object_attributes: { state: 'opened' },
73+
user: { username: 'SantiMA10' },
74+
} as MergeRequestPayload,
6875
config: { IGNORE_PR_OPENED_BY: [] as string[] } as Config,
6976
});
7077

@@ -79,7 +86,7 @@ describe('MergeRequestOpened', () => {
7986
object_attributes: { state: 'opened' },
8087
user: { username: 'SantiMA10' },
8188
repository: { homepage: 'https://gitlab.com/streamlabs/webhook' },
82-
};
89+
} as MergeRequestPayload;
8390

8491
const { twitchChat: response } = await subject.handle({ payload });
8592

@@ -94,7 +101,7 @@ describe('MergeRequestOpened', () => {
94101
const payload = {
95102
user: { username: 'SantiMA10' },
96103
repository: { name: 'streamdevs/webhook' },
97-
};
104+
} as MergeRequestPayload;
98105

99106
const { streamlabs: response } = await subject.handle({ payload });
100107

0 commit comments

Comments
 (0)