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

Create jest structure #107

Merged
merged 22 commits into from Oct 30, 2019
Merged

Create jest structure #107

merged 22 commits into from Oct 30, 2019

Conversation

talyssonoc
Copy link
Owner

@talyssonoc talyssonoc commented Oct 29, 2019

The intention of this PR is to create a library of custom matchers for Jest that can be used with Structure.

Four matchers were created: toBeValidStructure, toBeInvalidStructure, toHaveInvalidAttribute and toHaveInvalidAttributes.

The reason to have structure in the names of the first two ones is to not have a too generic name that could clash with other custom matcher libraries.

The first two matchers are used when we don't care about what attribute is valid or invalid, we just want to check if the whole structure is valid.

The last two ones are focused on invalidity, where the first one checks the invalidity of a single attribute (optionally passing the error messages), and the second one checks the invalidity of multiple attributes (also optionally passing the error messages).

More details about each of them can be found in the README.me file.

@talyssonoc talyssonoc changed the title [WIP] Create jest structure Create jest structure Oct 30, 2019
@talyssonoc talyssonoc merged commit 6bbc2da into structure-2 Oct 30, 2019
@talyssonoc talyssonoc deleted the create-jest-structure branch October 30, 2019 20:12
talyssonoc added a commit that referenced this pull request Mar 31, 2020
* Bump major to alpha

* Move Node version to 10

* Replace Object.assign with spread

* Replace every var with let or const

* Migrate tests that run on Node to use Jest

* Update Node version on Travis

* Base on Node 8 instead of 10

* Change linter to accept jest tests

* Update joi without considering cases where lazy schema is needed

* Handle dynamic types validations with link + shared API

* Begin to refactor to a new internal structure

* Rename descriptors concept to definitions

* Implement initialization

* Implement coercion for non-array types

* Adjust tests to coercion without considering nested

* Implement coercion for array types

* Allow to subclass structures and inherit attributes

* Implement strict mode (missing validation)

* Implement validation to new core (#102)

* Implement validation

* Implement serialization (#101)

* Implement validation for nested types

* Implement clone to the new core (#103)

* Implement clone to the new core

* Make linter happy

* Increase coverage

* Refactors Descriptors to be a function instead of a class

* Improve function naming for better debugging

* Ensure that when reusing an attribute, it uses the new schema

* Reformat according to prettier

* Upgrade browser build (#105)

* Webpack setup and begin to setup tests

* Add electron to dev dependencies

* Improve Webpack output during tests

* Add browser tests to Travis

* Remove unecessary dependencies

* Update readme about browser and support

* Separate travis lifecycles

* Attempt to avoid hanging electron test

* Update coveralls

* Move to lerna (#106)

* Move current code to packages

* Share prettier config

* Add coveralls to root package

* Fix Coveralls script

* Add coverage to root package

* Create jest structure (#107)

* Begin to implement assertions

* Migrate boolean validation assertions to use jest-structure

* Assert no expected for valid/invalid matchers

* Assert attribute path is passed

* Add package to automatically add assertions to jest

* Begin to write tests

* Add tests for validating error messages

* Reorganize and begin to write toHaveInvalidAttributes

* Implement toHaveInvalidAttributes and cover with tests

* Rename auto.js to extend-expect.js

* Refactor checking of path presence and usage hint

* Refactor and remove hint from validity check of toHaveInvalidAttributes

* Remove hint from validity check of toHaveInvalidAttribute

* Refactor checking of attribute validity

* Refactor usage error and remove hint for non-usage-related errors

* Replace usage of assertValid with expect().toBeValid()

* Replace validitationMatchers with jest-structure in array specs

* Migrate whole structure spec to use jest-structure

* Rename validity assertions to contain 'structure' in the name

* Fix coverage script

* Add tests for when using arrayContaining with jest-structure

* Add readme

* Allow defaulting when null and not nullable (#108)

* Fallback to default when value is null and not nullable

* Update changelog

* Update docs about nullable attributes

* Refactor name of dynamic default instance variable

* Update changelog (#109)

* Allow to pass custom identifier for dynamic types (#111)

* Allow to pass custom identifier for dynamic types

* Improve documentation wording

* Improve changelog wording

* Apply suggestions from code review

Co-Authored-By: Leonardo Negreiros de Oliveira <negreirosleo12@gmail.com>

* Update docs/schema-concept/circular-references-and-dynamic-types.md

Co-Authored-By: Leonardo Negreiros de Oliveira <negreirosleo12@gmail.com>

* Allow to declare custom setter and getter (#112)

* Allow to use custom setters and getters to attributes

* Add docs about custom getters and setters

* Allow to inherit custom accessors

* reduce function complexity

* Add docs about custom accessors and inheritance

* update joi (#114)

* Add alpha patch (#115)

* Make versioning consistent (#116)

* Update dependencies node and generate build (#117)

* Update dependencies and Node

* Generate build

* Remove Node 8 from Travis build

* Make linter happy

* Add missing symlinks (#118)

* Invert symlinks (#119)

* Invert symlinks

* Bump alpha patch

* Gix Gitbook refs (#120)

* Gix Gitbook refs

* New organization

* Remove introduction duplicate link

* Prepare to release new alpha

* Gitbook testing docs (#124)

* Add testing to docs and prettify md files

* Fix formatting

* Publish only src folder for jest-structure (#125)

* Update Joi links (#126)

* Allow to disable coercion (#127)

* Update paths and messages of errors in docs (#128)

* Improve docs (#129)

* Improve docs

* Improve verbiage

* Update build

* Bump version to 2.0.0

* Point links to master docs

* Update changelog and add migration guide

* Point CodeClimate to use eslint 6

* Use normal quotes where needed

Co-authored-by: Leonardo Negreiros de Oliveira <negreirosleo12@gmail.com>
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