Created
November 7, 2017 08:02
-
-
Save ccutch/3b2405ea58556a6d2a9e4c1bafb6a0f4 to your computer and use it in GitHub Desktop.
How I would write specification files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { spec, types, define, abstract, Api } from "spectacles"; | |
spec(module, "elements").ensure("./models/element"); | |
abstract` | |
This is a module used for elements | |
`; | |
// Definitions | |
define.submodule("constants", "./constants")` | |
a module of elements that allow the use to do something | |
`; | |
define.private.submodule("utils", "./utils")` | |
private submodule of utilities | |
`; | |
define.type("Element").shape({ | |
name: types.string, | |
port: types.number | |
})` | |
A simple element | |
`; | |
define.variable("elements", types.array(types.Element))` | |
List of elements | |
`.it("should start out as an empty", elementsModule => { | |
let { elements } = elementsModule; | |
assert(typeof elements, "object"); | |
assert(elements instanceof Array); | |
assert(elements.length === 0); | |
}); | |
define.func("addElement", [types.string, types.number], types.Element)` | |
Add element to list of elements | |
` | |
.it("should add an element if all arguments are valid", elementsModule => { | |
let { elements } = elementsModule; | |
let initialLength = elements.length; | |
elementsModule.addElement("Test element", 5000); | |
assert(initialLength > elements.length); | |
assert((elements[initialLength].name = "Test element")); | |
assert((elements[initialLength].port = 5000)); | |
}) | |
.it("should fail if bad arguments are passed", elementsModule => { | |
assertThrow(() => { | |
elementsModule.addElement(12.2, "not a port", [{ data: 3 }]); | |
}, error => (error.message = "Improper arguments were passed")); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment