├── .vscode ├── launch.json └── settings.json ├── README.md ├── package.json ├── src ├── service.js └── types.js └── test └── service.test.js /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Run Test Debugger", 6 | "request": "launch", 7 | "runtimeExecutable": "npm", 8 | "runtimeArgs": [ 9 | "run", 10 | "test:debug", 11 | ], 12 | "skipFiles": [ 13 | "/**" 14 | ], 15 | "type": "node", 16 | "console": "integratedTerminal" 17 | } 18 | ], 19 | "compounds": [] 20 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "window.zoomLevel": 4 3 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Esse é o repositório do meu setup inicial para qualquer projeto - testes + live reload + debugging ativos no VSCode 2 | 3 | [Assista o video aqui](https://youtu.be/Eo9ZcvTIgS4) 4 | 5 | ![Como entregar software que funciona de primeira (1)](https://github.com/ErickWendel/setup-tests-debugging-live-reload-nodejs/assets/8060102/0827a099-5f41-49e6-87c4-1d27bdbd57f5) 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "setup-tests-debugging-live-reload-nodejs", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "index.js", 6 | "type": "module", 7 | "scripts": { 8 | "dev": "node --watch src/service.js", 9 | "test": "node --test test/", 10 | "test:coverage": "node --test --experimental-test-coverage test/", 11 | "test:debug": "node --inspect --watch --test test/" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC" 16 | } 17 | -------------------------------------------------------------------------------- /src/service.js: -------------------------------------------------------------------------------- 1 | import './types.js' 2 | /** 3 | * @param {IncomingUser} user 4 | * @returns {OutcomingUser} 5 | * */ 6 | function parseUser(user) { 7 | /** @type {OutcomingUser} */ 8 | const result = { 9 | email: user.email, 10 | name: user.name.toUpperCase() 11 | } 12 | 13 | return result 14 | 15 | } 16 | 17 | export { parseUser } -------------------------------------------------------------------------------- /src/types.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @typedef {Object} IncomingUser 3 | * @property {string} name 4 | * @property {string} email 5 | * @property {string} password 6 | */ 7 | 8 | /** 9 | * @typedef {Object} OutcomingUser 10 | * @property {string} name 11 | * @property {string} email 12 | */ 13 | -------------------------------------------------------------------------------- /test/service.test.js: -------------------------------------------------------------------------------- 1 | import './../src/types.js' 2 | 3 | import { describe, it } from 'node:test' 4 | import { parseUser } from '../src/service.js' 5 | import assert from 'node:assert' 6 | describe('Service', () => { 7 | it('should parse user', () => { 8 | /** @type {IncomingUser} */ 9 | const user = { 10 | email: 'e@e.com', 11 | name: 'erick', 12 | password: '123123' 13 | } 14 | 15 | 16 | const result = parseUser(user) 17 | assert.deepStrictEqual(result, { 18 | name: user.name.toUpperCase(), 19 | email: user.email 20 | }) 21 | }) 22 | }) --------------------------------------------------------------------------------