`sendRequest` now uses the supertest method for executing and verifying requests still using chai for the assertions with subscribe data and eventNum as I wasn't sure what assertion lib we want to use if not chai since supertest is just for api (if i'm understanding correctly??)
Speckle Server
The next iteration of the Speckle Server.
Contributing
Local debugging & testing
To debug, simply run npm run dev:server. To test, run npm run test:server. To run tests in interactive mode, run npm run test:server:watch.
Requirements
-
Duplicate and rename
.env-exampleto.env. -
You will need to have a postgres instance running on the default settings, with two databases present, named
speckle2_devandspeckle2_test.
For getting postgres running on osx, check out postgres.app, and the classic pgadmin.
- You will also need Redis installed.
For which you can use the redis.app.
How to commit to this repo
When pushing commits to this repo, please follow the following guidelines:
- Install commitizen globally (
npm i -g commitizen). - When ready to commit, type in the commandline
git cz& follow the prompts. - Install eslint globally
npm i -g eslint- if using VS code install the
eslintextension - we also recommend setting it to run on save by adding the following VS Code setting
"editor.codeActionsOnSave": { "source.fixAll.eslint": true } - if using VS code install the
Modules
The server dynamically loads individual 'modules' from each top level folder in ./modules. It first loads the core modules, and thereafter others.
Modules can create new and alter old database tables, if the knex migration files are present in a migrations subfolder (e.g., ./modules/your-module/migrations/my-new-table.js). Make sure to add a date in front of your migration file.
Structure
A module should contain in its root folder an index.js file that exposes an init function:
exports.init = ( app ) => {
// Your module's initialisation code
}
Any database migration files should be stored and named accordingly in a migrations folder. Moreover, modules should include test files. These should be located in tests. Here's a sample structure:
|-- index.js // entry file
|-- migrations
`-- myTable.js
`-- tests
`-- example.spec.js
// TODO
API
GraphQl
// TODO ### REST
Depecrated.