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