semana-javascript-expert06
semana-javascript-expert06 copied to clipboard
JS Expert Week 6.0 Classes - Spotify Radio
Spotify Radio - JS Expert Week 6.0
Welcome to the sixth Javascript Expert Week. This is the starting code to start our journey.
Tag this project with a star 🌟
Preview
![](https://github.com/ErickWendel/semana-javascript-expert06/raw/main/prints/demo.png)
Checklist Features
-
Web API
- [ ] Must achieve 100% code coverage in tests
- [ ] Must have end to end tests validating all API routes
- [ ] Must deliver static files as Node.js Streams
- [ ] Must deliver music files as a Node.js Stream
- [ ] Given a disconnected user it should not break the API
- [ ] Even if multiple commands are fired at the same time, it should not break the API
- [ ] If an unexpected error occurs, the API should keep working
- [ ] The project needs to run on Linux, Mac and Windows environments
-
Web App
- Client
- [ ] Must play the broadcast
- [ ] Shouldn't pause if any effects are added
- Controller
- [ ] Must achieve 100% code coverage in tests
- [ ] Must be able to start or stop a broadcast
- [ ] Must send commands to add audio effects to a stream
- Client
Tasks per class
- Lesson 01: Cover service and route layers with unit tests and achieve 100% code coverage
- Lesson 02: Maintain 100% code coverage and implement e2e tests for the entire API
- Lesson 03: implement unit tests for the frontend and maintain 100% code coverage
-
PLUS:
- [ ] provide a new effect
- [ ] add a new button on the controller
- [ ] add a new effect sound to the
audios/fx/
folder - [ ] repost on heroku
- [ ] provide a new effect
Source code for classes and solving challenges
-
Class01
- desafio-resolvido and page with 100% code coverage
-
Class02
- desafio-resolvido and page with 100% code coverage
-
Class03
- desafio-resolvido and page with 100% code coverage
Credits to the sources I've used on the demos
Streaming
Effects
FAQ
-
NODE_OPTIONS
is not a system recognized command, what to do?- If you are on Windows, the way to create environment variables is different. You must use the word
set
before the command. - Ex:
"test": "set NODE_OPTIONS=--experimental-vm-modules && npx jest --runInBand",
- If you are on Windows, the way to create environment variables is different. You must use the word
-
I ran
npm test
but nothing happens, what to do?- Check your Node.js version. We are using version 17. Go to node.js website and download the latest version.
-
jest.spyOn
- when we try to usefunction.name
(something likestream.pipe.name
), it says the instance is undefined- In this case, use the value as a string:
jest.spyOn(stream, "pipe").mockReturnValue
- In this case, use the value as a string:
-
Challenge 01 impossible to complete 100% code coverage because testUtil.js is not being fully used
- Add the following code snippet to the first line of the testUtil.js file:
/* istanbul ignore file */
. This will make jest ignore this file and complete 100%. - Important: this change will only serve to complete this first and/or second challenge, in the last class, we will not need to ignore this file since we will use all the functions
- Add the following code snippet to the first line of the testUtil.js file: