Skip to content

Instantly share code, notes, and snippets.

@ccutch
Created November 7, 2017 08:02
Show Gist options
  • Save ccutch/3b2405ea58556a6d2a9e4c1bafb6a0f4 to your computer and use it in GitHub Desktop.
Save ccutch/3b2405ea58556a6d2a9e4c1bafb6a0f4 to your computer and use it in GitHub Desktop.
How I would write specification files
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