Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/richytong/a-sert
☑ functional assertions
https://github.com/richytong/a-sert
Last synced: about 1 month ago
JSON representation
☑ functional assertions
- Host: GitHub
- URL: https://github.com/richytong/a-sert
- Owner: richytong
- License: isc
- Created: 2020-02-25T22:37:53.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-16T17:55:45.000Z (over 4 years ago)
- Last Synced: 2024-11-09T05:46:11.143Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 22.5 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# a-sert
☑ functional assertions## Why?
- I like functional programming
- I never use `assert.equal`
- I hardly test for internal reference equality
- `assert` methods are too long to type## Methods
`a.eq` - takes values or functions that transform the input
then checks for strict or deep equality of their computed values`a.eq.sync` - same as above but all functions must be sync
`a.err` - checks that a provided function throws or rejects
a provided error`a.err.sync` - same as above but provided function must be sync
## Examples
Basic usage
```javascript
const a = require('a-sert')a.eq(1, x => x.a, x => x.b - 1)({ a: 1, b: 2 })
// => ({ a: 1 }, { b: 2 })a.eq(1, x => x.a)({ a: 2 })
// throws AssertionError('2 !== 1')a.eq(x => x, { a: 1 })({ a: 1 })
// => ({ a: 1 })a.eq(x => x, { a: 1 })({ a: 2 })
// throws AssertionError('{"a":1} !deepEqual {"a":2}')a.err(
() => { throw new TypeError('hey') },
new TypeError('hey'),
)('yo')
// => 'yo'a.err(
x => x,
new RangeError('hey'),
)('yo')
// => throws AssertionError('did not throw RangeError: hey')
```A test in mocha
```javascript
const _ = require('rubico')
const a = require('a-sert')
const connectorDynamo = require('.')describe('connectorDynamo', () => {
it('instantiates a DynamoDB client', () => _.flow(
connectorDynamo,
a.eq('localhost', _.get('client.endpoint.hostname')),
a.eq('http:', _.get('client.endpoint.protocol')),
a.eq(8000, _.get('client.endpoint.port')),
)({
endpoint: 'http://localhost:8000',
credentials: {
access_key_id: 'hey',
secret_access_key: 'secret',
},
region: 'us-east-1',
}))
})
```