US3009 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki

US3009

1. Requisitos

Como Gestor de Chão de Fábrica, eu pretendo saber e alterar o estado (ativo/desativo) do processamento de mensagens de cada linha de produção bem como conhecer a última vez que o mesmo se realizou.

2. Análise

SSD

SSD

3. Design

3.1. Realização da Funcionalidade

SD

SD

3.2. Diagrama de Classes

CD

CD

3.3. Padrões Aplicados

DTO Para apresentar elementos de dominio no UI

Todos os essenciais: SOLID, GRASP

3.4. Testes de regras de dominio

@Test
public void garantirQueNaoSePodeAlterarEstadosDeProcessamentoParaOEstadoAtual() {
    LinhaProducao lProd = new LinhaProducao("teste");
    assertFalse(lProd.podeMudarParaEstado(EstadoProcessamentoMensagens.SUSPENSO));
}
@Test
public void garantirQueSePodeMudarOEstadoParaUmEstadoDiferente() {
    LinhaProducao lProd = new LinhaProducao("teste");
    assertTrue(lProd.alterarEstado(EstadoProcessamentoMensagens.ATIVO));
}
@Test
public void garantirQueNaoSePodeAlterarEstadosDeProcessamentoParaOEstadoAtualQuandoEleEstaAtivo() {
    LinhaProducao lProd = new LinhaProducao("teste");
    lProd.alterarEstado(EstadoProcessamentoMensagens.ATIVO);
    assertFalse(lProd.podeMudarParaEstado(EstadoProcessamentoMensagens.ATIVO));
}
@Test
public void garantirQueAUltimaAtualizacaoDaDataFicaAlteradaQuandoOEstadoEAlterado() {
    LinhaProducao lProd = new LinhaProducao("teste");
    String firstData = lProd.obterUltimaVezAtualizado();
    try {
        Thread.sleep(1010);
    } catch (InterruptedException e) {
        e.printStackTrace();
        fail("sleeping for one second failed somehow");
    }
    lProd.alterarEstado(EstadoProcessamentoMensagens.ATIVO);
    String secondData = lProd.obterUltimaVezAtualizado();
    assertNotEquals(firstData, secondData);
}

4. Integração/Demonstração

n/a

5. Observações

n/a

⚠️ **GitHub.com Fallback** ⚠️