nshimiye / react-mock

Combining the power of Pretenderjs and Fakerjs
MIT License
1 stars 0 forks source link
fakerjs mocking-library pretenderjs

React Mock

styled with prettier Build Status Coverage Status Dev Dependencies Greenkeeper badge Donate

Mocking api calls from React Applications, using Pretenderjs and Fakerjs.

Simple Example usage

import { Server, Faker, uid } from 'react-mock'
const endPoint = '/api/v1/todos'

const todoSchema = {
  author: Faker.internet.email(),
  content: () => Faker.lorem.sentence(),
  createdAt: () => Faker.date.past()
}

const requestHandler = (request, generator) => {
  const todoList = generator.next(10, todoSchema);
  return [200, { 'Content-Type': 'application/json' }, JSON.stringify(todoList)];
}

Server.mockGet(endPoint, requestHandler)
Server.on() // to start mocking /api/v1/todos API
axios.get('/api/v1/todos').then(({ data }) => {
  // data is an array of 10 todo objects
})

Real use case

// <app-root>/src/mock-server

import { Server, Faker, uid } from 'react-mock'

const apiRoute = '/api/v1/guides'
const requestHandler = (request, generator) => {
  const guides = generator.next(10); // @returns { <id1>: schema1, <id2>: schema2 }
  // const error = generator.error();
  return [200, { 'Content-Type': 'application/json' }, JSON.stringify(guides)];
}

const schema = {
  description: Faker.lorem.sentence(),
  createdAt: Faker.date.past(),
  favoredCount: Faker.random.number(),
  isPublic: random.boolean(),
  author: {
    id: uid.next(),
    name: Faker.name.findName(),
    picture: Faker.internet.avatar()
  }
};

const errorFormat = {
  message: Faker.lorem.sentence()
}

Server.mockGet(apiRoute, requestHandler, schema, errorFormat)

Server.on() // @returns Promise that resolves with null or rejects with Error
// Server.off()