@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
58 lines (47 loc) • 1.67 kB
JavaScript
import { Image } from "../Image";
import nock from "nock";
import fs from "fs";
import path from "path";
const testImagePath = path.resolve(__dirname, "./image.jpg");
const testImage = fs.readFileSync(testImagePath).toString();
const base64TestImage = Buffer.from(testImage).toString("base64");
const prefixedWithBase64 = `data:image/png;base64,${base64TestImage}`;
const imageUrl = "http://lorempixel/400/200";
const errorUrl = "http://error/fail";
describe("Image", () => {
beforeEach(() => {
nock("http://lorempixel").persist().get("/400/200").reply(200, testImage);
nock("http://error")
.persist()
.get("/fail")
.reply(404, new Error("image doesn't exist"));
});
it("loads the image, and provides it when it is downloaded", (done) => {
const handler = (_image) => {
expect(_image).toEqual(image);
expect(image.ready).toBe(true);
expect(image.url).toEqual(imageUrl);
expect(image.get()).toEqual(prefixedWithBase64);
expect(image.getUri()).toEqual({ uri: prefixedWithBase64 });
done();
};
const errorHandler = (error) => {
expect(error).toBeUndefined();
done();
};
const image = new Image(imageUrl)
.on("ready", handler)
.on("error", errorHandler);
expect(image.ready).toBe(false);
expect(image.url).toEqual(imageUrl);
expect(image.get()).toBe(null);
expect(image.getUri()).toBe(null);
});
it("invokes the error handler if something wrong happened", (done) => {
const errorHandler = (error) => {
expect(error).toMatchSnapshot();
done();
};
new Image(errorUrl).on("error", errorHandler);
});
});