US2001 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki
=======================================
O Gestor de Produção , pretende adicionar uma matéria-prima ao catálogo.

Um Material é caracterizada por:
- Código Interno - Unico
- Nome do Material
- Descricao do Material
- Unidade de medida
- Conteudo da ficha tecnica
Código Interno deve ser unico. Código Interno não pode ser vazio. Nome do material nao deve ser vazio. Unidade de medida deve corresponder a uma do Enum. Conteudo da ficha tecnica nao deve ser vazio.
Classe do domínio: Material Controlador: EspecificarMaterialController Repositório: MaterialRepository


- Command - Para implementar a ação de registar novas categorias
- Repository Pattern - Para abstrair o sistema de persistência de objetos, facilitando a implementação com diferentes tecnologias
- Controller - Para separar o layer da interface do layer de domínio, introduzindo então um layer de aplicação encarregue do processamento, mas não responsável por caracterizar o negócio ou interagir com o utilizador.
- Polymorphism & Template method - Usado na implementação do repositório específico de cada entidade.
- Liskov Substitution principle & Dependency inversion - Em todas as implementações de interfaces e extensões de classes.
- Pure fabrication - Controller e UI.
- Information expert & HC/LC - Sempre presente: cada classe tem uma responsabilidade bem definida, visando a sua independência de outras classes.
- Singleton - Utilizado na RepositoryFactory
Testes: São explicitos pelo nome dos métodos
(Teste ficha tecnica pdf)
@Test(expected = IllegalArgumentException.class) public void garantirPathNaoPodeSerNull() {
try {
new FichaTecnicaPDF(null,"teste","vazio");
} catch (IOException e) {
e.printStackTrace();
}
}
@Test(expected = IllegalArgumentException.class)
public void garantirPathNaoPodeSerStringVazia() {
try {
new FichaTecnicaPDF("","teste","vazio");
} catch (IOException e) {
e.printStackTrace();
}
}
@Test(expected = IllegalArgumentException.class)
public void garantirPathNaoSerVazioComEspacos() {
try {
new FichaTecnicaPDF(" ","teste","vazio");
} catch (IOException e) {
e.printStackTrace();
}
}
(Teste codigo interno)
@Test(expected = IllegalArgumentException.class) public void garantirCodigoInternoNaoPodeSerNull() {
new CodigoInterno(null);
}
@Test(expected = IllegalArgumentException.class)
public void garantirCodigoInternoNaoPodeSerStringVazia() {
new CodigoInterno("");
}
@Test(expected = IllegalArgumentException.class)
public void garantirCodigoInternoNaoSerVazioComEspacos() {
new CodigoInterno(" ");
}