https://github.com/bttmly/sentence
CoffeeScript assertions
https://github.com/bttmly/sentence
Last synced: 3 months ago
JSON representation
CoffeeScript assertions
- Host: GitHub
- URL: https://github.com/bttmly/sentence
- Owner: bttmly
- License: mit
- Created: 2015-03-21T15:18:31.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2015-05-29T03:33:07.000Z (almost 10 years ago)
- Last Synced: 2025-02-08T18:16:57.550Z (3 months ago)
- Language: CoffeeScript
- Homepage:
- Size: 227 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# sentence [](https://travis-ci.org/nickb1080/sentence)
Beautiful assertions for CoffeeScript. See the test file for examples.
Looks like this:
```coffeescript
expect(a) to equal bexpect(c) to exist
expect(d) to nt equal e
expect([]) to have length 0
```This assertion DSL is designed to take advantage of CoffeeScript's largely parenthesis-free syntax. Don't use it with plain JS unless you want assertions that look like this
```js
expect({})(to(nt(be(an(Array)))));
```In many cases CoffeeScript's terse syntax is especially great for writing unit tests, since there tends to be lots of boilerplate and repeated code, and tons of `it` and `describe` blocks to close. Even for projects written in regular JS, testing with CoffeeScript is excellent. While not as full-featured as libraries like Chai, `sentence` provides a basic set of assertions that will cover most use cases.
Admittedly, I've focused on keeping the code itself as pretty as possible. A number of features are infeasible with the current approach.
#### `equal`
```coffeescript
expect(1) to equal 1
```
Assert that two values are equal.#### `eql`/`deep_equal`
```coffeescript
expect(a: "b", c: "d") to eql a: "b", c: "d"
```
Assert that two values are deeply equal. Uses the [`deep-equal`](https://github.com/substack/node-deep-equal) package, with the **strict** option **enabled**.#### `greater`
```coffeescript
expect(2) to be greater than 1
```
Assert that a value is greater than another value.#### `less`
```coffeescript
expect(1) to be less than 2
```
Assert that a value is less than another value#### `contain`
```coffeescript
expect("hello there") to contain "hello"
```
Assert that one value contains another value (using `indexOf`). Supports strings and arrays.#### `have`
```coffeescript
expect(name: "Nick") to have("name") "Nick"
```
Assert that an object has a property equal to a value.#### `match`
```coffeescript
expect("hello there") to match /hello/
```
Assert that a string satisfies a regular expression.#### `an` `a`
```coffeescript
expect([]) to be an Array
expect("") to be a String
expect(true) to be an Object # fails
```
Assert that an object is an instance of a constructor. Doing `expect(x) to nt be an Object` tests if `x` is a primitive value (i.e. string, number, boolean, symbol)#### `exist`
```coffeescript
expect(0) to exist
```
Assert that a value is not `null` or `undefined`#### `empty`
```coffeescript
expect({}) to be empty
```Assert that an object has no own enumerable keys, or if an array that it's length is zero.
#### `ok`
```coffeescript
expect(1) to be ok
```
Assert that a value is truthy#### `error`
```coffeescript
expect(-> throw new Error) to error
```
Assert that a function throws an error when called#### `length`
```coffeescript
expect([1,2,3]) to have length 3
```
Special function for "has" in the common case of checking an object's length#### `nt` ('not' is a reserved word in CoffeeScript)
```coffeescript
# these all pass
expect(false) to nt be ok
expect(null) to nt exist
expect([1]) to nt be empty
expect({}) to nt be an Array
expect([1]) to nt have length 2
expect([]) to nt contain 1
expect(->) to nt error
expect("a") to nt match /b/
expect(x: "y") to nt have("x") "z"
```Reverse an assertion chain