Browse Source

add images directory test

fix-broken-scrape
Jørgen Lien Sellæg 6 years ago
parent
commit
4768e99d4c
  1. 15
      src/logic.js
  2. 1
      src/scrape.js
  3. 47
      tests/create_images_directory.test.js

15
src/logic.js

@ -7,6 +7,8 @@ const page_url = (page_id) => `https://www.facebook.com/${page_id}`;
const page_events_url = (page_id) => page_url(page_id) + '/events/';
const fs = require('fs').promises;
const filesystem = require('fs');
const gm = require('gm').subClass({ imageMagick: true });
const parse_output = (argv) => {
@ -122,8 +124,17 @@ const get_city_name = (event) =>
const get_event_host = (event) =>
pathOr('', 'event_place.contextual_name'.split('.'), event);
const create_images_directory = (images_directory) =>
fs.mkdir(images_directory, { recursive: true }).catch(console.error);
const create_images_directory = (images_directory) => {
if (images_directory === null || images_directory === undefined) {
return Promise.reject('Image path was not set');
}
if (!filesystem.existsSync(images_directory)) {
return fs.mkdir(images_directory, { recursive: true }).catch(console.error);
}
return Promise.resolve();
};
const read_previous_events = (path) => {
if (path !== null) {

1
src/scrape.js

@ -2,7 +2,6 @@ const puppeteer = require('puppeteer');
const { pathOr, maxBy } = require('ramda');
const path = require('path');
const fs = require('fs').promises;
const filesystem = require('fs');
const { graphql_endpoint } = require('./constants');
const { parse_args, create_images_directory } = require('./logic');

47
tests/create_images_directory.test.js

@ -1,5 +1,50 @@
import { create_images_directory } from '../src/logic';
beforeEach(jest.restoreAllMocks);
const fs = require('fs').promises;
const filesystem = require('fs');
describe('create_images_directory', () => {
it('', () => {});
it('creates images directory', () => {
const mock = jest
.spyOn(fs, 'mkdir')
.mockImplementation(() => Promise.resolve());
jest.spyOn(filesystem, 'existsSync').mockImplementation(() => false);
const dir = 'new directory';
expect.assertions(2);
return create_images_directory(dir).then(() => {
expect(mock).toHaveBeenCalledTimes(1);
expect(mock).toHaveBeenCalledWith(dir, { recursive: true });
});
});
it('it skips creating images directory', () => {
const fs_mock = jest
.spyOn(fs, 'mkdir')
.mockImplementation(() => Promise.resolve());
const exist_mock = jest
.spyOn(filesystem, 'existsSync')
.mockImplementation(() => true);
const dir = 'new directory';
expect.assertions(3);
return create_images_directory(dir).then(() => {
expect(fs_mock).toHaveBeenCalledTimes(0);
expect(exist_mock).toHaveBeenCalledTimes(1);
expect(exist_mock).toHaveBeenCalledWith(dir);
});
});
[undefined, null].forEach((dir) =>
it('throws if directory is not set', () => {
const mock = jest
.spyOn(filesystem, 'existsSync')
.mockImplementation(() => true);
expect.assertions(2);
return create_images_directory(dir).catch((error) => {
expect(mock).toHaveBeenCalledTimes(0);
expect(error).toEqual('Image path was not set');
});
}),
);
});

Loading…
Cancel
Save