/desafio-php-full-stack

Desafio de Código proposto

Primary LanguageJavaScript

Como foi organizado o desafio

  • Decidiu-se dividir em pastas separadas o Back-end Laravel (PHP + MySQL) do Front-end Vue 3 (TypeScript):

Instruções para execução

  • Executar o comando composer para baixar as depências do framework e projeto:
    composer update
  • Criado as estruturas de entidades relacionais do banco usando o artisan command line:
    php artisan make:migration create_categories_table
    php artisan make:migration create_products_table
  • Configurar o banco nos arquivos .env.

  • Configurado os campos default para cada migration criada;

  • Executar as migrações das tabelas que serão utilizadas no CRUD:

    php artisan migrate
  • Criado estrutura de Models e relationships:
    php artisan make:model Category
    php artisan make:model Product
  • Construido Repository Layer Concepts Pattern para Categories Entity;

  • Construido Repository Layer Concepts Pattern para Products Entity;

  • Construido o Provider para controle dos Repositories criados:

    php artisan make:provider CategoryServiceProvider
    php artisan make:provider ProductServiceProvider
  • Registrado em config/app.php os providers:
    'providers' => [
        // ...outros providers declarados
        App\Providers\CategoryServiceProvider::class,
        App\Providers\ProductServiceProvider::class,
    ];
  • Importante executar após criar essas estruturas o composer dump para o auto-load ser carregado corretamente.

  • Trabalhado com Exceptions personalizadas:

    php artisan make:exception CategoryException
    php artisan make:exception ProductException

Iniciando a Aplição Back-end Laravel

  • Executando o Laravel:
    php artisan serve

Desafio Full Stack

Projeto Front-ent Vue

  • Entrar na pasta /front-end/ e executar a instalação das depêndencias:
    npm install

Executar o aplicativo Vue

    npm run serve
  • Lista de Categorias CRUD Vue 3:

image

  • Lista de Produtos CRUD Vue 3

image

Testes com PHPUnit

  • Entrar na pasta /back-end/.

  • Para realizar os testes será necessário executar os fakers em linha de comando para cadastro de exemplos de categorias e produtos ou cadastrar pelo front pelo menos 5 unidades:

  • Criado os primeiros testes:

   php artisan make:test CategoriesTest
   php artisan make:test ProductTest

Criado as factories:

    php artisan make:factory CategoryFactory
    php artisan make:factory ProductFactory
  • Recarregar as configurações de classes:
    composer dump
  • Usar o utilitário de linha de comando Artisan Tinker:
    php artisan tinker
 
    Category::factory()->count(5)->create()
    Product::factory()->count(10)->create()

Executar os Testes

    php artisan test

Referências de tecnologias