generator-spark-bot [](https://travis-ci.org/brh55/generator-spark-bot) [](https://github.com/sindresorhus/xo)
February 15, 2017 · View on GitHub
generator-spark-botis a yeoman generator that scaffolds out a node Cisco Spark bot following anevent-drivenfashion, and is extremely easy to get started with.trigger context => callback()
Designed with simplicity and usability in mind:
- Fast to get started, just drop a
.jsfile within/commandsand your bot will register a listener on start - Easier unit testing with access to commands' private methods
- Includes Flint for a more robust framework
Usage
Ensure yeoman is is installed:
npm install -g yo or yarn global add yo
After yeoman is installed:
$ mkdir project-name
$ cd project-name
$ yo spark-bot
App Structure
.
├── commands # Event handlers are within the commands
│ └── example.js # An example command for reference
├── app.js # Bot entry point
├── config.js # Configurations
├── test.js # AVA Test
├── readme.md
├── license
└── package.json
Commands
Commands will instruct the bot on when and how to respond to particular contextual triggers.
To add a command, simply add a .js file within the commands directory. When the bot is initializing, commands will automatically register with Flint at runtime.
These command must implement an interface that contains a trigger property and a callback method. Refer to example.js within the commands directory.
trigger | <RegEx>, <string>
The contextual trigger that will cause the bot to execute the callback upon matches.
callback | <function>
The function to be executed (event handler).
Command Sub-generator
yo spark-bot:command
For convenience, the :command sub-generator will generate a new command within the /commands directory.
Scripts
npm run test- Run linter and unit testnpm start- Start the botnpm run debug- Activate debugging to log
Unit Testing
Unit testing is straightforward, simple, and already configured with the AVA test runner. Commands are accessible through the fileName as a property of the commands object. Thus, any command callbacks can be tested as such: commands.fileName.callback.
In addition, the rewire module is pre-configured to test private methods and is easily accessible without the need of exporting any private methods. This is done with the __get__() method. IE: commands.example.__get__('buildExampleMessage').
Tech Dependencies
Test Runner
- AVA - 🚀 Futuristic JavaScript test runner
Linter
- XO - JavaScript happiness style linter
Framework
- Express - Fast, unopinionated, minimalist web framework for node.
- Flint - Cisco Spark Bot SDK for Node JS
License
MIT © Brandon Him