NOTE: This repo is no longer in use. Please use https://github.com/pepfar-datim/javascript-libraries instead.
Repo Owner: Ben Guaraldi @benguaraldi
This is a slim layer processing HTTP calls from your front-end to your server. It comes with:
- Response caching to make tests ultra-fast
- Response mocking so you don't have to change server data with each tests. Makes tests so much faster and parallel friendly.
- Easy switching of users and authentication.
npm i @pepfar-react-lib/http-toolsBefore doing any HTTP calls you have to register your server base URL and also provide information in which environment you are (test,development,production). You can simply copy the line below:
import {apiInit} from "@pepfar-react-lib/http-tools";
apiInit('http://www.google.com/',process.env.NODE_ENV);Simple GET using a promise:
import {getData} from "@pepfar-react-lib/http-tools";
function getUsers():Promise<User[]> {
return getData('/users').then(users=>{
//do something
return users;
});
}Simple get using await:
import {getData} from "@pepfar-react-lib/http-tools";
async function getUsers():Promise<User[]>{
let users = await getData('/users');
// do something
return users;
}Now imagine you are writing a test and no matter what's in the database you want the result of GET from /users to return two exact objects. It's as simple as:
import {registerGetMock} from "@pepfar-react-lib/http-tools";
const mockedResponse = [{name: 'John', name: 'Bob'}];
test('Should receive two users', async ()=> {
registerGetMock('/users', mockedResponse);
// now you can test your app and when your front-end code queries `/users` it will receive the `mockedResponse` from above
screen.getByText('John');
screen.getByText('Bob');
});