From 3af9a47a26bb0bc79a015879f601567753d61ba2 Mon Sep 17 00:00:00 2001 From: Josh Dales Date: Sat, 18 Mar 2023 16:23:17 -0400 Subject: [PATCH] Add unit tests for toChangedFilesMatchConfig --- __tests__/changedFiles.test.ts | 93 +++++++++++++++++++++++++++++----- 1 file changed, 81 insertions(+), 12 deletions(-) diff --git a/__tests__/changedFiles.test.ts b/__tests__/changedFiles.test.ts index d0ecd57b..a89ad7a4 100644 --- a/__tests__/changedFiles.test.ts +++ b/__tests__/changedFiles.test.ts @@ -1,5 +1,6 @@ import * as github from '@actions/github'; import { + ChangedFilesMatchConfig, checkAll, checkAny, toChangedFilesMatchConfig @@ -28,42 +29,110 @@ describe(checkAny, () => { }); }); -describe(toChangedFilesMatchConfig, () => { +describe('toChangedFilesMatchConfig', () => { describe(`when there is no 'changed-files' key in the config`, () => { - it.todo('returns an empty object'); + const config = {'head-branch': 'test'}; + + it('returns an empty object', () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({}); + }); + }); + + describe(`when both 'any' and 'all' keys are present`, () => { + const config = {'changed-files': [{all: 'testing'}, {any: 'testing'}]}; + + it('sets both values in the config object', () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({ + changedFiles: { + any: ['testing'], + all: ['testing'] + } + }); + }); }); describe(`when there is a 'changed-files' key in the config`, () => { describe(`and it contains a 'all' key`, () => { describe('with a value of a string', () => { - it.todo( - 'sets the value to be an array of strings in the config object' - ); + const config = {'changed-files': [{all: 'testing'}]}; + + it('sets the value to be an array of strings in the config object', () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({ + changedFiles: { + all: ['testing'] + } + }); + }); }); describe('with a value of an array of strings', () => { - it.todo('sets the value in the config object'); + const config = {'changed-files': [{all: ['testing']}]}; + + it('sets the value in the config object', () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({ + changedFiles: { + all: ['testing'] + } + }); + }); }); }); describe(`and it contains a 'any' key`, () => { describe('with a value of a string', () => { - it.todo( - 'sets the value to be an array of strings on the config object' - ); + const config = {'changed-files': [{any: 'testing'}]}; + + it('sets the value to be an array of strings on the config object', () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({ + changedFiles: { + any: ['testing'] + } + }); + }); }); describe('with a value of an array of strings', () => { - it.todo('sets the value in the config object'); + const config = {'changed-files': [{any: ['testing']}]}; + + it('sets the value in the config object', () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({ + changedFiles: { + any: ['testing'] + } + }); + }); }); }); describe('and the value is a string', () => { - it.todo(`sets the string as an array under an 'any' key`); + const config = {'changed-files': 'testing'}; + + it(`sets the string as an array under an 'any' key`, () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({ + changedFiles: { + any: ['testing'] + } + }); + }); }); describe('and the value is an array of strings', () => { - it.todo(`sets the array under an 'any' key`); + const config = {'changed-files': ['testing']}; + it(`sets the array under an 'any' key`, () => { + const result = toChangedFilesMatchConfig(config); + expect(result).toMatchObject({ + changedFiles: { + any: ['testing'] + } + }); + }); }); }); });