@dxdeveloperexperience/hygie
Version:
Hygie is an easy-to-use Open-Source REST API allowing you to interact with GIT events. This NestJS API expose a set of customizable rules to automate your project's life cycle.
85 lines (76 loc) • 3.32 kB
text/typescript
import { logger } from '../logger/logger.service';
import { PullRequestTitleRule } from '.';
import { Webhook } from '../webhook/webhook';
import { TestingModule, Test } from '@nestjs/testing';
import { GithubService } from '../github/github.service';
import { GitlabService } from '../gitlab/gitlab.service';
import { HttpService } from '@nestjs/common';
import {
MockHttpService,
MockGitlabService,
MockGithubService,
MockAnalytics,
} from '../__mocks__/mocks';
import { GitEventEnum } from '../webhook/utils.enum';
import { IssueTitleRule } from './issueTitle.rule';
describe('Rule', () => {
let app: TestingModule;
let githubService: GithubService;
let gitlabService: GitlabService;
beforeAll(async () => {
app = await Test.createTestingModule({
providers: [
{ provide: HttpService, useClass: MockHttpService },
{ provide: GitlabService, useClass: MockGitlabService },
{ provide: GithubService, useClass: MockGithubService },
],
}).compile();
githubService = app.get(GithubService);
gitlabService = app.get(GitlabService);
});
beforeEach(() => {
jest.clearAllMocks();
});
describe('displayRule', () => {
it('should call logger.info 8 times', () => {
logger.info = jest.fn().mockName('logger.info');
const pullRequestTitle = new PullRequestTitleRule(MockAnalytics);
pullRequestTitle.options = {
regexp: '(WIP|FIX):\\s.*',
};
pullRequestTitle.displayRule();
expect(logger.info).toHaveBeenNthCalledWith(1, 'Display rule');
expect(logger.info).toHaveBeenNthCalledWith(2, 'name:pullRequestTitle');
expect(logger.info).toHaveBeenNthCalledWith(3, 'enabled:true');
expect(logger.info).toHaveBeenNthCalledWith(4, 'events:NewPR');
expect(logger.info).toHaveBeenNthCalledWith(5, 'onSuccess:undefined');
expect(logger.info).toHaveBeenNthCalledWith(6, 'onError:undefined');
expect(logger.info).toHaveBeenNthCalledWith(7, 'onBoth:undefined');
expect(logger.info).toHaveBeenNthCalledWith(8, 'options:[object Object]');
});
});
describe('isEnabled', () => {
it('should return true', () => {
const webhook: Webhook = new Webhook(gitlabService, githubService);
webhook.gitEvent = GitEventEnum.NewIssue;
const issueTitleRule: IssueTitleRule = new IssueTitleRule(MockAnalytics);
// By default, IssueTitleRule.events = NewIssue
expect(issueTitleRule.isEnabled(webhook, issueTitleRule)).toBe(true);
});
it('should return false', () => {
const webhook: Webhook = new Webhook(gitlabService, githubService);
webhook.gitEvent = GitEventEnum.NewBranch;
const issueTitleRule: IssueTitleRule = new IssueTitleRule(MockAnalytics);
// By default, IssueTitleRule.events = NewIssue
expect(issueTitleRule.isEnabled(webhook, issueTitleRule)).toBe(false);
});
it('should return false', () => {
const webhook: Webhook = new Webhook(gitlabService, githubService);
webhook.gitEvent = GitEventEnum.NewIssue;
const issueTitleRule: IssueTitleRule = new IssueTitleRule(MockAnalytics);
// By default, IssueTitleRule.events = NewIssue
issueTitleRule.enabled = false;
expect(issueTitleRule.isEnabled(webhook, issueTitleRule)).toBe(false);
});
});
});