Gera entidades de formulários (usuários, produtos, categorias etc) e envia para o body da requisição post de sua API

Overview

All Contributors

👥 EntityFactory 🏭

Gera entidades de formulários (usuários, produtos, categorias etc) e envia para o body da requisição post de sua API


🗳️ Dependencias


☀️ Get Started

> git init
> git clone https://github.com/Noctho01/EntityFactory.git
> npm install

O diretorio deste programa está em /src, dentro voce encontrara o arquivo index.js que possui um pequeno codigo que vai automatizar o envio das requisiçoes POST para o endereço endpoint especificado.


🦾 Executando programa

em um terminal windows com cross-env...
a dependencia cross-env permite que seja possivel a declaração de varias variaveis de ambiente no CLI do windows

> set SCHEME_ENV=usuario&& set QUANTITY_ENV=50&& set ROUTE_ENV=http://localhost:3000/registrar/usuario&& node src/index.js

em um terminal linux...

$ sudo SCHEME_ENV=usuario QUANTITY_ENV=50 ROUTE_ENV=http://localhost:3000/registrar/usuario node src/index.js

Dentro do diretorio do programa (fora de src) escreva este comando a cima. É preciso declarar as variaveis de ambiente para que o EntityFactor seja executado corretamente.

Variaveis de Ambiente:

  • SCHEME_ENV: recebe o nome do esquema a ser usado
  • QUANTITY_ENV: recebe o numero de entidades que seram criadas
  • ROUTE_ENV: recebe a url da rota POST que recebera os dados


  • 🔧 ⚙️ Configurando

    O proposito final deste programa é aumotaizar o preenchimento de aplicações json usadas para enviar dados no corpo da requisição (atualmente suporta apenas o formato JSON). Para isso EntityFactory faz juiz ao nome criando (fabricando) entidades especificadas pelo desenvolvedor, assim criando dados ficticios para serem enviados ao corpo da requisição POST/PUT/PATH... A chave para que EntityFactory crie essas entidades está nos esquemas

    📄 Esquemas

    Encarregados de armazenar as regras de negocio da entidade, especificando quais são os campos para os fomularios/json e as regras para gerar seu valor aleatoriamente.


    📝 Criando um esquema

    dentro do diretorio /src/schemes, crie um arquivo com o nome da entidade que pretende criar
    Exemplo: user.js



    Este arquivo deve exportar um objeto que possua as regras (contrato), este objeto é o esquema da sua entidade

    module.exports = {
      name: {
        require: false,
        models: ['Jhon', 'Mike', 'Sarah', 'Lessie']
      },
      email: {
        require: true,
        type: 'email',
        description: {
          minMax: [5, 10],
          include: ['aeioubdc', '123'],
          domainModels: ['gmail', 'hotmail', 'outlook']
        }
      },
      password: {
        require: true,
        type: 'string',
        description: {
          minMax: [8, 15],
          include: 'abc123',
          space: false,
          case: 'textCase'
        }
      }
    }
    
    // possivel resultado:
    // {
    //   name: 'Sarah',
    //   email: '[email protected]',
    //   password: 'A2ccb1a3221'
    // }

    require

    especifica se o campo é obrigatorio ou não, caso não seja, o campo pode ser ou não criado, a decisao é feita aleatoriamente

    type

    usando DataTypes, deve informar qual será o tipo do valor deste campo

    • email ==> [email protected]
    • cpf ==> gera um cpf valido sem pontos "xxxxxxxxxxx"
    • date ==> 1999/01/12 gera apenas datas, não gera horarios
    • string ==> valores em string, podem conter letras, numeros ou caracteres especiais (isso é determinado na propriedade include de string)
    • inter ==> valores inteiros do tipo numero
    • float ==> valores float do tipo numero
    • booleano ==> valores booleanos true, false || 1, 0

    description

    Especifica as regras aplicadas naquele campo, porem elas seguem o seu tipo. Casa tipo de dados possui um grupo especifico de descriços

    Campos de description

    campo type valores função
    space string Modelos true/false or null especifica se o texto na string deve conter espaços entre palavras ex: space:true >> "Vitoria Reges" / space:false >> "VitoriaReges"
    minMax string/inter/float [valMin, valMax] valMin: valor minimo que pode ser gerado pelo programa valMax: valor maximo que pode ser gerado pelo programa (obs: para o tipo string possui a funcionalidade de limitar o tamanho da string)
    leng string numero inteiro valor fixo do tamanho da string
    case string 'camiCase', 'upperCase', 'lowerCase', 'textCase' valor em string dos tipos de case da string ex case: camiCase || "camiCase" >> "FubarDeMilho"
    include string/email tipo email: ['abc', '123', '...'] tipo string: 'abc123...' campo obrigatorio, especifica os caracteres que serão usados para gerar o valor do campo ex: include: "bo15" >> "b1oob55" include: ["bo", "15"] >> [email protected]
    dominionsModels email ['gmail', 'hotmail', 'yahoo', '...'] campo obrigatorio para tipo email, especifica em um array os host de email
    yMinMax date [anoMinimo, anoMaximo] especifica o ano minimo e maximo a ser gerado pelo programa ex: yMinMax: [2002, 2004] >> 2002 || 2003 || 2004
    mMinMax date [mesMinimo, mesMaximo] especifica o mes minimo e maximo a ser gerado pelo programa ex: mMinMax: [1, 12] >> 8 || ...
    dMinMax date [diaMinimo, diaMaximo] especifica o dia minimo e maximo a ser gerado pelo programa ex: dMinMax: [1, 31] >> 19 || ...


    🕋 Modelos

    Os modelos são valores que voce estabelece para que sejam escolhidos aleatoriamente para aquele campo em especifico, campos que possuem modelos não precisam ter um tipo, apenas usando a propriedade modelos e nele passando um array com os possiveis valores a serem escolhidos.
    Dentro de /src/models voce deve criar um arquivo chamado models.js

    // Exemplo de um arquivo modelos.js
    
    module.exports = {
       // Modelos aqui ...
       nomes: {
           primeiro: [
               'Gabriel', 'Gustavo', 'Pedro', 'Maria',
               'Rafael', 'Lucas', 'Alex', 'Barbara',
               'Natalia', 'Geni', 'Jose', 'Antonio',
               'Marcia'
           ],
           segundo: [
               'Dos Santos', 'Da Silva', 'Alencar',
               'De Nobrega', 'Diniz', 'Oliveira',
               'Dos Anjos', 'Gomes', 'Cunha',
               'Souza', 'Rodrigues'
           ]
       },
       emails: [
           'gmail', 'hotmail', 'alura',
           'yahoo', 'outlook', 'apple'
       ],
       paises: [
           'Brasil', 'Estados Unidos',
           'Argentina', 'China'
       ],
    
    }

    O mesmo deve exportar um objeto que possua chaves que voce possa usar como referencia, e seus valores devem ser arrays ou objetos com arrays. os valores dentro de cada array seram usados pelo EntityFactory para gerar strigns com valores aleatorios baseado nos modelos.

    📄 🕋 Esquemas com Modelos

    const Models = require('../models/models_examples')
    
    module.exports = {
      nome: {
        require: true,
        space: true,
        models: Models.nomes || ['Pedro', 'Carla', 'Marcos', 'Felipe', 'Angela'] || { primeiroNome: ['Pedro', 'Marcos'], segundoNome: ['Da Silva', 'Dos Santos'] }
      },
      tecnologias: {
        require: true,
        isArray: true,
        models: Models.tecnologias || {
          ['Java', 'Python', 'JavaScript', 'Go', 'TypeScript', 'PHP'],
          ['MySql', 'MongoDb', 'Postgree', 'SqlServer'],
          ['AWS', 'Google Cloud', 'Azure', 'Heroku'],
        }
      }
    }
    
    // resultado possivel:
    // {
    //   nome: "Pedro Da Silva",
    //   tecnologias: ['Python', 'MySql', 'Azure']
    // }

    Na primeira linha importamos um modulo que possui os Modelos de dados que voce deve especificar em /src/modelos/modelo.js

    como dito antes, ao criar um campo que utiliza modelos, não é informado o tipo do mesmo, require e space possuem a mesma função em campos tipados porem space não é uma propriedade de description quando se trata de um campo com modelos.

    veja tambem que no segundo campo 'tecnologias', temo a propriedade isArray.
    ela diz ao EntityFactory que aquele campo é um array, assim voce pode definir o tamanho do array de uma maneira simples. Voce precisa especificar um modelo do tipo objeto e o numero de chaves sera o numero do tamanho deste array.
    exemplo:

    // esquema com um campo do tipo array
    const frutas = {
      require: true,
      isArray: true,
      models: {
        alimentosChave1: ['Banana', 'Melancia', 'Melão', 'Maçã'],
        alimentosChave2: ['Amora', 'Uva', 'Mnga', 'Abacaxi'],
        alimentosChave3: ['Açaí', 'Abacate', 'Laranja', 'Morando'],
        alimentosChave4: ['Acerola', 'Cacau', 'Cajá', 'Caqui']
      }
    }
    
    // possivel resultado:
    // {
    //   frutas: ['Melancia', 'Uva', 'Açai', 'Caqui']
    // {

    como foram declaras 4 chaves no objeto em models, o resultado será um array com 4 campos

    Contributors

    Thanks goes to these wonderful people (emoji key):


    Vinicius dos Santos Rodrigues

    🚇 ⚠️ 💻

    This project follows the all-contributors specification. Contributions of any kind welcome!

    You might also like...

    A Javascript library for working with Audio. It provides a consistent API for loading and playing audio on different browsers and devices. Currently supports WebAudio, HTML5 Audio, Cordova / PhoneGap, and a Flash fallback.

    SoundJS SoundJS is a library to make working with audio on the web easier. It provides a consistent API for playing audio in different browsers, inclu

    Dec 31, 2022

    HTML5 audio or video player with support for MP4, WebM, and MP3 as well as HLS, Dash, YouTube, Facebook, SoundCloud and others with a common HTML5 MediaElement API, enabling a consistent UI in all browsers.

    HTML5 <audio> or <video> player with support for MP4, WebM, and MP3 as well as HLS, Dash, YouTube, Facebook, SoundCloud and others with a common HTML5 MediaElement API, enabling a consistent UI in all browsers.

    One file. Any browser. Same UI. Author: John Dyer http://j.hn/ Website: http://mediaelementjs.com/ License: MIT Meaning: Use everywhere, keep copyrigh

    Jan 8, 2023

    A Node JS Express/Serverless demo application that creates a slideshow video using the Pexels image library and Shotstack video editing API.

    Shotstack Pexels Slideshow Video Demo This project demonstrates how to use the Shotstack cloud video editing API to create a video using an HTML form

    Dec 9, 2022

    Easiest medium to use buttons with any discord API wrapper

    Easiest medium to use buttons with any discord API wrapper

    Discord Buttons Plugin Easiest medium to use buttons with any discord API wrapper /* Generate 1st Button with "Yes" lable on it */ const button1

    May 14, 2022

    A URL Shortener That Allow Users To Interact With Its API Through A Discord Bot

    Shortem A URL Shortener That Allow Users To Interact With Its API Through A Discord Bot About Supports Multiple Databases Performant Uses discord.js v

    Sep 1, 2022

    Spotify 2.0 com NextJS 12 - MIddleware, TailwindCSS, Spotify API, NextAuth, Recoil

    Spotify 2.0 com NextJS 12 - MIddleware, TailwindCSS, Spotify API, NextAuth, Recoil

    Spotify Clone A spotify clone made with NextJS 12, TailwindCSS, NextAuth, Spotify API, Recoil Lessons Learned Setting up NextJS with Tailwind. NextAut

    Mar 14, 2022

    Spotify clone using Next.js, Spotify API, Tailwind, NextAuth, Recoil

    Next.js + Tailwind CSS Example This example shows how to use Tailwind CSS (v2.2) with Next.js. It follows the steps outlined in the official Tailwind

    Dec 25, 2021

    Web Application that represents a music player using the spotify API, React, JS, CSS, HTML, nodeJS, Firebase, material-ui, JSON and other technologies. Made by Yohan Hmaiti

    Web Application that represents a music player using the spotify API, React, JS, CSS, HTML,  nodeJS, Firebase, material-ui, JSON and other technologies. Made by Yohan Hmaiti

    Web Application that represents a music player using the spotify API, React, JS, CSS, HTML, nodeJS, Firebase, material-ui, JSON and other technologies. Made by Yohan Hmaiti

    Jan 8, 2022

    A simple & easy2use API for obtaining information about a discord user, discord bot or discord guild and their use for some purpose on websites!

    discord-web-api A simple & easy2use API for obtaining information about a discord user, discord bot or discord guild and their use for some purpose on

    Jun 28, 2022
    Comments
    • campos do tipo string não seguem o tamanho especificado

      campos do tipo string não seguem o tamanho especificado

      campos do tipo string não seguem o tamanho especificado caso seja um numero impar

      // scheme
      name: {
         require: true,
         type: 'string',
         description: {
            include: 'abcd123',
            space: false,
            case: 'upperCase',
            leng: 7  // < -- name length = 7
         }
      }
      
      // result ex = "ac1db3cd"  length = 8
      
      bug 
      opened by Noctho01 0
    Releases(v0.1.2)
    Owner
    Vinicius dos Santos Rodrigues
    Autodidata - Desenvolvimento Web - Back-End - Junior
    Vinicius dos Santos Rodrigues
    an Advanced Verification Bot for Discord, has dashboard, online captcha etc.

    Verification Bot an Advanced Verification Bot for Discord, has dashboard, online captcha etc. Info & Credits This bot was made by legendjs#0001 If you

    legend-js 33 Aug 30, 2022
    SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

    WordPress-Plugin-SrsPlayer SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc. Usage First, you should get your own video stream

    ossrs 3 Jul 27, 2022
    SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

    SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

    ossrs 12 Oct 15, 2022
    null 8 Nov 4, 2022
    Um simples bot para o Telegram que baixa vídeos e áudios do TikTok & outras funcionalidades

    Kelle Estella (Telegram) Um simples bot para o Telegram que baixa vídeos e áudios do TikTok & outras funcionalidades. Clique aqui para utilizá-lo. Com

    Luis Gabriel Araújo 3 Apr 20, 2022
    Un mod-mail para Discord de gran calidad, completamente customizable y facil de usar!

    ?? - Discord Mod Mail Un mod-mail para Discord de gran calidad, completamente customizable y facil de usar! ?? - Configuracion Ir al archivo config.js

    null 3 Nov 11, 2022
    Script para enviar o Roteiro do filme Shrek, linha por linha, no WhatsApp v2 atualizado 2022

    SendScriptWhatsApp V2 - 2022 Código para enviar o Script inteiro de Shrek para seus amigos ou grupos do WhatsApp Utilização Abra shrekSendScriptV2.js

    Alestan 15 Dec 6, 2022
    Simple WhatsApp MD BOT. Get a API key from ZEN API

    ALIEN ALFA-MD Contact Me: ❗❗FORK THIS BEFORE PROCEEDING Use This Button To Fork Now Scan QR Code For Session Change Session In Github ⚠️ Session Chang

    TOXIC ALIEN 46 Dec 28, 2022
    Rule YouTube, Soundcloud and Vimeo player with one API

    Polyplayer Polyplayer allows you to rule YouTube's, Soundcloud's and Vimeo's player using one API. Features Playing, pausing, stopping Seek to absolut

    Marius 41 Sep 24, 2022
    HTML5

    One file. Any browser. Same UI. Author: John Dyer http://j.hn/ Website: http://mediaelementjs.com/ License: MIT Meaning: Use everywhere, keep copyrigh

    MediaElement.js 8k Dec 27, 2022