saper 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|