0.2.6 • Published 4 years ago
r-simulate-reqq v0.2.6
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
Props | Method | Type | Required | default |
---|---|---|---|---|
key | All | string | yes | null |
params | GET | object - Optional | yes | { page: 1} |
schema | GET | schemaObject - Required | yes | null |
returnKey | POST | string | no | uuid |
returnData | POST, PUT | schemaObject | no | null |
payload | POST, PUT | object | no | {} |
duration | All | number | no | 1000 |
recordCount | GET | number | no | 10 |
onSuccess | All | function | yes | null |
schemaTypes
function | params |
---|---|
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 |
username |
uuid |
number |
words |
word |
sentence |
paragraph |
fullAddress |
firstName |
lastName |
fullName |
jobTitle |
randomAlphaNumber |
price |
companyName |
accountName |
latitude |
longitude |
contactNumber |