All files / libs/tools/plugin/src/executors/check-qa-tickets executor.ts

0% Statements 0/35
0% Branches 0/1
0% Functions 0/1
0% Lines 0/35

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                                                                       
import { type PromiseExecutor } from '@nx/devkit';

import { assert } from '@amalia/ext/typescript';
import { makeGitlabClient } from '@amalia/vendors/gitlab';

import { debug } from './debug';
import { type GitLabQaTickesTrackerExecutorSchema } from './types';

const runExecutor: PromiseExecutor<GitLabQaTickesTrackerExecutorSchema> = async (
  { token = '', projectId = '' },
  { isVerbose = false },
) => {
  debug.enabled ||= isVerbose;

  assert(token, 'token is required');
  assert(projectId, 'projectId is required');

  const gitlabClient = makeGitlabClient({
    token,
    camelize: false,
  });

  const issuesInQA = await gitlabClient.Issues.all({ projectId, labels: 'WF::QA To Do', state: 'opened' });

  debug(`Found ${issuesInQA.length} issues in QA To Do`);
  issuesInQA.forEach((issue) => {
    debug(`Issue: ${issue.title} => ${issue.web_url}`);
  });

  return {
    success: issuesInQA.length === 0,
  };
};

export default runExecutor;