InstruçÔes

Build a Project Idea Board

Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratĂłrio. User Stories: 1. VocĂȘ deve definir uma constante de objeto chamada projectStatus com as trĂȘs chaves: PENDING, SUCCESS e FAILURE. Cada status deve ser atribuĂ­do a um objeto com uma chave description com os valores Execução Pendente, Executado com Sucesso e Falha na Execução, respectivamente. 2. VocĂȘ deve definir uma classe chamada ProjectIdea com um constructor que recebe title e description como parĂąmetros. Inicialize as propriedades title e description com os parĂąmetros fornecidos. A classe tambĂ©m deve ter uma propriedade chamada status que Ă© definida com o valor projectStatus.PENDING por padrĂŁo. 3. VocĂȘ deve definir um mĂ©todo chamado updateProjectStatus dentro da classe ProjectIdea. Este mĂ©todo deve aceitar um parĂąmetro newStatus e atualizar a propriedade status para o valor fornecido. 4. VocĂȘ deve definir uma classe ProjectIdeaBoard com um constructor que aceita um title e inicializa um array vazio chamado ideas para armazenar instĂąncias da classe ProjectIdea. 5. VocĂȘ deve definir um mĂ©todo chamado pin dentro da classe ProjectIdeaBoard que aceite uma instĂąncia da classe ProjectIdea e adicione a instĂąncia fornecida ao array ideas. 6. VocĂȘ deve definir um mĂ©todo chamado unpin dentro da classe ProjectIdeaBoard. Este mĂ©todo deve aceitar uma instĂąncia da classe ProjectIdea e removĂȘ-la do array ideas. 7. VocĂȘ deve definir um mĂ©todo chamado count que retorne o nĂșmero de ideias de projeto no array ProjectIdeaBoard fornecido. 8. VocĂȘ deve definir um mĂ©todo chamado formatToString que retorne o nome das ideias dos projetos, sua descrição e status no formato:
<ProjectIdeaBoard title> has <ProjectIdeaBoard count> idea(s)
<ProjectIdea title> (<ProjectIdea status description>) - <ProjectIdea description>
<ProjectIdea title> (<ProjectIdea status description>) - <ProjectIdea description>
.
.
.

O que fazer:

Testes:

  • VocĂȘ deve definir uma constante de objeto chamada `projectStatus` com os status e descriçÔes corretos do projeto.
  • VocĂȘ deve ter uma classe `ProjectIdea`.
  • Sua classe `ProjectIdea` deve inicializar a propriedade `title` e a propriedade `description` com base nos parĂąmetros passados. TambĂ©m deve definir o status para `projectStatus.PENDING`.
  • Sua classe `ProjectIdea` deve ter um mĂ©todo `updateProjectStatus`.
  • VocĂȘ deve ter uma classe `ProjectIdeaBoard`.
  • Seu `ProjectIdeaBoard` deve inicializar a propriedade `title` com base no parĂąmetro passado e inicializar um array vazio chamado `ideas` para armazenar instĂąncias da classe `ProjectIdea`.
  • Sua classe `ProjectIdeaBoard` deve ter um mĂ©todo `pin`.
  • Sua classe `ProjectIdeaBoard` deve ter um mĂ©todo `unpin`.
  • Sua classe `ProjectIdeaBoard` deve ter um mĂ©todo `count`.
  • Sua classe `ProjectIdeaBoard` deve ter um mĂ©todo `formatToString`.
  • `new ProjectIdea("Smart Window Locks", "An automation project allowing users to lock, unlock windows automatically based on weather conditions.")` should return `{ title: 'Smart Window Locks', description: 'An automation project allowing users to lock, unlock windows automatically based on weather conditions.', status: { description: 'Pending Execution' } }`.
  • Chamar `updateProjectStatus(projectStatus.SUCCESS)` em `new ProjectIdea("Fitness Tracker App", "Um aplicativo que monitora os treinos, dieta e padrĂ”es de sono do usuĂĄrio.")` deve atualizar o status para `{ description: 'Executado com Sucesso' }`.
  • Chamar `updateProjectStatus(projectStatus.FAILURE)` em `new ProjectIdea("RobĂŽ Chef de CafĂ© da ManhĂŁ", "Um robĂŽ que pode seguir uma lista de instruçÔes fornecida e preparar o cafĂ© da manhĂŁ para o usuĂĄrio, informando-o atravĂ©s do telefone.")` deve atualizar o status para `{ description: 'Execução Falhou' }`.
  • Chamar `updateProjectStatus(projectStatus.SUCCESS)` em `new ProjectIdea("Loja Online de Jogos Usados", "Uma plataforma online onde os usuĂĄrios podem comprar cĂłpias fĂ­sicas de jogos usados de outros usuĂĄrios.")` deve atualizar o status para `{ description: 'Executado com Sucesso' }`.
  • VocĂȘ deve ser capaz de fixar um objeto `ProjectIdea` no seu `ProjectIdeaBoard` usando o mĂ©todo `pin`.
  • VocĂȘ deve ser capaz de desfixar um objeto `ProjectIdea` do seu `ProjectIdeaBoard` usando o mĂ©todo `unpin`.
  • Quando `new ProjectIdeaBoard("Empty Board")` estiver vazio, `emptyBoard.formatToString()` deve retornar `Empty Board has 0 idea(s)\n`.
  • Quando vocĂȘ fixa `new ProjectIdea("Sistema de Casa Inteligente", "Um sistema integrado para controlar remotamente iluminação, temperatura e dispositivos de segurança.")` em `new ProjectIdeaBoard("Quadro de Projetos TecnolĂłgicos")`, `techProjects.formatToString()` deve retornar `Quadro de Projetos TecnolĂłgicos tem 1 ideia(s)\nSistema de Casa Inteligente (Execução Pendente) - Um sistema integrado para controlar remotamente iluminação, temperatura e dispositivos de segurança.\n`.

Preview