Skip to content

Commit

Permalink
good start
Browse files Browse the repository at this point in the history
  • Loading branch information
j-catania committed Nov 24, 2023
1 parent 175eb06 commit b1a92e2
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 15 deletions.
31 changes: 19 additions & 12 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": "airbnb-base",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"rules": {
"import/extensions": ["warn", "ignorePackages"]
}
"env": {
"browser": true,
"es2021": true,
"jest": true
},
"extends": "airbnb-base",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"rules": {
"import/extensions": [
"warn",
"ignorePackages",
{
"js": "never"
}
]
}
}
4 changes: 2 additions & 2 deletions .idea/jsLibraryMappings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"type": "module",
"scripts": {
"start": "node src/index.js",
"test": "echo \"Error: no test specified\" && exit 1",
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
"lint": "eslint src"
},
"engines": {
Expand Down
69 changes: 69 additions & 0 deletions src/services/notifier/NotifierService.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// test all NotifierService methods
import { jest } from '@jest/globals';
import NotifierService from './NotifierService.js';

const mockNotify = jest.fn();
const mockHello = jest.fn();
const mockGoodbye = jest.fn();
jest.unstable_mockModule('./providers/DiscordNotifierProvider', () => ({
hello: mockHello,
goodbye: mockGoodbye,
notify: mockNotify,
}));

describe('NotifierService', () => {
const services = [
{
name: 'test',
notifiers: [
{
type: 'discord',
webhook: '1234',
},
],
},
{
name: 'test2',
notifiers: [
{
type: 'discord',
webhook: '1234',
},
],
},
{
name: 'test3',
notifiers: [
{
type: 'discord',
webhook: '1234',
},
],
},
];

beforeEach(() => {
jest.clearAllMocks();
});

describe('notify', () => {
it('should call notify for each notifier', () => {
NotifierService.notify(services[0], 'UP');
expect(mockNotify).toHaveBeenCalledTimes(1);
});
});

describe('hello', () => {
it('should call hello for each notifier', () => {
NotifierService.hello(services);
expect(mockHello).toHaveBeenCalledTimes(3);
});
});

describe('goodbye', () => {
it('should call goodbye for each notifier', () => {
NotifierService.goodbye(services);
expect(mockGoodbye).toHaveBeenCalledTimes(3);
});
});
});
30 changes: 30 additions & 0 deletions src/services/notifier/providers/DiscordNotifierProvider.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { jest } from '@jest/globals';
import { MessageBuilder, Webhook } from 'discord-webhook-node';
import DiscordNotifierProvider from './DiscordNotifierProvider';

const plop = jest.fn();
jest.unstable_mockModule('discord-webhook-node', () => ({
MessageBuilder,
Webhook,
}));

describe('DiscordNotifierProvider', () => {
beforeEach(() => {
jest.clearAllMocks();
});

it('should notify discord', () => {
DiscordNotifierProvider.notify('name', 'status', { webhook: 'http://plop' });
expect(plop).toHaveBeenCalledTimes(1);
});

it('should say hello to discord', () => {
DiscordNotifierProvider.hello('name', { webhook: 'http://' });
expect(mockSend).toHaveBeenCalledTimes(1);
});

it('should say goodbye to discord', async () => {
await DiscordNotifierProvider.goodbye('name', { webhook: 'http://' });
expect(mockSend).toHaveBeenCalledTimes(1);
});
});

0 comments on commit b1a92e2

Please sign in to comment.