UNPKG

mdlinks-areli10

Version:

Md-Links te ayudará a verificar si los links que estén en los archivos .md sirven o ya están invalidados.

161 lines (148 loc) 5.58 kB
const path= require('path'); const { absolutePath, existRoute, isDirectory, isFile, extnameMd, joinRoutes , mdRoute, readDirectory, readFile, getLinks, getLinksStatus, } = require('../src/index.js'); const fetch = jest.createMockFromModule('node-fetch'); const route = path.resolve('./README.md'); const routeDirectory = path.resolve('prueba'); const manyFiles = ['C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba1.md', 'C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba2.md', 'C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba3.md']; const routedirectory= 'C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba'; const routeFile = 'C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba1.md'; const files = ['prueba1.md', 'prueba2.md','prueba3.md']; const mdLinks={ href: 'https://www.linkedin.com/feed/', text: 'https://www.linkedin.com/feed/', file: path.resolve('C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba2.md'), }; const mdLinksWithStatus = { href: 'https://www.linkedin.com/feed/', text: 'https://www.linkedin.com/feed/', file: path.resolve('C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba2.md'), status: 200, message: 'ok' }; const mdLinksStatusFail = { href: 'https://www.google.com/404', text: 'https://www.google.com/404', file: 'C:/Users/Arel/Documents/GitHub/LIM017-md-links/prueba4.md', status: 404, message: 'fail' }; describe('existeRoute', () => { it('retorna una extensión, ejemplo .txt , .md', () => { expect(existRoute(route)).toBe(true); }); }); describe('absolutePath', () => { it('debe retornar una ruta absoluta', () => { expect(absolutePath('./README.md')).toBe(route); }); }); describe('isDirectory', () => { it('retorna true si la ruta es un directorio', () => { expect(isDirectory(routeDirectory)).toBe(true); }); it('retorna false si la ruta no es un directorio', () => { expect(isDirectory(route)).toBe(false); }); }); describe('isFile', () => { it('retorna true si la ruta es un file', () => { expect(isFile('README.md')).toBe(true); }); it('retorna false si la ruta no es un file', () => { expect(isFile(routeDirectory)).toBe(false); }); }); describe('extnameMd', () => { it('debe retornar true si la extensión es .md', () => { expect(extnameMd(route)).toBe('.md'); }); }); describe('joinRoutes', () => { it('Une dos rutas para retornar una lista de archivos en un array con join_Routes ', () => { expect(joinRoutes ('C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba')).toEqual(manyFiles); }); }); describe('mdRoute', () => { it('Valida directorio, lista los archivos que encuentre y hace la búsqueda de archivos con md_Rout', () => { expect(mdRoute('C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba')).toEqual(manyFiles); }); }); describe('readDirectory', () => { it('Lee directorio en routedirectory', () => { expect(readDirectory(routedirectory)).toEqual(files); }); }); describe('readfile', () => { it('Lee directorio en readFile', () => { expect(readFile(routeFile)).toEqual('hola'); }); }); /*it('Retorna false al no encontrar archivos MD', () => { expect(mdRoute('C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\src\\index.js')).toBe(false); });*/ describe('getLinks', () => { it('retorna un array de solo archivos .md que contengan links con las propiedades de los mismos', () => { expect(getLinks(routeDirectory)).toEqual([mdLinks]) }); }); describe ('getLinksStatus', () => { it('retorna el mismo array de getLinks, pero con el status del link', () =>{ return expect(getLinksStatus([mdLinks])).resolves.toStrictEqual([mdLinksWithStatus]) }); }); describe('getLinksStatus', () => { test('Valida estado de los links con getLinksStatus', () => { fetch.mockImplementation(() => Promise.resolve([{ href: 'https://www.linkedin.com/feed/', text: 'https://www.linkedin.com/feed/', file: path.resolve('C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba2.md'), status: 200, message: 'ok' }])) return getLinksStatus ([{ href: 'https://www.linkedin.com/feed/', text: 'https://www.linkedin.com/feed/', file: path.resolve('C:\\Users\\Arel\\Documents\\GitHub\\LIM017-md-links\\prueba\\prueba2.md'), status: 200, message: 'ok' }]) .then((data) => { expect(data).toEqual([mdLinksWithStatus]) }) }); }); it('Valida estados rechazados de los links con getLinksStatus', () => { fetch.mockImplementation(() => Promise.reject([{ href: 'https://www.google.com/404', text: 'https://www.google.com/404', file: 'C:/Users/Arel/Documents/GitHub/LIM017-md-links/prueba4.md', status: 404, message: 'fail' }])) return getLinksStatus ([{ href: 'https://www.google.com/404', text: 'https://www.google.com/404', file: 'C:/Users/Arel/Documents/GitHub/LIM017-md-links/prueba4.md', status: 404, message: 'fail' }]) .then((data) => { expect(data).toEqual([mdLinksStatusFail]) }) });