0.2.0 • Published 3 years ago

simulate-reqq v0.2.0

Weekly downloads
8
License
MIT
Repository
-
Last release
3 years ago

simulate-reqq

simulate request from api & data response

Install the package

npm install simulate-reqq

Import the package

import simulate, { schemaTypes, dataTypes } from 'simulate-reqq';

simulate.get({
  key: 'foo', // key for react-reqq
  params: { page: 5 },
  schema: schemaTypes.arrayObjects({
    uuid: dataTypes.uuid(),
  }), // schema for return data
  onSuccess: res => {
    console.log(res);
  },
  recordCount: 1, // number of return data (default 10)
  duration: 1000, // duration for request (default 1000)
});

Response:

{
  data: [
    {
      uuid: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
    },
  ],
  meta: {
      currentPage: 1,
      totalPage: 10,
      totalRecord: 10,
    }
}
payload = {
  name: 'John',
};

simulate.post({
  key: 'foo',
  payload,
  returnKey: 'id',
  // you can also add additional return data if you want
  // just use schema just like on "get"
  returnData: schemaTypes.shape({
    additional: 1,
  }),
  onSuccess: res => {
    console.log(res);
  },
});

Response:

{
  data: [
    {
      id: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
      name: 'John',
      additional: 1,
    },
  ],
  message: 'Record Added'
}

Nested schema

You can do nested schema or returnData for post & put if you want to:

schema: schemaTypes.arrayObjects({
  uuid: dataTypes.uuid(),
  name: schemaTypes.shape({
    first: dataTypes.firstName(),
    last: dataTypes.lastName(),
    strings: schemaTypes.arrayString(2),
  }),
});

Result

  data: {
    uuid: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
    name: {
      first: 'John',
      last: 'Last',
      strings: ['this is foo', 'this is bar'] //random strings
    }
  }

Props

PropsMethodTypeRequireddefault
keyAllstringyesnull
paramsGETobject - Optionalyes{ page: 1}
schemaGETschemaObject - Requiredyesnull
returnKeyPOSTstringnouuid
returnDataPOST, PUTschemaObjectnonull
payloadPOST, PUTobjectno{}
durationAllnumberno1000
recordCountGETnumberno10
onSuccessAllfunctionyesnull

schemaTypes

functionparams
arrayObjects(object: required , count: optional(for nested only) )
arrayNumber(count: optional(for nested only) )
arrayStrings(count: optional(for nested only) )
shape(object: required )
random(array of numbers, strings, or object: required

dataTypes

function
image
street
city
zip
state
country
productName
color
datePast
dateFuture
email
username
uuid
number
words
word
sentence
paragraph
fullAddress
firstName
lastName
fullName
jobTitle
randomAlphaNumber
price
companyName
accountName
latitude
longitude
contactNumber
0.2.0

3 years ago

0.1.0

3 years ago