History

Simplify file scraper setup; scrape files in the "docs/[slug]" directory

Thibaut Courouble committed 7 years ago

Commit bf003661 parent 91753ce22 files · +124 −104Browse files

Showing the changes to test (1 of 22 files). Show all

Unified · Split

test/lib/docs/core/scrapers/file_scraper_test.rb+89−47
@@ -2,16 +2,23 @@ require 'test_helper' · 1 unmodified line
22 require 'docs'
33
44 class FileScraperTest < MiniTest::Spec
5+ ROOT_PATH = File.expand_path('../../../../../../', __FILE__)
6+
57 class Scraper < Docs::FileScraper
6− self.dir = '/'
78 self.html_filters = Docs::FilterStack.new
89 self.text_filters = Docs::FilterStack.new
10+
11+ version 'version' do; end
912 end
1013
1114 let :scraper do
1215 Scraper.new
1316 end
1417
18+ let :versioned_scraper do
19+ Scraper.versions.first.new
20+ end
21+
1522 let :response do
1623 OpenStruct.new body: 'body', url: Docs::URL.parse(Scraper.base_url)
1724 end
@@ -22,9 +29,16 @@ class FileScraperTest < MiniTest::Spec · 4 unmodified lines
2229 end
2330 end
2431
32+ describe "#source_directory" do
33+ it "returns the directory at docs/[slug]" do
34+ assert_equal File.join(ROOT_PATH, 'docs', 'scraper'), scraper.source_directory
35+ assert_equal File.join(ROOT_PATH, 'docs', 'scraper~version'), versioned_scraper.source_directory
36+ end
37+ end
38+
2539 describe "#request_one" do
2640 let :path do
27− File.join(Scraper.dir, 'path')
41+ 'path'
2842 end
2943
3044 let :result do
@@ -35,20 +49,34 @@ class FileScraperTest < MiniTest::Spec · 4 unmodified lines
3549 stub(scraper).read_file
3650 end
3751
38− it "reads a file" do
39− mock(scraper).read_file(path)
40− result
52+ context "when the source directory doesn't exist" do
53+ it "raises an error" do
54+ assert_raises Docs::SetupError do
55+ result
56+ end
57+ end
4158 end
4259
43− describe "the returned response object" do
44− it "has a #body" do
45− stub(scraper).read_file { 'body' }
46− assert_equal 'body', result.body
60+ context "when the source directory exists" do
61+ before do
62+ stub(scraper).assert_source_directory_exists
63+ end
64+
65+ it "reads a file" do
66+ mock(scraper).read_file(path)
67+ result
4768 end
4869
49− it "has a #url" do
50− assert_equal path, result.url.to_s
51− assert_instance_of Docs::URL, result.url
70+ describe "the returned response object" do
71+ it "has a #body" do
72+ stub(scraper).read_file { 'body' }
73+ assert_equal 'body', result.body
74+ end
75+
76+ it "has a #url" do
77+ assert_equal path, result.url.to_s
78+ assert_instance_of Docs::URL, result.url
79+ end
5280 end
5381 end
5482 end
@@ -58,49 +86,63 @@ class FileScraperTest < MiniTest::Spec · 3 unmodified lines
5886 %w(one two)
5987 end
6088
61− it "requests the given url" do
62− mock(scraper).request_one('url')
63− scraper.send(:request_all, 'url') {}
64− end
65−
66− it "requests the given urls" do
67− requests = []
68− stub(scraper).request_one { |url| requests << url; nil }
69− scraper.send(:request_all, urls) {}
70− assert_equal urls, requests
71− end
72−
73− it "yields the responses" do
74− responses = []
75− stub(scraper).request_one { |url| urls.index(url) }
76− scraper.send(:request_all, urls) { |response| responses << response; nil }
77− assert_equal (0...urls.length).to_a, responses
89+ context "when the source directory doesn't exist" do
90+ it "raises an error" do
91+ assert_raises Docs::SetupError do
92+ scraper.send(:request_all, urls) {}
93+ end
94+ end
7895 end
7996
80− context "when the block returns an array" do
81− let :next_urls do
82− %w(three four)
97+ context "when the source directory exists" do
98+ before do
99+ stub(scraper).assert_source_directory_exists
83100 end
84101
85− let :all_urls do
86− urls + %w(three four)
102+ it "requests the given url" do
103+ mock(scraper).request_one('url')
104+ scraper.send(:request_all, 'url') {}
87105 end
88106
89− it "requests the returned urls" do
107+ it "requests the given urls" do
90108 requests = []
91− stub(scraper).request_one { |url| requests << url; url }
92− scraper.send(:request_all, urls) { [next_urls.shift].compact }
93− assert_equal all_urls, requests
109+ stub(scraper).request_one { |url| requests << url; nil }
110+ scraper.send(:request_all, urls) {}
111+ assert_equal urls, requests
94112 end
95113
96− it "yields their responses" do
114+ it "yields the responses" do
97115 responses = []
98− stub(scraper).request_one { |url| all_urls.index(url) }
99− scraper.send :request_all, urls do |response|
100− responses << response
101− [next_urls.shift].compact
116+ stub(scraper).request_one { |url| urls.index(url) }
117+ scraper.send(:request_all, urls) { |response| responses << response; nil }
118+ assert_equal (0...urls.length).to_a, responses
119+ end
120+
121+ context "when the block returns an array" do
122+ let :next_urls do
123+ %w(three four)
124+ end
125+
126+ let :all_urls do
127+ urls + %w(three four)
128+ end
129+
130+ it "requests the returned urls" do
131+ requests = []
132+ stub(scraper).request_one { |url| requests << url; url }
133+ scraper.send(:request_all, urls) { [next_urls.shift].compact }
134+ assert_equal all_urls, requests
135+ end
136+
137+ it "yields their responses" do
138+ responses = []
139+ stub(scraper).request_one { |url| all_urls.index(url) }
140+ scraper.send :request_all, urls do |response|
141+ responses << response
142+ [next_urls.shift].compact
143+ end
144+ assert_equal (0...all_urls.length).to_a, responses
102145 end
103− assert_equal (0...all_urls.length).to_a, responses
104146 end
105147 end
106148 end
@@ -126,13 +168,13 @@ class FileScraperTest < MiniTest::Spec · 19 unmodified lines
126168 scraper.send :read_file, 'file'
127169 end
128170
129− it "returns the file's content when the file exists" do
130− stub(File).read('file') { 'content' }
171+ it "returns the file's content when the file exists in the source directory" do
172+ stub(File).read(File.join(ROOT_PATH, 'docs', 'scraper', 'file')) { 'content' }
131173 assert_equal 'content', result
132174 end
133175
134176 it "returns nil when the file doesn't exist" do
135− stub(File).read('file') { raise }
177+ stub(File).read(File.join(ROOT_PATH, 'docs', 'scraper', 'file')) { raise }
136178 assert_nil result
137179 end
138180 end