saper 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/Rakefile +6 -6
- data/bin/saper +17 -36
- data/lib/saper.rb +63 -20
- data/lib/saper/actions/append_with.rb +1 -1
- data/lib/saper/actions/convert_to_html.rb +1 -1
- data/lib/saper/actions/convert_to_json.rb +6 -2
- data/lib/saper/actions/convert_to_markdown.rb +1 -1
- data/lib/saper/actions/convert_to_time.rb +38 -1
- data/lib/saper/actions/convert_to_xml.rb +1 -1
- data/lib/saper/actions/create_atom.rb +6 -2
- data/lib/saper/actions/fetch.rb +3 -2
- data/lib/saper/actions/fetch_with_token.rb +18 -0
- data/lib/saper/actions/find.rb +1 -1
- data/lib/saper/actions/find_first.rb +1 -1
- data/lib/saper/actions/get_attribute.rb +7 -2
- data/lib/saper/actions/get_contents.rb +1 -1
- data/lib/saper/actions/get_text.rb +1 -1
- data/lib/saper/actions/nothing.rb +11 -0
- data/lib/saper/actions/prepend_with.rb +2 -2
- data/lib/saper/actions/remove_after.rb +2 -2
- data/lib/saper/actions/remove_before.rb +2 -2
- data/lib/saper/actions/remove_matching.rb +2 -2
- data/lib/saper/actions/remove_tags.rb +1 -1
- data/lib/saper/actions/replace.rb +1 -1
- data/lib/saper/actions/run_recipe.rb +2 -2
- data/lib/saper/actions/run_recipe_and_save.rb +3 -3
- data/lib/saper/actions/save.rb +2 -2
- data/lib/saper/actions/select_matching.rb +2 -2
- data/lib/saper/actions/set_input.rb +1 -1
- data/lib/saper/actions/skip_tags.rb +1 -1
- data/lib/saper/actions/split.rb +1 -1
- data/lib/saper/arguments/attribute.rb +6 -0
- data/lib/saper/arguments/recipe.rb +12 -6
- data/lib/saper/arguments/service.rb +12 -0
- data/lib/saper/arguments/text.rb +1 -0
- data/lib/saper/arguments/timezone.rb +2 -1
- data/lib/saper/arguments/url.rb +12 -0
- data/lib/saper/arguments/variable.rb +2 -1
- data/lib/saper/arguments/xpath.rb +2 -1
- data/lib/saper/core/action.rb +43 -13
- data/lib/saper/core/argument.rb +30 -14
- data/lib/saper/core/browser.rb +29 -28
- data/lib/saper/core/dsl.rb +14 -16
- data/lib/saper/core/error.rb +1 -1
- data/lib/saper/core/item.rb +2 -2
- data/lib/saper/core/keychain.rb +58 -5
- data/lib/saper/core/namespace.rb +15 -18
- data/lib/saper/core/recipe.rb +53 -12
- data/lib/saper/core/result.rb +72 -0
- data/lib/saper/core/runtime.rb +44 -177
- data/lib/saper/core/stack.rb +57 -0
- data/lib/saper/items/atom.rb +18 -1
- data/lib/saper/items/document.rb +39 -19
- data/lib/saper/items/html.rb +52 -7
- data/lib/saper/items/json.rb +19 -1
- data/lib/saper/items/markdown.rb +14 -4
- data/lib/saper/items/nothing.rb +6 -0
- data/lib/saper/items/text.rb +28 -3
- data/lib/saper/items/time.rb +25 -2
- data/lib/saper/items/url.rb +8 -2
- data/lib/saper/items/xml.rb +51 -11
- data/lib/{lib → saper/patches}/mechanize.rb +0 -0
- data/lib/{lib → saper/patches}/nokogiri.rb +0 -0
- data/lib/saper/version.rb +2 -2
- data/spec/actions/append_with_spec.rb +29 -52
- data/spec/actions/convert_to_html_spec.rb +13 -30
- data/spec/actions/convert_to_json_spec.rb +13 -30
- data/spec/actions/convert_to_markdown_spec.rb +17 -19
- data/spec/actions/convert_to_time_spec.rb +25 -43
- data/spec/actions/convert_to_xml_spec.rb +15 -11
- data/spec/actions/create_atom_spec.rb +11 -19
- data/spec/actions/fetch_spec.rb +3 -8
- data/spec/actions/find_first_spec.rb +38 -40
- data/spec/actions/find_spec.rb +23 -39
- data/spec/actions/get_attribute_spec.rb +30 -3
- data/spec/actions/{get_contents.rb → get_contents_spec.rb} +0 -0
- data/spec/actions/{get_text.rb → get_text_spec.rb} +0 -0
- data/spec/actions/nothing_spec.rb +7 -0
- data/spec/actions/prepend_with_spec.rb +31 -18
- data/spec/actions/{remove_after.rb → remove_after_spec.rb} +0 -0
- data/spec/actions/{remove_before.rb → remove_before_spec.rb} +0 -0
- data/spec/actions/remove_matching_spec.rb +7 -0
- data/spec/actions/remove_tags_spec.rb +7 -0
- data/spec/actions/run_recipe_and_save_spec.rb +7 -0
- data/spec/actions/run_recipe_spec.rb +7 -0
- data/spec/arguments/attribute_spec.rb +7 -0
- data/spec/arguments/recipe_spec.rb +7 -0
- data/spec/arguments/text_spec.rb +7 -0
- data/spec/arguments/timezone_spec.rb +7 -0
- data/spec/arguments/variable_spec.rb +7 -0
- data/spec/arguments/xpath_spec.rb +7 -0
- data/spec/core/action_spec.rb +13 -142
- data/spec/core/argument_spec.rb +38 -71
- data/spec/core/browser_spec.rb +18 -3
- data/spec/core/dsl_spec.rb +1 -1
- data/spec/core/item_spec.rb +1 -1
- data/spec/core/namespace_spec.rb +0 -11
- data/spec/core/recipe_spec.rb +54 -77
- data/spec/core/result_spec.rb +7 -0
- data/spec/core/runtime_spec.rb +20 -151
- data/spec/core/stack_spec.rb +7 -0
- data/spec/integration/simple_invalid_spec.rb +39 -0
- data/spec/integration/simple_valid_spec.rb +39 -0
- data/spec/items/atom_spec.rb +6 -1
- data/spec/items/document_spec.rb +93 -15
- data/spec/items/html_spec.rb +45 -28
- data/spec/items/json_spec.rb +10 -10
- data/spec/items/markdown_spec.rb +24 -3
- data/spec/items/nothing_spec.rb +1 -1
- data/spec/items/text_spec.rb +13 -41
- data/spec/items/time_spec.rb +25 -4
- data/spec/items/url_spec.rb +1 -7
- data/spec/items/xml_spec.rb +46 -39
- data/spec/spec_helper.rb +2 -21
- metadata +63 -60
- data/lib/lib/json_search.rb +0 -54
- data/spec/actions/run_recipe_and_save_spec.tmp.rb +0 -52
- data/spec/actions/run_recipe_spec.tmp.rb +0 -53
File without changes
|
File without changes
|
data/lib/saper/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Saper
|
2
|
-
VERSION = "0.5.
|
3
|
-
end
|
2
|
+
VERSION = "0.5.2"
|
3
|
+
end
|
@@ -1,60 +1,37 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::AppendWith do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
let :subject do
|
6
5
|
Saper::Actions::AppendWith.new('!')
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
it "raises InvalidArgument" do
|
11
|
-
expect { Saper::Actions::AppendWith.new(nil) }.to raise_error(Saper::InvalidArgument)
|
12
|
-
end
|
7
|
+
it ".new(nil) raises InvalidArgument" do
|
8
|
+
lambda { Saper::Actions::AppendWith.new(nil) }.must_raise(Saper::InvalidArgument)
|
13
9
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
it ".new(Numeric) raises InvalidArgument" do
|
11
|
+
lambda { Saper::Actions::AppendWith.new(2) }.must_raise(Saper::InvalidArgument)
|
12
|
+
end
|
13
|
+
it ".new(Hash) raises InvalidArgumenth" do
|
14
|
+
lambda { Saper::Actions::AppendWith.new({}) }.must_raise(Saper::InvalidArgument)
|
15
|
+
end
|
16
|
+
it ".new(Array) raises InvalidArgument" do
|
17
|
+
lambda { Saper::Actions::AppendWith.new([]) }.must_raise(Saper::InvalidArgument)
|
18
|
+
end
|
19
|
+
it ".new(String)returns Action instance" do
|
20
|
+
Saper::Actions::AppendWith.new("!").must_be_kind_of(Saper::Action)
|
21
|
+
end
|
22
|
+
it "#run(nil) raises InvalidInput" do
|
23
|
+
lambda { subject.run(nil) }.must_raise(Saper::InvalidInput)
|
24
|
+
end
|
25
|
+
it "#run(Numeric) returns valid output" do
|
26
|
+
lambda { subject.run(1) }.must_raise(Saper::InvalidInput)
|
27
|
+
end
|
28
|
+
it "#run(String) returns valid output" do
|
29
|
+
subject.run('string').must_be :==, 'string!'
|
30
|
+
end
|
31
|
+
it "#run(Text) returns valid output" do
|
32
|
+
subject.run(Saper::Items::Text.new('string')).must_be :==, 'string!'
|
33
|
+
end
|
34
|
+
it "#run returns Text instance" do
|
35
|
+
subject.run('string').must_be_instance_of(Saper::Items::Text)
|
19
36
|
end
|
20
|
-
|
21
|
-
context ".new(String)" do
|
22
|
-
it "raises no errors" do
|
23
|
-
expect { Saper::Actions::AppendWith.new("!") }.to_not raise_error
|
24
|
-
end
|
25
|
-
it "returns Action instance" do
|
26
|
-
Saper::Actions::AppendWith.new("!").should be_a(Saper::Action)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context "#run(nil)" do
|
31
|
-
it "raises InvalidInput" do
|
32
|
-
expect { action.run(nil) }.to raise_error(Saper::InvalidInput)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context "#run(String)" do
|
37
|
-
let(:input) do
|
38
|
-
'string'
|
39
|
-
end
|
40
|
-
it "returns valid output" do
|
41
|
-
action.run(input).should == 'string!'
|
42
|
-
end
|
43
|
-
it "returns Text instance" do
|
44
|
-
action.run(input).should be_a(Saper::Items::Text)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "#run(Text)" do
|
49
|
-
let(:input) do
|
50
|
-
Saper::Items::Text.new('string')
|
51
|
-
end
|
52
|
-
it "returns valid output" do
|
53
|
-
action.run(input).should == 'string!'
|
54
|
-
end
|
55
|
-
it "returns Text instance" do
|
56
|
-
action.run(input).should be_a(Saper::Items::Text)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
37
|
end
|
@@ -1,39 +1,22 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::ConvertToHTML do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
let :subject do
|
6
5
|
Saper::Actions::ConvertToHTML.new
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
it "raises InvalidInput" do
|
11
|
-
expect { action.run(nil) }.to raise_error(Saper::InvalidInput)
|
12
|
-
end
|
7
|
+
it "#run(nil) raises InvalidInput" do
|
8
|
+
lambda { subject.run(nil) }.must_raise(Saper::InvalidInput)
|
13
9
|
end
|
14
|
-
|
15
|
-
|
16
|
-
let(:input) do
|
17
|
-
'<p>test</p>'
|
18
|
-
end
|
19
|
-
it "raises no errors" do
|
20
|
-
expect { action.run(input) }.to_not raise_error
|
21
|
-
end
|
22
|
-
it "returns HTML instance" do
|
23
|
-
action.run(input).should be_a(Saper::Items::HTML)
|
24
|
-
end
|
10
|
+
it "#run(Numeric) raises InvalidInput" do
|
11
|
+
lambda { subject.run(2) }.must_raise(Saper::InvalidInput)
|
25
12
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
it "returns HTML instance" do
|
35
|
-
action.run(input).should be_a(Saper::Items::HTML)
|
36
|
-
end
|
13
|
+
it "#run(invalid String) returns HTML instance" do
|
14
|
+
subject.run("not html").must_be_instance_of(Saper::Items::HTML)
|
15
|
+
end
|
16
|
+
it "#run(valid String) returns HTML instance" do
|
17
|
+
subject.run('<p>test</p>').must_be_instance_of(Saper::Items::HTML)
|
18
|
+
end
|
19
|
+
it "#run(valid Text) returns HTML instance" do
|
20
|
+
subject.run(Saper::Items::Text.new('<p>test</p>')).must_be_instance_of(Saper::Items::HTML)
|
37
21
|
end
|
38
|
-
|
39
22
|
end
|
@@ -1,39 +1,22 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::ConvertToJSON do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
let :subject do
|
6
5
|
Saper::Actions::ConvertToJSON.new
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
it "raises InvalidInput" do
|
11
|
-
expect { action.run(nil) }.to raise_error(Saper::InvalidInput)
|
12
|
-
end
|
7
|
+
it "#run(nil) raises InvalidInput" do
|
8
|
+
lambda { subject.run(nil) }.must_raise(Saper::InvalidInput)
|
13
9
|
end
|
14
|
-
|
15
|
-
|
16
|
-
let(:input) do
|
17
|
-
'{"test":"ok"}'
|
18
|
-
end
|
19
|
-
it "raises no errors" do
|
20
|
-
expect { action.run(input) }.to_not raise_error
|
21
|
-
end
|
22
|
-
it "returns JSON instance" do
|
23
|
-
action.run(input).should be_a(Saper::Items::JSON)
|
24
|
-
end
|
10
|
+
it "#run(Numeric) raises InvalidInput" do
|
11
|
+
lambda { subject.run(2) }.must_raise(Saper::InvalidInput)
|
25
12
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
it "returns JSON instance" do
|
35
|
-
action.run(input).should be_a(Saper::Items::JSON)
|
36
|
-
end
|
13
|
+
it "#run(invalid String) raises InvalidInput" do
|
14
|
+
subject.run('not json').must_be_nil
|
15
|
+
end
|
16
|
+
it "#run(valid String) returns JSON instance" do
|
17
|
+
subject.run('{"test":"ok"}').must_be_instance_of(Saper::Items::JSON)
|
18
|
+
end
|
19
|
+
it "#run(valid Text) returns JSON instance" do
|
20
|
+
subject.run(Saper::Items::Text.new('{"test":"ok"}')).must_be_instance_of(Saper::Items::JSON)
|
37
21
|
end
|
38
|
-
|
39
22
|
end
|
@@ -1,27 +1,25 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::ConvertToMarkdown do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
let :subject do
|
6
5
|
Saper::Actions::ConvertToMarkdown.new
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
it "raises InvalidInput" do
|
11
|
-
expect { action.run(nil) }.to raise_error(Saper::InvalidInput)
|
12
|
-
end
|
7
|
+
let :html do
|
8
|
+
Saper::Items::HTML.new('<p>test</p>')
|
13
9
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
10
|
+
it "#run(nil) raises InvalidInput" do
|
11
|
+
lambda { subject.run(nil) }.must_raise(Saper::InvalidInput)
|
12
|
+
end
|
13
|
+
it "#run(Numeric) raises InvalidInput" do
|
14
|
+
lambda { subject.run(2) }.must_raise(Saper::InvalidInput)
|
15
|
+
end
|
16
|
+
it "#run(String) raises InvalidInput" do
|
17
|
+
subject.run("string").must_be_instance_of(Saper::Items::Markdown)
|
18
|
+
end
|
19
|
+
it "#run(HTML) returns Markdown instance" do
|
20
|
+
subject.run(html).must_be_instance_of(Saper::Items::Markdown)
|
21
|
+
end
|
22
|
+
it "#run(HTML) returns valid output" do
|
23
|
+
subject.run(html).must_be :==, "test"
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
@@ -1,52 +1,34 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::ConvertToTime do
|
4
|
-
|
5
|
-
let(:action_without_tz) do
|
4
|
+
let(:subject_without_tz) do
|
6
5
|
Saper::Actions::ConvertToTime.new('%d-%m-%Y %H:%M')
|
7
6
|
end
|
8
|
-
|
9
|
-
let(:action_with_tz) do
|
7
|
+
let(:subject_with_tz) do
|
10
8
|
Saper::Actions::ConvertToTime.new('%d-%m-%Y %H:%M', 'Europe/Moscow')
|
11
9
|
end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
let(:input) do
|
11
|
+
'19-04-2014 18:56'
|
12
|
+
end
|
13
|
+
it ".new(nil, nil) raises InvalidArgument" do
|
14
|
+
lambda { Saper::Actions::ConvertToTime.new }.must_raise(Saper::InvalidArgument)
|
15
|
+
end
|
16
|
+
it ".new(format, nil) raises no errors" do
|
17
|
+
lambda { Saper::Actions::ConvertToTime.new("%H") }.must_be_silent
|
18
|
+
end
|
19
|
+
it "#run(nil) raises InvalidInput" do
|
20
|
+
lambda { subject_without_tz.run(nil) }.must_raise(Saper::InvalidInput)
|
21
|
+
end
|
22
|
+
it "#run(valid String) returns valid output with defined TZ" do
|
23
|
+
subject_with_tz.run(input).to_s.must_be :==, '2014-04-19T18:56:00+04:00'
|
24
|
+
end
|
25
|
+
it "#run(valid String) returns valid output with undefined TZ" do
|
26
|
+
subject_without_tz.run(input).to_s.must_be :==, '2014-04-19T18:56:00+00:00'
|
27
|
+
end
|
28
|
+
it "#run(valid String) returns Time instance" do
|
29
|
+
subject_with_tz.run(input).must_be_instance_of(Saper::Items::Time)
|
30
|
+
end
|
31
|
+
it "#run(invalid String) raises InvalidItem" do
|
32
|
+
lambda { subject_with_tz.run("ABCDEF") }.must_raise(Saper::InvalidItem)
|
17
33
|
end
|
18
|
-
|
19
|
-
context ".new(format, nil)" do
|
20
|
-
it "raises no errors" do
|
21
|
-
expect { Saper::Actions::ConvertToTime.new("%H") }.to_not raise_error
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context "#run(nil)" do
|
26
|
-
it "raises InvalidInput" do
|
27
|
-
expect { action_without_tz.run(nil) }.to raise_error(Saper::InvalidInput)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "#run(valid date)" do
|
32
|
-
let(:input) do
|
33
|
-
'19-04-2014 18:56'
|
34
|
-
end
|
35
|
-
it "returns valid output if TZ is set" do
|
36
|
-
action_with_tz.run(input).should == '2014-04-19T18:56:00+04:00'
|
37
|
-
end
|
38
|
-
it "returns valid output if TZ is missing" do
|
39
|
-
action_without_tz.run(input).should == '2014-04-19T18:56:00+00:00'
|
40
|
-
end
|
41
|
-
it "returns Time instance" do
|
42
|
-
action_with_tz.run(input).should be_a(Saper::Items::Time)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "#run(invalid date)" do
|
47
|
-
it "raises InvalidItem" do
|
48
|
-
expect { action_with_tz.run("ABCDEF") }.to raise_error(Saper::InvalidItem)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
34
|
end
|
@@ -1,18 +1,22 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::ConvertToXML do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
let :subject do
|
6
5
|
Saper::Actions::ConvertToXML.new
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
it "#run(nil) raises InvalidInput" do
|
8
|
+
lambda { subject.run(nil) }.must_raise(Saper::InvalidInput)
|
9
|
+
end
|
10
|
+
it "#run(Numeric) raises InvalidInput" do
|
11
|
+
lambda { subject.run(2) }.must_raise(Saper::InvalidInput)
|
12
|
+
end
|
13
|
+
it "#run(invalid String) returns XML instance" do
|
14
|
+
subject.run("not xml").must_be_instance_of(Saper::Items::XML)
|
15
|
+
end
|
16
|
+
it "#run(valid String) returns XML instance" do
|
17
|
+
subject.run('<root>test</root>').must_be_instance_of(Saper::Items::XML)
|
18
|
+
end
|
19
|
+
it "#run(valid Text) returns XML instance" do
|
20
|
+
subject.run(Saper::Items::Text.new('<root>test</root>')).must_be_instance_of(Saper::Items::XML)
|
16
21
|
end
|
17
|
-
|
18
22
|
end
|
@@ -1,27 +1,19 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::CreateAtom do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
let :subject do
|
6
5
|
Saper::Actions::CreateAtom.new
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
it "raises RuntimeMissing" do
|
11
|
-
expect { action.run(nil) }.to raise_error(Saper::RuntimeMissing)
|
12
|
-
end
|
7
|
+
let :runtime do
|
8
|
+
Saper::Runtime.new :test => 'ok'
|
13
9
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
it "returns Saper::Atom" do
|
23
|
-
action.run(nil, runtime).should be_a(Saper::Items::Atom)
|
24
|
-
end
|
10
|
+
it "#run(nil) returns Saper::Atom" do
|
11
|
+
subject.run(nil).must_be_instance_of(Saper::Items::Atom)
|
12
|
+
end
|
13
|
+
it "#run(nil, Runtime) returns Saper::Atom" do
|
14
|
+
subject.run(nil, runtime).must_be_instance_of(Saper::Items::Atom)
|
15
|
+
end
|
16
|
+
it "#run(nil, Runtime) returns valid output" do
|
17
|
+
subject.run(nil, runtime).to_native.must_equal(:test => 'ok')
|
25
18
|
end
|
26
|
-
|
27
19
|
end
|
data/spec/actions/fetch_spec.rb
CHANGED
@@ -1,15 +1,10 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::Fetch do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
let :subject do
|
6
5
|
Saper::Actions::Fetch.new
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
it "raises InvalidInput" do
|
11
|
-
expect { action.run(nil) }.to raise_error(Saper::InvalidInput)
|
12
|
-
end
|
7
|
+
it "#run(nil) raises InvalidInput" do
|
8
|
+
lambda { subject.run(nil) }.must_raise(Saper::InvalidInput)
|
13
9
|
end
|
14
|
-
|
15
10
|
end
|
@@ -1,52 +1,50 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Saper::Actions::FindFirst do
|
4
|
-
|
5
|
-
let(:action) do
|
4
|
+
subject do
|
6
5
|
Saper::Actions::FindFirst.new("//p")
|
7
6
|
end
|
8
|
-
|
9
|
-
|
10
|
-
it "raises InvalidArgument" do
|
11
|
-
expect { Saper::Actions::FindFirst.new(nil) }.to raise_error(Saper::InvalidArgument)
|
12
|
-
end
|
7
|
+
let :string do
|
8
|
+
"<html><body><div><p>test</p></div></body></html>"
|
13
9
|
end
|
14
|
-
|
15
|
-
|
16
|
-
it "raises no errors" do
|
17
|
-
expect { Saper::Actions::FindFirst.new("a") }.to_not raise_error
|
18
|
-
end
|
10
|
+
let :html do
|
11
|
+
Saper::Items::HTML.new(string)
|
19
12
|
end
|
20
|
-
|
21
|
-
|
22
|
-
it "raises InvalidInput" do
|
23
|
-
expect { action.run(nil) }.to raise_error(Saper::InvalidInput)
|
24
|
-
end
|
13
|
+
let :json do
|
14
|
+
Saper::Items::JSON.new('{"p":{"a":0}}')
|
25
15
|
end
|
26
|
-
|
27
|
-
|
28
|
-
let(:input) do
|
29
|
-
Saper::Items::HTML.new('<div><p>test</p></div>')
|
30
|
-
end
|
31
|
-
it "returns HTML instance" do
|
32
|
-
action.run(input).should be_a(Saper::Items::HTML)
|
33
|
-
end
|
34
|
-
it "returns valid output" do
|
35
|
-
action.run(input).name.should == 'p'
|
36
|
-
end
|
16
|
+
it ".new(nil) raises InvalidArgument" do
|
17
|
+
lambda { Saper::Actions::FindFirst.new(nil) }.must_raise(Saper::InvalidArgument)
|
37
18
|
end
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
19
|
+
it ".new(Numeric) raises InvalidArgument" do
|
20
|
+
lambda { Saper::Actions::FindFirst.new(1) }.must_raise(Saper::InvalidArgument)
|
21
|
+
end
|
22
|
+
it ".new(Hash) raises InvalidArgument" do
|
23
|
+
lambda { Saper::Actions::FindFirst.new({}) }.must_raise(Saper::InvalidArgument)
|
24
|
+
end
|
25
|
+
it ".new(Array) raises InvalidArgument" do
|
26
|
+
lambda { Saper::Actions::FindFirst.new([]) }.must_raise(Saper::InvalidArgument)
|
27
|
+
end
|
28
|
+
it ".new(CSS as String) raises no errors" do
|
29
|
+
lambda { Saper::Actions::FindFirst.new("a") }.must_be_silent
|
30
|
+
end
|
31
|
+
it "#run(nil) raises InvalidInput" do
|
32
|
+
lambda { subject.run(nil) }.must_raise(Saper::InvalidInput)
|
33
|
+
end
|
34
|
+
it "#run(String) returns HTML instance" do
|
35
|
+
subject.run(string).must_be_instance_of(Saper::Items::HTML)
|
36
|
+
end
|
37
|
+
it "#run(HTML) returns HTML instance" do
|
38
|
+
subject.run(html).must_be_instance_of(Saper::Items::HTML)
|
39
|
+
end
|
40
|
+
it "#run(HTML) returns valid output" do
|
41
|
+
subject.run(html).to_s.must_be :==, '<p>test</p>'
|
42
|
+
end
|
43
|
+
it "#run(JSON) returns JSON instance" do
|
44
|
+
subject.run(json).must_be_instance_of(Saper::Items::JSON)
|
45
|
+
end
|
46
|
+
it "#run(JSON) returns valid output" do
|
47
|
+
subject.run(json).must_be :==, {"a" => 0}
|
50
48
|
end
|
51
49
|
|
52
50
|
end
|