1 | { tmpdir } = require 'os'
|
2 | { join } = require 'path'
|
3 | endl = require '../src/index'
|
4 |
|
5 | waitTime = 20000
|
6 | urls = [
|
7 | 'http://dogancelik.com'
|
8 | 'http://lame.buanzo.org/'
|
9 | 'https://github.com/request/request/archive/master.zip'
|
10 | 'http://codecguide.com/download_k-lite_codec_pack_mega.htm'
|
11 | ]
|
12 |
|
13 | describe 'endl test #1', ->
|
14 | @timeout waitTime
|
15 |
|
16 | it 'should load page', (done) ->
|
17 | extractorInstance = endl.page(urls[0])
|
18 | extractorInstance._scraper.onStatusCode (code) ->
|
19 | code.should.be.equal 200
|
20 | done()
|
21 |
|
22 | it 'should find element', (done) ->
|
23 | extractorInstance = endl.page(urls[0])
|
24 | extractorInstance.find '#gif', (container) ->
|
25 | container._getAttr('alt').should.be.equal ':3'
|
26 | done()
|
27 |
|
28 | it 'should download src', (done) ->
|
29 | extractorInstance = endl.page(urls[0])
|
30 | containerPromise = extractorInstance.find('#gif')
|
31 | containerPromise.then((container) ->
|
32 | attrInstance = container.attr('src')
|
33 | attrInstance.download {filenameMode: {predefined: 'gif.gif'}, directory: tmpdir()}, -> done()
|
34 | )
|
35 |
|
36 | describe 'endl test #2', ->
|
37 | @timeout waitTime
|
38 |
|
39 | qsa = 'a[href^="http://lame.buanzo.org/Lame_"]'
|
40 | downloadOpts = {pageUrlAsReferrer: true, directory: tmpdir(), filenameMode: { urlBasename: true }}
|
41 |
|
42 | it 'should download', (done) ->
|
43 | endl.page(urls[1])
|
44 | .find(qsa)
|
45 | .then (container) ->
|
46 | container.download downloadOpts, -> done()
|
47 |
|
48 | it 'should download all files with .all', (done) ->
|
49 | i = 0
|
50 | endl.page(urls[1])
|
51 | .find(qsa)
|
52 | .then (container) ->
|
53 | container.all().forEach (attr) ->
|
54 | attr.download downloadOpts, ->
|
55 | i++
|
56 | done() if i == 4
|
57 |
|
58 | describe 'endl test #3', ->
|
59 | @timeout waitTime
|
60 |
|
61 | it 'should download and unzip', (done) ->
|
62 | endl.file(urls[2])
|
63 | .download({pageUrlAsReferrer: true, filenameMode: { contentDisposition: true }, directory: tmpdir()})
|
64 | .extract {to: join(tmpdir(), '/unzip'), cd: 'request-master', fileGlob: '*.js', maintainEntryPath: false}, (extracted) ->
|
65 | if extracted.length == 0 then throw new Error('Zip is empty?')
|
66 | done()
|
67 |
|
68 | describe 'endl test #4', ->
|
69 |
|
70 | it 'should use previousUrl', (done) ->
|
71 | endl.page(urls[3])
|
72 | .find('a[href^="http://www.majorgeeks.com/"]')
|
73 | .then (container) ->
|
74 | container.page({ pageUrlAsReferrer: true })
|
75 | .find('a[href*="getmirror/k_lite_mega_codec_pack"]',
|
76 | (container) ->
|
77 | referer = container._scraper.scraper.response.request.headers.referer
|
78 | if referer == urls[3]
|
79 | done()
|
80 | else
|
81 | throw new Error "Referrer is not initial URL: #{referer}"
|
82 | )
|
83 |
|
84 | describe 'endl test #5', ->
|
85 | @timeout waitTime
|
86 |
|
87 | it 'should parse json', (done) ->
|
88 | endl.load(join(__dirname, 'test.json'), null, -> done())
|