Wednesday, June 29, 2022
HomeWordPress DevelopmentComo criar micro serviços - Nível fácil parte 3

Como criar micro serviços – Nível fácil parte 3


Como já dito nos artigos anteriores, criar um sistema baseado em micro serviços não é difícil. Vamos passo a passo e ao closing dessa série, você verá que de fato é simples.

Aqui, vamos criar uma simples API Relaxation Http. Isso não deve ser um mistério. Ter uma Controller com as rotas, uma camada de Companies, conexão com base de dados, tudo muito simples.



Domínio

Vamos iniciar pela camada de domínio. Isso vai garantir que foquemos em regras de negócio e depois nos preocupamos em implementar as rotas e regras de aplicação, que não são pertinentes ao domínio.

Primeiro vamos iniciar nosso projeto.


mkdir users-api && cd users-api

yarn init -y

Enter fullscreen mode

Exit fullscreen mode

Isso já deve gerar nossa pasta e iniciar o package deal.json. Vamos configurar o typescript agora, no terminal execute:


yarn add -D typescript && 

yarn tsc --init

Enter fullscreen mode

Exit fullscreen mode

Isso resolve nossa configuração inicial do typescript. Agora vamos começar com nosso domínio.


mkdir area && contact area/consumer.ts

Enter fullscreen mode

Exit fullscreen mode

Com isso vamos ter nossa entidade de consumer. Antes de começar com a construção do nosso consumer vamos configurar o jest como nosso runtime para testes.

Execute:


yarn add -D jest @sorts/jest ts-jest ts-node

Enter fullscreen mode

Exit fullscreen mode

Após o comando acima, teremos o jest instalado, agora vamos configurá-lo:


yarn jest --init

Enter fullscreen mode

Exit fullscreen mode

Com esse comando o jest inicia o processo de configuração, com isso seu terminal fará algumas perguntas. Vamos às respostas:

  • ✔ Would you want to make use of Jest when working “check” script in “package deal.json”? (y/N)
  • ✔ Would you want to make use of Typescript for the configuration file? (y/N)
  • ✔ Select the check atmosphere that might be used for testing
  • ✔ Would you like Jest so as to add protection experiences? (y/N)
  • ✔ Which supplier needs to be used to instrument code for protection?
  • ✔ Robotically clear mock calls, cases, contexts and outcomes earlier than each check? (y/N)

Agora você pode ver que foi criado um arquivo jest.config.ts. Esse é o arquivo de configuração do jest. Porém, você precisa adicionar uma última configuração:

// tsconfig.json

// ... Emblem depois de export default

export default {

// ... Aqui abaixo.

  rework: {

    "^.+.tsx?$": "ts-jest",

  },

  // ...

Enter fullscreen mode

Exit fullscreen mode

Vamos criar nosso primeiro teste para saber se está tudo correto.

Crie o arquivo consumer.spec.ts (ou execute contact area/consumer.spec.ts) junto com o arquivo consumer.ts

Dentro do arquivo de teste (consumer.spec.ts) vamos digitar o seguinte código:


// consumer.spec.ts

describe("Domínio de usuário", () => {
  it("deve funcionar", perform () {
    count on(true).toBe(true);
  });
});

Enter fullscreen mode

Exit fullscreen mode

Antes de testar, vamos ajustar nosso package deal.json. Vamos adicionar um script. O package deal.json deve ficar assim:

// package deal.json

{
  "identify": "users-api",
  "model": "1.0.0",
  "principal": "index.js",
  "license": "MIT",
  "scripts": {
    "begin": "node index.js",
    "check": "jest"
  },
  "devDependencies": {
    "@sorts/jest": "^28.1.3",
    "jest": "^28.1.1",
    "ts-jest": "^28.0.5",
    "ts-node": "^10.8.1",
    "typescript": "^4.7.4"
  }
}

Enter fullscreen mode

Exit fullscreen mode

Word que adicionamos uma chave scripts e nela temos dois (2) scripts. Um para iniciar a aplicação e outro para testar.

Agora no terminal, executamos:


yarn check

Enter fullscreen mode

Exit fullscreen mode

Esperamos que tudo dê certo. Se aparecer 1 handed em verde, significa que tudo está bem configurado.

A partir de agora, vou explicar o que faremos e o resultado.

Vamos relembrar. Nossas regras de negócio nos dizem que:

Todo usuário deve fornecer um e-mail e uma senha para poder se cadastrar.
Toda atualização do usuário registra a knowledge em que ocorreu.
Sabendo disso, nosso teste de consumer deve ficar assim:

// consumer.spec.ts

import { Consumer } from "./consumer";

describe("Domínio de usuário", () => {
    it("deve fornecer um e-mail e senha em Consumer", perform () {
        count on(
            new Consumer(
                "id-fake",
                "email-fake",
                "password-fake",
                "created_at-fake",
                "updated_at-fake"
            )
        ).toBeTruthy();
    });

    it("deve dar erro se não fornecer e-mail ou senha em Consumer", perform () {
        count on(() => {
            new Consumer(
                "id-fake",
                // Electronic mail vazio
                "",
                "password-fake",
                "created_at-fake",
                "updated_at-fake"
            );
        }).toThrowError("É obrigatório informar um e-mail");

        count on(() => {
            new Consumer(
                "id-fake",
                "email-fake",
                // Senha vazia
                "",
                "created_at-fake",
                "updated_at-fake"
            );
        }).toThrowError("É obrigatório informar uma senha");
    });
});
Enter fullscreen mode

Exit fullscreen mode

Se você tentar executar os testes yarn check deve falhar. Mas agora vamos criar nossa classe de usuário para resolver isso.

// consumer.ts
export class Consumer {
    non-public _user_id: string;
    non-public _email: string;
    non-public _password: string;
    non-public _created_at: string;
    non-public _updated_at: string;

    constructor(
        user_id: string,
        e-mail: string,
        password: string,
        created_at: string,
        updated_at: string
    ) {
        this._user_id = user_id;
        this._email = e-mail;
        this._password = password;
        this._created_at = created_at;
        this._updated_at = updated_at;

        this.validate();
    }

    non-public validate() {
        if (!this._email) {
            throw new Error("É obrigatório informar um e-mail");
        }

        if (!this._password) {
            throw new Error("É obrigatório informar uma senha");
        }
    }
}

Enter fullscreen mode

Exit fullscreen mode

A partir de agora, acompanhe por vídeo. Este artigo ficará imenso caso eu explique tudo. O essencial já está aqui. O que terá no vídeo é a prática do desenvolvimento e insigths.

Em breve

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments