- 37
- 2 838
Diego Armando
Brazil
เข้าร่วมเมื่อ 22 มี.ค. 2010
Mestre em Ciências da Computação pela Universidade Federal de Sergipe (UFS/2016). Atualmente é Professor Efetivo do Ensino Básico, Técnico e Tecnológico do Instituto Federal de Sergipe (IFS) na área de Informática. Tem experiência acadêmica e no mercado na área de Ciência da Computação, mais especificamente em Engenharia de Software, Sistema de Informação, Banco de Dados e Linguagem de Programação, além de experiência acadêmica na área de Ciência da Informação com foco em Teoria Geral da Informação, Processos de Comunicação e Representação da Informação. Possui interesse nos temas: Engenharia de Software Aplicada, Arquitetura de Software e Sistemas, Processo de Desenvolvimento de Software, Desenvolvimento WEB, Tecnologias da Informação e Comunicação, Geração Automática de Código através de Inteligência Artificial Generativa, Letramento em Tecnologia/Código, Tecnologias Emergentes e Disruptivas, Gestão da Informação e Ciência Aberta.
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 24
⭐ ecommerce-node-api
🎬 Parte 24 | Aplicando Testes de Unidade Automatizados nos Repositórios
🎥 Roteiro do Vídeo
00:00 - Vinheta
00:10 - Orientações Sobre o Vídeo
02:23 - O Que São os Dublês de Testes?
12:36 - Refatorando Entidades de Domínio
15:19 - Instalando a Biblioteca "vitest-mock-extends"
18:54 - Criando o Arquivo para os Testes Unitários do Repositório
22:41 - Implementando o Objeto Mock do Prisma Client
27:05 - Configurando o Repositório a Ser Testado
31:33 - Implementando os Objetos Dummy Auxiliares do Teste
35:12 - Implementando o Teste Unitário do Método "Recuperar Categoria por ID"
48:33 - Implementando o Teste Unitário do Método "Recuperar Todas as Categorias"
51:50 - Implementando o Teste Unitário do Método "Existe Categoria"
53:18 - Implementando o Teste Unitário do Método "Inserir Categoria"
57:00 - Implementando o Teste Unitário do Método "Atualizar Categoria"
58:10 - Implementando o Teste Unitário do Método "Deletar Categoria"
01:00:38 - Considerações Finais
📦 Release v24.0.0 - GitHub
github.com/diegoarmandoo/ecommerce-node-api/releases/tag/v24.0.0
🎬 Parte 24 | Aplicando Testes de Unidade Automatizados nos Repositórios
🎥 Roteiro do Vídeo
00:00 - Vinheta
00:10 - Orientações Sobre o Vídeo
02:23 - O Que São os Dublês de Testes?
12:36 - Refatorando Entidades de Domínio
15:19 - Instalando a Biblioteca "vitest-mock-extends"
18:54 - Criando o Arquivo para os Testes Unitários do Repositório
22:41 - Implementando o Objeto Mock do Prisma Client
27:05 - Configurando o Repositório a Ser Testado
31:33 - Implementando os Objetos Dummy Auxiliares do Teste
35:12 - Implementando o Teste Unitário do Método "Recuperar Categoria por ID"
48:33 - Implementando o Teste Unitário do Método "Recuperar Todas as Categorias"
51:50 - Implementando o Teste Unitário do Método "Existe Categoria"
53:18 - Implementando o Teste Unitário do Método "Inserir Categoria"
57:00 - Implementando o Teste Unitário do Método "Atualizar Categoria"
58:10 - Implementando o Teste Unitário do Método "Deletar Categoria"
01:00:38 - Considerações Finais
📦 Release v24.0.0 - GitHub
github.com/diegoarmandoo/ecommerce-node-api/releases/tag/v24.0.0
มุมมอง: 12
วีดีโอ
🎬 Implementando Um Front-End para Comércio Eletrônico com HTML, CSS e JavaScript | Parte 03
มุมมอง 137 ชั่วโมงที่ผ่านมา
⭐ ecommerce-simple-spa 🎬 Parte 03 | Convertendo Páginas do MPA em Views do SPA 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 01:24 - Criando a "HomeView" a Partir de Trechos do HTML da Página "Index.html" 08:41 - Preparando a Página "Index.html" para Ser o Ponto de Carregamento Único do SPA 13:52 - Configurando a "HomeView" nas Rotas e Na Barra de Navegação 19:15 - Conver...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 23
มุมมอง 3619 ชั่วโมงที่ผ่านมา
⭐ ecommerce-node-api 🎬 Parte 23 | Refatorando Código para Melhorar Legibilidade e Manutenibilidade 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 02:54 - Substituindo "Valores Mágicos" por Constantes com Nomes Significativos nas Entidades 13:07 - Usando Nomes Significativos em Variáveis e Parâmetros nas Entidades 23:25 - Melhorando Agrupamento das Suítes de Teste de Unidad...
🎬 Implementando Um Front-End para Comércio Eletrônico com HTML, CSS e JavaScript | Parte 02
มุมมอง 87วันที่ผ่านมา
⭐ ecommerce-simple-spa 🎬 Parte 02 | Implementando Códigos Auxiliares para Um Single Page Application (SPA) 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 00:54 - Implementando A Classe "View" do SPA 10:07 - Implementando Funções de Autenticação 14:09 - Implementando A Classe "Router" do SPA 19:43 - Criando o Objeto com as Rotas do SPA 21:24 - Implementando o Arquivo de Ini...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 22
มุมมอง 4314 วันที่ผ่านมา
⭐ ecommerce-node-api 🎬 Parte 22 | Implementando o Padrão Repositório (Outras Operações) 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 02:42 - Configurando Script para Execução de Testes Automatizados no Modo Verboso 06:09 - Implementando e Testando a Operação "Adicionar Categoria ao Produto" 01:08:23 - Implementando e Testando a Operação "Remover Categoria do Produto" 01:...
🎬 Implementando Um Front-End para Comércio Eletrônico com HTML, CSS e JavaScript | Parte 01
มุมมอง 6114 วันที่ผ่านมา
⭐ ecommerce-simple-spa 🎬 Parte 01 | Implementando Múltiplas Páginas Estáticas Com Abordagem Tradicional 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 01:22 - O Que é Um SPA (Single Page Application)? 05:28 - Características de Um SPA 10:21 - SPA X MPA - Multiple Page Application (abordagem tradicional) 16:05 - Criando o Diretório do Projeto (ecommerce-simple-spa) 17:23 - ...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 21
มุมมอง 7714 วันที่ผ่านมา
⭐ ecommerce-node-api 🎬 Parte 21 | Refatorando Objetos de Domínio com Novos Atributos 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 02:51 - Definindo Interfaces e Tipos para Representar as Datas de Controle 10:13 - Refatorando os Objetos de Domínio da Categoria - Novos Atributos - Datas 28:52 - Refatorando os Objetos de Domínio do Produto - Novos Atributos - Datas 43:27 - ...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 20
มุมมอง 4721 วันที่ผ่านมา
⭐ ecommerce-node-api 🎬 Parte 20 | Implementando o Padrão Repositório (Continuação) 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 03:20 - O Que É Programação Assíncrona (Asynchronous Programming)? 12:48 - O Que São Promises - JavaScript/TypeScript? 17:32 - Usando Async e Await para Lidar com Promises - JavaScript/TypeScript 21:51 - Definindo a Interface de Um Repositório d...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 19
มุมมอง 8321 วันที่ผ่านมา
⭐ ecommerce-node-api 🎬 Parte 19 | Implementando o Padrão Repositório 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 02:58 - Ajustes no Schema do Prisma ORM 07:42 - Padrão - Repositório (Repository) 11:55 - Definindo a Interface de Um Repositório Genérico 27:17 - Implementando Classe Abstrata Para Um Repositório Prisma ORM 31:46 - Definindo a Interface de Um Repositório de ...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 18
มุมมอง 3728 วันที่ผ่านมา
⭐ ecommerce-node-api 🎬 Parte 18 | Aplicando Mapeamento Objeto-Relacional (ORM) 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 02:52 - O Que É Mapeamento Objeto-Relacional (ORM)? 08:16 - Padrão - Mapeador de Dados (Data Mapper) 14:46 - Padrão - Mapeamento de Metadados (Metadata Mapping) 17:00 - Padrão - Objeto de Consulta (Query Object) 20:01 - Prisma ORM 22:20 - Aplicando ...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 17
มุมมอง 46หลายเดือนก่อน
⭐ ecommerce-node-api 🎬 Parte 17 | Modelando Entidades e Relacionamentos do Módulo Catálogo 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 03:57 - O Que é Modelo Entidade Relacionamento (MER)? 06:24 - Modelo Conceitual - Entidades e Relacionamentos do Módulo Catálogo 14:43 - Modelo Lógico - Entidades e Relacionamentos do Módulo Catálogo 37:12 - Considerações Finais 📦 Releas...
🎬 Paradigma Imperativo - Estrutura de Controle de Fluxo - Repetição - for (para) - Scratch
มุมมอง 43หลายเดือนก่อน
⭐ Estruturas de Controle de Fluxo - Repetição - for (para) 🎬 Praticando com Scratch 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 01:07 - Acessando a Plataforma "Scratch" Através do Navegador 03:43 - Introdução a Plataforma "Scratch" 06:44 - Vantagens e Desvantagens de Usar a Plataforma "Scratch" 12:44 - Estrutura de Repetição "for" em "Scratch" 31:29 - Resolvendo Exercíc...
🎬 Paradigma Imperativo - Estrutura de Controle de Fluxo - Repetição - for (para) - JavaScript Editor
มุมมอง 30หลายเดือนก่อน
⭐ Estruturas de Controle de Fluxo - Repetição - for (para) 🎬 Praticando Em Dispositivo Móvel Usando o Aplicativo JavaScript Editor para Android 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 00:48 - Instalando o Aplicativo "JavaScript Editor For Android" Em Um Dispositivo Móvel 02:50 - Introdução ao Aplicativo "JavaScript Editor For Android" 04:09 - Vantagens e Desvantagen...
🎬 Paradigma Imperativo - Estrutura de Controle de Fluxo - Repetição - for (para) - Playcode.io
มุมมอง 50หลายเดือนก่อน
⭐ Estruturas de Controle de Fluxo - Repetição - for (para) 🎬 Praticando Em Dispositivo Móvel Usando a Plataforma Online "JavaScript Playground" (Playcode.io) 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 00:46 - Acessando a Plataforma "PlayCode.io" Em Um Dispositivo Móvel 03:54 - Introdução a Plataforma "PlayCode.io" 06:06 - Vantagens e Desvantagens de Usar a Plataforma "...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 16
มุมมอง 31หลายเดือนก่อน
⭐ ecommerce-node-api 🎬 Parte 16 | Apresentando a Estratégia para Estrutura de Módulos 🎥 Roteiro do Vídeo 00:00 - Vinheta 00:10 - Orientações Sobre o Vídeo 02:03 - O Que é Arquitetura de Software? 11:40 - Tipos de Estruturas de Arquitetura 16:28 - O Que São Módulos? 21:27 - Modularidade Como Princípio Organizador 25:59 - Princípio de Design - Pacote por Camada (Package By Layer) 29:59 - Princípi...
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 15
มุมมอง 44หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 15
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 14
มุมมอง 51หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 14
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 13
มุมมอง 59หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 13
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 12
มุมมอง 53หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 12
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 11
มุมมอง 97หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 11
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 10
มุมมอง 602 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 10
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 09
มุมมอง 952 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 09
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 08
มุมมอง 1042 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 08
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 07
มุมมอง 692 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 07
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 06
มุมมอง 952 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 06
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 05
มุมมอง 1262 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 05
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 04
มุมมอง 992 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 04
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 03
มุมมอง 1022 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 03
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 02
มุมมอง 1332 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 02
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® + TypeScript | Parte 01
มุมมอง 2602 หลายเดือนก่อน
🎬 Implementando Um Back-End para Comércio Eletrônico com Node.js® TypeScript | Parte 01
Ta confuso essa ordem de postagens dos vídeos, o sr não terminou a serie de backend, nem a implementação do autenticação e autorização porem já esta lançando os vídeos do front que contemplam esse assunto.
São duas séries de vídeos diferentes, uma do back-end(ecommerce-node-api) e outra do front-end (ecommerce-simple-spa). Apesar das duas se complementarem, elas são implementadas separadamente em repositórios diferentes, buscando desacoplar ao máximo o desenvolvimento da interface web do usuário da aplicação back-end. Por isso usamos no back-end o conceito de API para desacoplar ao máximo. Resumindo, são dois projetos separados. A ordem dos vídeos é organizada por parte, veja que esse vídeo é a parte dois do front -end. Essa decisão também é proposital, pois assim podemos perceber que é possível implementar ambas as partes (front e back) separadamente.
Deixando claro também que esses vídeos são feitos principalmente para auxiliar no processo de ensino e aprendizado de minhas disciplinas, ou seja, muitos aspectos e detalhes da implementação e explicações são feitos em sala de aula de forma presencial. Esses vídeos são um guia introdutório para a prática da engenharia de software. Os vídeos não contemplam a implementação total de um sistema e sim mostram as principais partes, permitindo a implementação de uma código base que pode ser evoluído pelo aluno.
Tem um cronograma para postagens dos vídeos?
Essa série do Ecommerce Node API tem atualmente 37 partes que vão ser liberadas nas segundas feiras
Professor, como é possivel acessar o metodo da entidade atraves do repositorio? sendo que voce não instanciou em nenhum momento a entidade produto. No codigo que o Sr fez: if (produtoRecuperado && categoriaRecuperada) { if (produtoRecuperado.adicionarCategoria(categoriaRecuperada)) { await produtoRepo.adicionarCategoria( produtoRecuperado, categoriaRecuperada ); } th-cam.com/video/1zVDgFcJYzs/w-d-xo.html
Provavelmente você está na etapa onde tentamos executar manualmente os repositórios envolvidos no caso de uso "Adicionar e Remover Categoria ao Produto" no arquivo src/index.ts. É importante lembrar que esse arquivo é um arquivo para testes manuais enquanto não iniciamos a implementação de testes automatizados. Portanto, o que fazemos nessa etapa é criar constantes que vão ser do tipo das entidades que são recuperadas pelo repositório. Ex.: const produtoRecuperado: Produto | null = await produtoRepo.recuperarPorUuid("737f111b-eba1-457f-9552-5b5f28511d5d"); const categoriaRecuperada: Categoria | null = await categoriaRepo.recuperarPorUuid("03f890b0-684a-44ba-a887-170e26bb2cd2"); Ou seja, o método do repositório produtoRepo.recuperarPorUuid retorna uma entidade do tipo Produto e o método categoriaRepo.recuperarPorUuid retornar uma entidade do tipo categoria. Sendo assim as constantes produtoRecuperado e categoriaRecuperada são preenchidas com objetos desses tipos. Não acessamos o método da entidade através do repositório e sim os métodos do repositório retornam objetos que são entidade e ai sim vc pode usa-los. Quem se encarrega de instanciar essas entidades que vão ser devolvidas são os mapeadores dentro dos métodos dos repositórios que mapeiam objetos do PRISMA para objetos de domínio(entidades)
@@DiegoArmandoOM Obrigado pela atenção. Cadê os próximos vídeos????
Essa série do Ecommerce Node API tem atualmente 37 partes que vão ser liberadas nas segundas feiras. Mas se quiser acessar o código fonte completo até a parte 37 basta acessar o repositório em github.com/diegoarmandoo/ecommerce-node-api
Bom dia! Em qual vídeo está o método de Atualizar produto com categoria?
Esse caso de uso não foi implementando. Essa é uma decisão deliberada. É possível verificar na pasta "requirements" do modulo catalogo que existem algumas descrições de caso de uso que usam técnicas de história de usuário e BDD para explicar a funcionalidade. Foi decidido não alterar o produto com a categoria de uma única vez e sim implementar um caso de uso de adicionar e remover categoria de um produto. Esses s casos de uso definidos são implementados seguindo as decisões de design e arquitetura do projeto. É importante reforçar que o projeto apresentado nos vídeos e no repositório do Github tem objetivo didático, ou seja, o foco é em implementar alguns casos de uso de um e-commerce hipotético onde podemos praticar o paradigma orientado a objeto (POO), modelagem de domínios ricos, testes automatizados, princípios e padrões de arquitetura e projetos e boas práticas de desenvolvimento, mais especificamente modularizando o código em subdomínios como o de catalogo (onde se encontra as entidades produto e categoria) e implementando as diversas camadas para atender essa arquitetura, no caso as camadas de domain, application, infra e presentation de cada módulo. Talvez no futuro esse caso de uso específico seja implementado.
Vou criar o front-end usando NextJs + Shadcn + Zod e Zustand, amando demais seu conteúdo 🥹
A combinação do Next.js, Shadcn, Zod e Zustand é bastante promissora para projetos de front-end! Porém, antes de avançar, é imprescindível dominar HTML, CSS e JavaScript, a tríade fundamental para o desenvolvimento web.
como funciona o overload de assinatura de metodo??
De forma resumida, depende da linguagem de programação e suas características. Por exemplo, em TypeScript, o overload(sobrecarga) de assinatura de método vai permitir que sejam definidas múltiplas assinaturas para um único método, permitindo que o método aceite vários tipos de argumento ou combinações. Ou seja, em TypeScript, overload (sobrecarga) de método é baseada em múltiplas assinaturas de função com uma única implementação, enquanto em JAVA, cada método sobrecarregado (overloaded) tem uma implementação distinta. O TypeScript usa um único corpo de método para lidar com todos os casos (assinaturas diferentes sobrecarregadas), enquanto o Java permite métodos distintos por assinatura. Geralmente, o overload de método é usado quando se precisa que uma função manipule diferentes tipos ou números de parâmetros, mantendo um código o mais limpo e intuitivo possível, evitando também ao máximo duplicação de código.
vc não é didático, vc é a própria didática!!!!!
Caraca tu é da mesma Cidade que eu agora que percebi kkkk
Bom dia, to muito animado em aprender contigo 🤟🤟🤟🤟, percebi que você nao implementou autenticação e autorização, tem como inserir no curso?????
Que bom que está gostando do material produzido. A implementação da autenticação e autorização com JWT já está nos planos e roteiros para vídeos futuros, assim como a integração da API (back-end) com um SPA (front-end)
@@DiegoArmandoOM Gigante, ansioso demais!!!!
gostei dos conceitos, esse professor explica bem.
Bons estudos!
Muito bom viu, parabéns! Vc é dev sênior? Front-end?
Entrei na área de desenvolvimento de software em 2004 e ao longo dos anos adquiri uma certa experiência. Atualmente, compartilho meus conhecimentos como professor de programação. Geralmente atuo como desenvolvedor full stack, engenheiro ou arquiteto de software.
Top!
👏👏
Explicação bem detalhada. Parabéns pelo vídeo!