Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added tests for utils functions isSelectable and mergeModifiers #9

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

CatsOnFilm
Copy link

This change addresses the need by:

  • add unit tests for isSelectable predicate utility
    • dates within range (inclusive of range dates) -> true
    • dates outside range dates -> false
  • add unit tests for mergeModifiers utility
    • documenting behaviour of merging distinct lists
    • documenting behaviour of lists containing overlapping keys

* ...

This change addresses the need by:

- add unit tests for `isSelectable` predicate utility
  - dates within range (inclusive of range dates) -> true
  - dates outside range dates -> false
- add unit tests for `mergeModifiers` utility
  - documenting behaviour of merging distinct lists
  - documenting behaviour of lists containing same keys
Copy link
Owner

@hernansartorio hernansartorio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for this! I had been meaning to add these but had to leave them for later.

I left some minor comments, but this is an awesome starting point :)

@@ -0,0 +1,77 @@
// import React from 'react'
// import { format } from 'date-fns'
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove these comments.

expect(isSelectable(minimumDate, { minimumDate, maximumDate })).toBe(true)
expect(isSelectable(maximumDate, { minimumDate, maximumDate })).toBe(true)
})
it('should return `false` for a date that is before `minimumDate` or after `maximumDate`', () => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purely stylistic (I should add an eslint rule for this) but could you leave a blank line between the end of a block and the start of a new one? In the same way that you do within the mergeModifiers tests.

expect(mergeModifiers(mockBaseModifiers)).toEqual(mockBaseModifiers)
})

it('should (in effect) merge a provided modifier into the `modifiers` object if the key is not already present', () => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does "in effect" mean?

})
})

it('should check both `baseModifier` and `newModifier` of the same name', () => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a better way to test this one, without worrying about what values are passed, might be using toHaveBeenCalled, something like:

const modifierA = jest.fn()
const modifierB = jest.fn()

const baseModifiers = { test: modifierA }
const newModifiers = { test: modifierB }
const mergedModfiers = mergeModifiers(baseModifiers, newModifiers)

mergedModfiers.test()

expect(modifierA).toHaveBeenCalled()
expect(modifierB).toHaveBeenCalled()

expect(mergedModfiers.test(NOT_A_NUMBER_OVER_1_OR_A_STRING)).toBe(false)
})

it('should prefer a `baseModifier` with the same name as a `newModifier`', () => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly, this one could be like this:

const modifierA = jest.fn(() => true)
const modifierB = jest.fn()

const baseModifiers = { test: modifierA }
const newModifiers = { test: modifierB }
const mergedModfiers = mergeModifiers(baseModifiers, newModifiers)

mergedModfiers.test()

expect(modifierA).toHaveBeenCalled()
expect(modifierB).not.toHaveBeenCalled()

expect(mergedModfiers.today('which one?')).toBe('baseModifier')
})

it('should assign the `newModifier` if no `baseModifier` of the same name is provided', () => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't what's tested here already covered by the should (in effect) merge a provided modifier into the 'modifiers' object if the key is not already present test?

vibin-230 pushed a commit to vibin-230/react-nice-dates that referenced this pull request Feb 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants