Git Product home page Git Product logo

training-erickwendel / jsexpert-challenge02-lifecycle-solution Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wellssa/jsexpert-challenge02-lifecycle-solution

0.0 0.0 0.0 188 KB

This is the solution for the code challenge where you were supposed to implement the given functions taking into consideration the Javascript Lifecycle and other particularities of the language.

JavaScript 16.07% CSS 2.90% HTML 81.03%

jsexpert-challenge02-lifecycle-solution's Introduction

Story: Minha playlist

Motivação

No módulo 03 - Conceitos fundamentais sobre o ciclo de vida do Javascript vimos diferentes conceitos dentro do nosso querido Java Script, então escolhemos os mais relevantes e desenvolvemos um desafios onde possam ser ultilizados.

Idéia geral

Este desafio consiste em uma API (como feita no desafio anterior) com duas rotas, cada rota devolve uma playlist.

Funcionalidades

  1. Default Deve retornar 404 ou uma mensagem de hello world

  2. YoutubeMusic e SpotifyMusic Devem derivar de music.js e cada uma deve conter um método de coerção de tipo (valueOf/toString e [Symbol.toPrimitive])

  • 2.1 String Deve retornar uma string contendo Nome da música - Nome da banda - Nome do álbum

  • 2.2 Number Deve retornar o valor em milissegundos da duração da música

  1. GET/youtube Deve retornar a playlist da fake API Youtube

  2. GET/spotify Deve retornar a playlist da fake API Spotify

Testes

  • Unitários

  • E2E

  • Prototype das classes derivadas de music.js

  • Coersão de tipo devolvendo o esperado

Extras

  • TDD e BDD, será que rola? Acho que vale a tentativa!

  • Publicar o code coverage no github pages!

  • Consegue aplicar os conceitos de clonagem de Objeto?

Arquitetura e onde trabalhar

A arquitetura nesse desafio é livre, fique a vontade para desenvolver como bem entender, a única restrição é ultilizar as classes Music, YoutubeMusic e SpotifyMusic.

project
│   README.md
│   package.json
│
└───src
│   |
|   |__util
|      |
|      |__api.js
|      |__timeFormat.js
│
└───test
│   │
│   └───unit
|   |
|   |___e2e

Checklist features

  • Web API

    • Deve ter uma rota raiz que retorne 404 ou um hello world.

    • Deve ter uma rota de /youtube, onde:

      • Deve consumir a rota /youtube da fake APIs
    • Deve ter uma rota de /spotify, onde:

      • Deve consumir a rota /spotify da fake APIs
    • Deve retornar um objeto JSON com essa estrutura

    {
      musics:[ // Array de objetos
          {
              display: "Nome da música - Nome da banda - Nome do álbum",
              duration: 00:03:55:255 // Duração da música
          },
          ...
      ],
      duration: 01:30:25:000 // Duração da playlist
    }
    
  • Youtube e Spotify Music

    • Deve derivar de Music
    • Cada um deve ter um método de coerção de tipo
    • Os métodos de coerção devem ser diferentes para cada classe
  • Testes

    • Deve ter testes unitários que cubra todas as funções
    • Deve ter testes end-2-end que cubra todas as rotas
    • Deve ter relatório de 100% de code coverage
    • Deve testar o prototype das classes derivadas de Music
    • Deve testar a coersão de tipo das classes derivadas de Music

Iniciando

  1. package.json - Troque a versão do node para a sua versão atual (node -v) e coloque seu nome no Author.

  2. npm run api - Dar uma olhada no retorno da api e pensar na melhor estrategia para os dados retornados.

  3. npm i - Escolha as bibliotecas de testes e instale elas (como as aulas do modulo 1 são com o CommonJS e as bibliotecas chai, mocha, sinon e nyc, as configuralções de coverage já foi feita pensando nelas).

  4. Bora codar

Submissão

  1. Inicialize um repósitório git com um arquivo README.md contendo seu nome, quais tópicos do checklist foram implementados e, caso queira, um breve resumo de cada tópico.

  2. Crie o projeto e os testes.

  3. Coloque as instruções de como configurar e executar seu projeto e os testes no README.md (não se esqueça do coverage com o nyc).

  4. Envie o link no canal #desafios-jsexpert da nossa comunidade no discord.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.