analiaklein-md-links
Version:
herramienta de línea de comando (CLI) así como tu propia librería (o biblioteca - library) en JavaScript.
79 lines (70 loc) • 2.44 kB
JavaScript
const {
statsLinks,
statsValidateLinks,
validateLinks,
} = require("../utils.js");
require("jest-fetch-mock").enableMocks();
describe("statsValidateLinks", () => {
beforeEach(() => {
fetch.resetMocks();
});
it("debe retornar stats con formato correcto", () => {
const links = [
{ url: "https://es.wikipedia.org/wiki/Markdown", ok: "ok" },
{ url: "https://nodejs.org/", ok: "ok" },
{
url: "https://user-images.githubusercontent.com/110297/42118443-b7a5f1f0-7bc8-11e8-96ad-9cc5593715a6.jpg",
ok: "ok",
},
{ url: "https://wwww.google.com", ok: "fail" },
{ url: "https:www.malformada.com", ok: "fail" },
{ url: "https:www.malformada.com", ok: "fail" },
{ url: "https://wwww.youtube.com", ok: "fail" },
{ url: "https:wwww.analiaklein.com", ok: "fail" },
];
const result = statsLinks(links);
expect(result.Total).toBe(8);
expect(result.Unique).toBe(7);
});
it("deberia retornar stats con formato correcto y validaciones", () => {
const links = [
{ url: "https://es.wikipedia.org/wiki/Markdown", ok: "ok" },
{ url: "https://nodejs.org/", ok: "ok" },
{
url: "https://user-images.githubusercontent.com/110297/42118443-b7a5f1f0-7bc8-11e8-96ad-9cc5593715a6.jpg",
ok: "ok",
},
{ url: "https://wwww.google.com", ok: "fail" },
{ url: "https:www.malformada.com", ok: "fail" },
{ url: "https:www.malformada.com", ok: "fail" },
{ url: "https://wwww.youtube.com", ok: "fail" },
{ url: "https:wwww.analiaklein.com", ok: "fail" },
];
const result = statsValidateLinks(links);
expect(result.Total).toBe(8);
expect(result.Unique).toBe(7);
expect(result.Broken).toBe(5);
});
it("debe fallar la validacion del link", () => {
fetch.mockReject(() => Promise.reject("API is down"));
const link = { url: "https://noexiste.link" };
validateLinks(link).then((result) => {
expect(result).toEqual({
url: "https://noexiste.link",
ok: "fail",
status: "Error",
});
});
});
it("debe pasar la validacion del link", () => {
fetch.mockResponseOnce(JSON.stringify({ status: 200 }));
const link = { url: "https://existe.link" };
validateLinks(link).then((result) => {
expect(result).toEqual({
url: "https://existe.link",
ok: "ok",
status: 200,
});
});
});
});