├── .gitignore ├── index.js ├── lib ├── index.js ├── test-setup.spec.js ├── webpage.js └── webpage.spec.js ├── package.json └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib') 2 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./webpage') 2 | -------------------------------------------------------------------------------- /lib/test-setup.spec.js: -------------------------------------------------------------------------------- 1 | const sinon = require('sinon') 2 | const chai = require('chai') 3 | const sinonChai = require('sinon-chai') 4 | 5 | before(function () { 6 | chai.use(sinonChai) 7 | }) 8 | 9 | beforeEach(function () { 10 | this.sandbox = sinon.sandbox.create() 11 | }) 12 | 13 | afterEach(function () { 14 | this.sandbox.restore() 15 | }) 16 | -------------------------------------------------------------------------------- /lib/webpage.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const fs = require('fs') 4 | const request = require('request') 5 | 6 | function getWebpage (url) { 7 | return new Promise (function (resolve, reject) { 8 | request.get(url, function (err, response, body) { 9 | if (err) { 10 | return reject(err) 11 | } 12 | 13 | resolve(body) 14 | }) 15 | }) 16 | } 17 | 18 | function writeFile (fileContent) { 19 | let filePath = 'page' 20 | return new Promise (function (resolve, reject) { 21 | fs.writeFile(filePath, fileContent, function (err) { 22 | if (err) { 23 | return reject(err) 24 | } 25 | 26 | resolve(filePath) 27 | }) 28 | }) 29 | } 30 | 31 | function saveWebpage (url, filePath) { 32 | return getWebpage(url, filePath) 33 | .then(writeFile) 34 | } 35 | 36 | module.exports = { 37 | saveWebpage 38 | } 39 | -------------------------------------------------------------------------------- /lib/webpage.spec.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const request = require('request') 3 | 4 | const expect = require('chai').expect 5 | 6 | const webpage = require('./webpage') 7 | 8 | describe('The webpage module', function () { 9 | it('saves the content', function * () { 10 | const url = 'google.com' 11 | const content = '