Diego Armando
Diego Armando
  • 37
  • 2 838
🎬 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
มุมมอง: 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

ความคิดเห็น

  • @luanscar6371
    @luanscar6371 9 วันที่ผ่านมา

    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.

    • @DiegoArmandoOM
      @DiegoArmandoOM 9 วันที่ผ่านมา

      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.

    • @DiegoArmandoOM
      @DiegoArmandoOM 9 วันที่ผ่านมา

      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.

  • @luanscar6371
    @luanscar6371 11 วันที่ผ่านมา

    Tem um cronograma para postagens dos vídeos?

    • @DiegoArmandoOM
      @DiegoArmandoOM 11 วันที่ผ่านมา

      Essa série do Ecommerce Node API tem atualmente 37 partes que vão ser liberadas nas segundas feiras

  • @luanscar6371
    @luanscar6371 13 วันที่ผ่านมา

    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

    • @DiegoArmandoOM
      @DiegoArmandoOM 13 วันที่ผ่านมา

      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)

    • @luanscar6371
      @luanscar6371 12 วันที่ผ่านมา

      @@DiegoArmandoOM Obrigado pela atenção. Cadê os próximos vídeos????

    • @DiegoArmandoOM
      @DiegoArmandoOM 11 วันที่ผ่านมา

      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

  • @luanscar6371
    @luanscar6371 13 วันที่ผ่านมา

    Bom dia! Em qual vídeo está o método de Atualizar produto com categoria?

    • @DiegoArmandoOM
      @DiegoArmandoOM 13 วันที่ผ่านมา

      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.

  • @luanscar6371
    @luanscar6371 14 วันที่ผ่านมา

    Vou criar o front-end usando NextJs + Shadcn + Zod e Zustand, amando demais seu conteúdo 🥹

    • @DiegoArmandoOM
      @DiegoArmandoOM 14 วันที่ผ่านมา

      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.

  • @luanscar6371
    @luanscar6371 16 วันที่ผ่านมา

    como funciona o overload de assinatura de metodo??

    • @DiegoArmandoOM
      @DiegoArmandoOM 15 วันที่ผ่านมา

      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.

  • @luanscar6371
    @luanscar6371 19 วันที่ผ่านมา

    vc não é didático, vc é a própria didática!!!!!

  • @luanscar6371
    @luanscar6371 20 วันที่ผ่านมา

    Caraca tu é da mesma Cidade que eu agora que percebi kkkk

  • @luanscar6371
    @luanscar6371 20 วันที่ผ่านมา

    Bom dia, to muito animado em aprender contigo 🤟🤟🤟🤟, percebi que você nao implementou autenticação e autorização, tem como inserir no curso?????

    • @DiegoArmandoOM
      @DiegoArmandoOM 20 วันที่ผ่านมา

      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)

    • @luanscar6371
      @luanscar6371 20 วันที่ผ่านมา

      @@DiegoArmandoOM Gigante, ansioso demais!!!!

  • @YAGODOSSANTOSSILVA-i5u
    @YAGODOSSANTOSSILVA-i5u 2 หลายเดือนก่อน

    gostei dos conceitos, esse professor explica bem.

  • @viniciusm.m.7822
    @viniciusm.m.7822 3 หลายเดือนก่อน

    Muito bom viu, parabéns! Vc é dev sênior? Front-end?

    • @DiegoArmandoOM
      @DiegoArmandoOM 3 หลายเดือนก่อน

      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.

  • @viniciusm.m.7822
    @viniciusm.m.7822 3 หลายเดือนก่อน

    Top!

  • @isaiasalmeida4870
    @isaiasalmeida4870 3 หลายเดือนก่อน

    👏👏

  • @plinio_dev
    @plinio_dev 7 หลายเดือนก่อน

    Explicação bem detalhada. Parabéns pelo vídeo!