Skip to content

Commit

Permalink
test: convert item input tests to ESM
Browse files Browse the repository at this point in the history
  • Loading branch information
rossiam committed Dec 7, 2023
1 parent 3d8a52b commit b7f0221
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 29 deletions.
1 change: 1 addition & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const config: JestConfigWithTsJest = {
// TODO: put this back when all unit tests are converted
// '**/__tests__/**/*.test.ts',
'**/__tests__/lib/*.test.ts',
'**/__tests__/lib/item-input/*.test.ts',
],
setupFilesAfterEnv: ['jest-extended/all'],
collectCoverageFrom: ['src/**/*.ts'],
Expand Down
27 changes: 19 additions & 8 deletions src/__tests__/lib/item-input/array.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { jest } from '@jest/globals'

import inquirer from 'inquirer'

import {
Expand All @@ -13,20 +15,31 @@ import {
maxItemValueLength,
uneditable,
} from '../../../lib/item-input/defs.js'
import { arrayDef, checkboxDef } from '../../../lib/item-input/array.js'
import { clipToMaximum, stringFromUnknown } from '../../../lib/util.js'


jest.mock('inquirer')
jest.mock('../../../lib/util.js')

const promptMock = jest.mocked(inquirer.prompt)
const promptMock: jest.Mock<typeof inquirer.prompt> = jest.fn()
jest.unstable_mockModule('inquirer', () => ({
default: {
prompt: promptMock,
Separator: inquirer.Separator,
},
}))
const clipToMaximumMock: jest.Mock<typeof clipToMaximum> = jest.fn()
clipToMaximumMock.mockReturnValue('clipped')
const stringFromUnknownMock: jest.Mock<typeof stringFromUnknown> = jest.fn()
jest.unstable_mockModule('../../../lib/util.js', () => ({
clipToMaximum: clipToMaximumMock,
stringFromUnknown: stringFromUnknownMock,
}))

// ignore console output
jest.spyOn(process.stdout, 'write').mockImplementation(() => true)
const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => true)

const clipToMaximumMock = jest.mocked(clipToMaximum).mockReturnValue('clipped')

const { arrayDef, checkboxDef } = await import('../../../lib/item-input/array.js')


describe('arrayDef', () => {
const itemBuildFromUserInputMock = jest.fn()
Expand Down Expand Up @@ -616,8 +629,6 @@ describe('checkboxDef', () => {
})

describe('summarizeForEdit', () => {
const stringFromUnknownMock = jest.mocked(stringFromUnknown)

it('returns empty clipped string with no items', async () => {
expect(simpleDef.summarizeForEdit([])).toBe('clipped')

Expand Down
47 changes: 29 additions & 18 deletions src/__tests__/lib/item-input/misc.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,35 @@
import { jest } from '@jest/globals'

import inquirer from 'inquirer'

import { InputDefinition, cancelOption, uneditable } from '../../../lib/item-input/defs.js'
import {
askForBoolean,
askForString,
askForOptionalString,
ValidateFunction,
} from '../../../lib/user-query.js'
import { stringFromUnknown } from '../../../lib/util.js'


const promptMock: jest.Mock<typeof inquirer.prompt> = jest.fn()
jest.unstable_mockModule('inquirer', () => ({
default: {
prompt: promptMock,
Separator: inquirer.Separator,
},
}))
const askForBooleanMock: jest.Mock<typeof askForBoolean> = jest.fn()
const askForStringMock: jest.Mock<typeof askForString> = jest.fn()
const askForOptionalStringMock: jest.Mock<typeof askForOptionalString> = jest.fn()
jest.unstable_mockModule('../../../lib/user-query.js', () => ({
askForBoolean: askForBooleanMock,
askForString: askForStringMock,
askForOptionalString: askForOptionalStringMock,
}))


const {
booleanDef,
computedDef,
defaultWithContextFn,
Expand All @@ -11,20 +39,8 @@ import {
staticDef,
stringDef,
validateWithContextFn,
} from '../../../lib/item-input/misc.js'
import {
askForBoolean,
askForString,
askForOptionalString,
ValidateFunction,
} from '../../../lib/user-query.js'
import { stringFromUnknown } from '../../../lib/util.js'


jest.mock('inquirer')
jest.mock('../../../lib/user-query.js')
} = await import('../../../lib/item-input/misc.js')

const promptMock = jest.mocked(inquirer.prompt)

describe('validateWithContext', () => {
it('returns undefined when not given a validation function to convert', () => {
Expand Down Expand Up @@ -72,8 +88,6 @@ describe('defaultWithContextFn', () => {
})

describe('optionalStringDef', () => {
const askForOptionalStringMock = jest.mocked(askForOptionalString)

describe('without validation', () => {
const def = optionalStringDef('String Def')

Expand Down Expand Up @@ -147,8 +161,6 @@ describe('optionalStringDef', () => {
})

describe('stringDef', () => {
const askForStringMock = jest.mocked(askForString)

describe('without validation', () => {
const def = stringDef('String Def')

Expand Down Expand Up @@ -220,7 +232,6 @@ describe('stringDef', () => {
})

describe('booleanDef', () => {
const askForBooleanMock = jest.mocked(askForBoolean)
const def = booleanDef('Boolean Def')

test('name', async () => {
Expand Down
17 changes: 14 additions & 3 deletions src/__tests__/lib/item-input/object.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
import { jest } from '@jest/globals'

import inquirer from 'inquirer'

import { cancelAction, finishAction, helpAction, InputDefinition, inquirerPageSize } from '../../../lib/item-input/defs'
import { objectDef, ObjectItemTypeData } from '../../../lib/item-input/object.js'
import { ObjectItemTypeData } from '../../../lib/item-input/object.js'


const promptMock: jest.Mock<typeof inquirer.prompt> = jest.fn()
jest.unstable_mockModule('inquirer', () => ({
default: {
prompt: promptMock,
Separator: inquirer.Separator,
},
}))


const { objectDef } = await import('../../../lib/item-input/object.js')

jest.mock('inquirer')

type InputtedThing = {
prop1: string
Expand All @@ -14,7 +26,6 @@ type InputtedThing = {
}
describe('objectDef', () => {
const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => true)
const promptMock = jest.mocked(inquirer.prompt)

const input1BuildFromUserInputMock = jest.fn()
const input1SummarizeForEditMock = jest.fn()
Expand Down

0 comments on commit b7f0221

Please sign in to comment.