diff --git a/src/matchers/toBeArrayOfSize.js b/src/matchers/toBeArrayOfSize.js new file mode 100644 index 00000000..2a56e677 --- /dev/null +++ b/src/matchers/toBeArrayOfSize.js @@ -0,0 +1,28 @@ +import { determinePropertyMessage } from '../utils'; + +export function toBeArrayOfSize(actual, expected) { + const { printExpected, printReceived, matcherHint } = this.utils; + + const passMessage = () => + `${matcherHint('.not.toBeArrayOfSize')} + + Expected value to not be an array of size: + ${printExpected(expected)} + Received: + value: ${printReceived(actual)} + length: ${printReceived(determinePropertyMessage(actual, 'length'))}`; + + const failMessage = () => + `${matcherHint('.toBeArrayOfSize')} + + Expected value to be an array of size: + ${printExpected(expected)} + Received: + value: ${printReceived(actual)} + length: ${printReceived(determinePropertyMessage(actual, 'length'))}`; + + const pass = Array.isArray(actual) && actual.length === expected; + const message = pass ? passMessage : failMessage; + + return { pass, message }; +} diff --git a/src/matchers/toBeArrayOfSize/index.js b/src/matchers/toBeArrayOfSize/index.js deleted file mode 100644 index 1f991d3a..00000000 --- a/src/matchers/toBeArrayOfSize/index.js +++ /dev/null @@ -1,30 +0,0 @@ -import { determinePropertyMessage } from '../../utils'; - -import predicate from './predicate'; - -const passMessage = (utils, actual, expected) => () => - `${utils.matcherHint('.not.toBeArrayOfSize')} - -Expected value to not be an array of size: - ${utils.printExpected(expected)} -Received: - value: ${utils.printReceived(actual)} - length: ${utils.printReceived(determinePropertyMessage(actual, 'length'))}`; - -const failMessage = (utils, actual, expected) => () => - `${utils.matcherHint('.toBeArrayOfSize')} - -Expected value to be an array of size: - ${utils.printExpected(expected)} -Received: - value: ${utils.printReceived(actual)} - length: ${utils.printReceived(determinePropertyMessage(actual, 'length'))}`; - -export function toBeArrayOfSize(actual, expected) { - const pass = predicate(actual, expected); - if (pass) { - return { pass: true, message: passMessage(this.utils, actual, expected) }; - } - - return { pass: false, message: failMessage(this.utils, actual, expected) }; -} diff --git a/src/matchers/toBeArrayOfSize/predicate.js b/src/matchers/toBeArrayOfSize/predicate.js deleted file mode 100644 index 615a71bf..00000000 --- a/src/matchers/toBeArrayOfSize/predicate.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @param actual - * @param size - * @returns {boolean} - */ -export default (actual, size) => Array.isArray(actual) && actual.length === size; diff --git a/src/matchers/toBeArrayOfSize/predicate.test.js b/src/matchers/toBeArrayOfSize/predicate.test.js deleted file mode 100644 index e392bae3..00000000 --- a/src/matchers/toBeArrayOfSize/predicate.test.js +++ /dev/null @@ -1,21 +0,0 @@ -import predicate from './predicate'; - -describe('toBeArrayOfSize Predicate', () => { - const size = 5; - test(`returns true when given an array of size ${size}`, () => { - expect(predicate([1, 2, 3, 4, 5], size)).toBe(true); - }); - - test.each([ - [[false], 0], - [[''], -1], - [[0], 6], - [[{}], 6], - [[() => {}], 6], - [[undefined], 6], - [[null], 6], - [[NaN], 6], - ])('returns false when given: %s', (array, size) => { - expect(predicate(array, size)).toBe(false); - }); -}); diff --git a/src/matchers/toBeArrayOfSize/__snapshots__/index.test.js.snap b/test/matchers/__snapshots__/toBeArrayOfSize.test.js.snap similarity index 56% rename from src/matchers/toBeArrayOfSize/__snapshots__/index.test.js.snap rename to test/matchers/__snapshots__/toBeArrayOfSize.test.js.snap index 5b535f52..cad28c67 100644 --- a/src/matchers/toBeArrayOfSize/__snapshots__/index.test.js.snap +++ b/test/matchers/__snapshots__/toBeArrayOfSize.test.js.snap @@ -2,130 +2,130 @@ exports[`.not.toBeArrayOfSize fails when given an array of size 0 1`] = ` "expect(received).not.toBeArrayOfSize(expected) - -Expected value to not be an array of size: - 0 -Received: - value: [] - length: 0" + + Expected value to not be an array of size: + 0 + Received: + value: [] + length: 0" `; exports[`.toBeArrayOfSize fails when given neither a parameter nor an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - undefined -Received: - value: [] - length: 0" + + Expected value to be an array of size: + undefined + Received: + value: [] + length: 0" `; exports[`.toBeArrayOfSize fails when given type of () => {} which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: [Function anonymous] - length: 0" + + Expected value to be an array of size: + 1 + Received: + value: [Function anonymous] + length: 0" `; exports[`.toBeArrayOfSize fails when given type of {} which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: {} - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: {} + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when given type of 0 which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: 0 - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: 0 + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when given type of NaN which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: NaN - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: NaN + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when given type of false which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: false - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: false + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when given type of null which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: null - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: null + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when given type of true which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: true - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: true + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when given type of undefined which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: undefined - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: undefined + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when given type which is not an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 1 -Received: - value: false - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 1 + Received: + value: false + length: \\"Not Accessible\\"" `; exports[`.toBeArrayOfSize fails when not given a parameter 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - undefined -Received: - value: [1] - length: 1" + + Expected value to be an array of size: + undefined + Received: + value: [1] + length: 1" `; exports[`.toBeArrayOfSize fails when not given an array 1`] = ` "expect(received).toBeArrayOfSize(expected) - -Expected value to be an array of size: - 5 -Received: - value: undefined - length: \\"Not Accessible\\"" + + Expected value to be an array of size: + 5 + Received: + value: undefined + length: \\"Not Accessible\\"" `; diff --git a/src/matchers/toBeArrayOfSize/index.test.js b/test/matchers/toBeArrayOfSize.test.js similarity index 96% rename from src/matchers/toBeArrayOfSize/index.test.js rename to test/matchers/toBeArrayOfSize.test.js index 14719760..db37c408 100644 --- a/src/matchers/toBeArrayOfSize/index.test.js +++ b/test/matchers/toBeArrayOfSize.test.js @@ -1,4 +1,4 @@ -import * as matcher from './'; +import * as matcher from 'src/matchers/toBeArrayOfSize'; expect.extend(matcher);