swamp 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,42 +7,42 @@ module Swamp
7
7
  context "when the name has dashes" do
8
8
  it "replaces the dashes with unsderscores" do
9
9
  name = "user-name"
10
- formatter.format(name).should == "user_name"
10
+ expect(formatter.format(name)).to eq("user_name")
11
11
  end
12
12
  end
13
13
 
14
14
  context "when the name has white spaces" do
15
15
  it "replaces the white spaces with underscores" do
16
16
  name = "user name"
17
- formatter.format(name).should == "user_name"
17
+ expect(formatter.format(name)).to eq("user_name")
18
18
  end
19
19
  end
20
20
 
21
21
  context "when the name has underscore in the end" do
22
22
  it "removes the underscores from the end" do
23
23
  name = "user_name_"
24
- formatter.format(name).should == "user_name"
24
+ expect(formatter.format(name)).to eq("user_name")
25
25
  end
26
26
  end
27
27
 
28
28
  context "when the name has uppercase characters" do
29
29
  it "converts the characters to lowercase" do
30
30
  name = "Sign up"
31
- formatter.format(name).should == "sign_up"
31
+ expect(formatter.format(name)).to eq("sign_up")
32
32
  end
33
33
  end
34
34
 
35
35
  context "when the name has parentheses" do
36
36
  it "replace the parentheses with underscores" do
37
37
  name = "user_name(title)"
38
- formatter.format(name).should == "user_name_title"
38
+ expect(formatter.format(name)).to eq("user_name_title")
39
39
  end
40
40
  end
41
41
 
42
42
  context "when the name has brackets" do
43
43
  it "replace the brackets with underscores" do
44
44
  name = "user_name[title]"
45
- formatter.format(name).should == "user_name_title"
45
+ expect(formatter.format(name)).to eq("user_name_title")
46
46
  end
47
47
  end
48
48
  end
@@ -51,7 +51,7 @@ module Swamp
51
51
  context "when the class has white spaces" do
52
52
  it "replaces the white spaces with dots" do
53
53
  class_name = "button g-button g-button-submit"
54
- formatter.format_class(class_name).should == "button.g-button.g-button-submit"
54
+ expect(formatter.format_class(class_name)).to eq("button.g-button.g-button-submit")
55
55
  end
56
56
  end
57
57
  end
@@ -5,9 +5,9 @@ module Swamp
5
5
 
6
6
  it "delegates to capybara the responsibility to get the submit elements" do
7
7
  element = {'value' => "Log In", 'id' => "u_0_b"}
8
- element.stub(:visible?).and_return(true)
9
- input_buttons.page.stub(:execute_script).and_return(nil)
10
- input_buttons.page.should_receive(:all).with('input[type="submit"]').and_return([element])
8
+ allow(element).to receive(:visible?).and_return(true)
9
+ allow(input_buttons.page).to receive(:execute_script).and_return(nil)
10
+ expect(input_buttons.page).to receive(:all).with('input[type="submit"]').and_return([element])
11
11
  input_buttons.get
12
12
  end
13
13
 
@@ -16,25 +16,25 @@ module Swamp
16
16
  let(:element) { {'value' => "Log In", 'id' => "u_0_b"} }
17
17
 
18
18
  before(:each) do
19
- element.stub(:visible?).and_return(true)
20
- input_buttons.page.stub(:all).with('input[type="submit"]').and_return([element])
19
+ allow(element).to receive(:visible?).and_return(true)
20
+ allow(input_buttons.page).to receive(:all).with('input[type="submit"]').and_return([element])
21
21
  end
22
22
 
23
23
  it "highlights the element" do
24
- input_buttons.page.should_receive(:execute_script).twice
24
+ expect(input_buttons.page).to receive(:execute_script).twice
25
25
  input_buttons.get
26
26
  end
27
27
 
28
28
  it "returns the element in the array using the value as the name" do
29
- input_buttons.page.stub(:execute_script).and_return(nil)
30
- input_buttons.get.should have(1).input_submit
31
- input_buttons.get.first.name.should == "Log In"
29
+ allow(input_buttons.page).to receive(:execute_script).and_return(nil)
30
+ expect(input_buttons.get.size).to eq(1)
31
+ expect(input_buttons.get.first.name).to eq("Log In")
32
32
  end
33
33
 
34
34
  it "returns the element in the array using the id as the selector" do
35
- input_buttons.page.stub(:execute_script).and_return(nil)
36
- input_buttons.get.should have(1).input_submit
37
- input_buttons.get.first.selector.should == "#u_0_b"
35
+ allow(input_buttons.page).to receive(:execute_script).and_return(nil)
36
+ expect(input_buttons.get.size).to eq(1)
37
+ expect(input_buttons.get.first.selector).to eq("#u_0_b")
38
38
  end
39
39
  end
40
40
 
@@ -42,25 +42,25 @@ module Swamp
42
42
  let(:element) { {'value' => "Log In", 'class' => "btn without id"} }
43
43
 
44
44
  before(:each) do
45
- element.stub(:visible?).and_return(true)
46
- input_buttons.page.stub(:all).with('input[type="submit"]').and_return([element])
45
+ allow(element).to receive(:visible?).and_return(true)
46
+ allow(input_buttons.page).to receive(:all).with('input[type="submit"]').and_return([element])
47
47
  end
48
48
 
49
49
  it "highlights the element" do
50
- input_buttons.page.should_receive(:execute_script).twice
50
+ expect(input_buttons.page).to receive(:execute_script).twice
51
51
  input_buttons.get
52
52
  end
53
53
 
54
54
  it "returns the element in the array using the value as the name" do
55
- input_buttons.page.stub(:execute_script).and_return(nil)
56
- input_buttons.get.should have(1).input_submit
57
- input_buttons.get.first.name.should == "Log In"
55
+ allow(input_buttons.page).to receive(:execute_script).and_return(nil)
56
+ expect(input_buttons.get.size).to eq(1)
57
+ expect(input_buttons.get.first.name).to eq("Log In")
58
58
  end
59
59
 
60
60
  it "returns the element in the array using the class concatenated with the value as the selector" do
61
- input_buttons.page.stub(:execute_script).and_return(nil)
62
- input_buttons.get.should have(1).input_submit
63
- input_buttons.get.first.selector.should == "input.btn.without.id[value='Log In']"
61
+ allow(input_buttons.page).to receive(:execute_script).and_return(nil)
62
+ expect(input_buttons.get.size).to eq(1)
63
+ expect(input_buttons.get.first.selector).to eq("input.btn.without.id[value='Log In']")
64
64
  end
65
65
  end
66
66
  end
@@ -68,9 +68,9 @@ module Swamp
68
68
  context "when the element is not visible" do
69
69
  it "returns an empty array" do
70
70
  element = {'value' => "Log In", 'id' => "u_0_b"}
71
- element.stub(:visible?).and_return(false)
72
- input_buttons.page.stub(:all).with('input[type="submit"]').and_return([element])
73
- input_buttons.get.should == []
71
+ allow(element).to receive(:visible?).and_return(false)
72
+ allow(input_buttons.page).to receive(:all).with('input[type="submit"]').and_return([element])
73
+ expect(input_buttons.get).to eq([])
74
74
  end
75
75
  end
76
76
  end
@@ -3,44 +3,60 @@ module Swamp
3
3
  describe Interface do
4
4
  let(:output) { output = double('output').as_null_object }
5
5
  let(:wrapper) { wrapper = double('wrapper').as_null_object }
6
- let(:interface) { interface = Swamp::Interface.new(output, wrapper) }
6
+ let(:setup) { setup = Swamp::Setup.new }
7
+ let(:interface) { interface = Swamp::Interface.new(output, wrapper, setup) }
7
8
 
8
9
  describe "#run" do
9
10
  it "prompts for the url" do
10
- output.should_receive(:puts).with("Enter the url for the page to be scanned:")
11
+ expect(output).to receive(:puts).with("Enter the url for the page to be scanned:")
11
12
  interface.run
12
13
  end
13
14
  end
14
15
 
16
+ describe "#setup_command" do
17
+ let(:command) { ":scope = source" }
18
+ it "delegates the responsibility to execute the command to the Setup class" do
19
+ expect(setup).to receive(:handle_command).with(command).and_return(["something"])
20
+ interface.setup_command(command)
21
+ end
22
+
23
+ context "when it receives a valid command" do
24
+ it "sends a message to the output telling that the command was successful" do
25
+ expect(output).to receive(:puts).with("Option :scope set to source")
26
+ interface.setup_command(command)
27
+ end
28
+ end
29
+ end
30
+
15
31
  describe "#scan" do
16
32
  it "warns the user that it is scanning" do
17
- output.should_receive(:puts).with("Scanning, please wait...")
33
+ expect(output).to receive(:puts).with("Scanning, please wait...")
18
34
  interface.scan("http://www.fakepage.com")
19
35
  end
20
36
 
21
37
  it "delegates the responsibility to fire up the browser to the wrapper class" do
22
- wrapper.should_receive(:explore)
38
+ expect(wrapper).to receive(:explore)
23
39
  interface.scan("http://www.fakepage.com")
24
40
  end
25
41
 
26
42
  it "delegates the page parsing to the wrapper class" do
27
- wrapper.should_receive(:scan).and_return(["code_snippet"])
43
+ expect(wrapper).to receive(:scan).and_return(["code_snippet"])
28
44
  interface.scan("http://www.fakepage.com")
29
45
  end
30
46
 
31
47
  context "when it scans a valid url" do
32
48
  context "when elements were found" do
33
49
  it "sends the code snippets of the scanned page to the output" do
34
- wrapper.stub(:scan).and_return(["code_snippet"])
35
- output.should_receive(:puts).with("code_snippet")
50
+ allow(wrapper).to receive(:scan).and_return(["code_snippet"])
51
+ expect(output).to receive(:puts).with("code_snippet")
36
52
  interface.scan("http://www.fakepage.com")
37
53
  end
38
54
  end
39
55
 
40
56
  context "when no elements were found" do
41
57
  it "sends a warning message to the output telling that no elements were found" do
42
- wrapper.stub(:scan).and_return([])
43
- output.should_receive(:puts).with("No elements were detected")
58
+ allow(wrapper).to receive(:scan).and_return([])
59
+ expect(output).to receive(:puts).with("No elements were detected")
44
60
  interface.scan("http://www.fakepage.com")
45
61
  end
46
62
  end
@@ -48,7 +64,7 @@ module Swamp
48
64
 
49
65
  context "when it scans an invalid url" do
50
66
  it "sends a warning message to the output" do
51
- output.should_receive(:puts).with("Please enter a valid url!")
67
+ expect(output).to receive(:puts).with("Please enter a valid url!")
52
68
  interface.scan("abc123")
53
69
  end
54
70
  end
@@ -56,17 +72,17 @@ module Swamp
56
72
  context "when it receives an enter keystroke" do
57
73
  context "when no page was scanned yet" do
58
74
  it "sends a warning message to the output" do
59
- wrapper.stub(:page_visited).and_return(false)
60
- output.should_receive(:puts).with("Please enter a valid url!")
75
+ allow(wrapper).to receive(:page_visited).and_return(false)
76
+ expect(output).to receive(:puts).with("Please enter a valid url!")
61
77
  interface.scan("\n")
62
78
  end
63
79
  end
64
80
 
65
81
  context "when a page was already scanned" do
66
82
  it "scans the current page and sends the code snippets to the output" do
67
- wrapper.stub(:page_visited).and_return(true)
68
- wrapper.stub(:scan).and_return(["code_snippet"])
69
- output.should_receive(:puts).with("code_snippet")
83
+ allow(wrapper).to receive(:page_visited).and_return(true)
84
+ allow(wrapper).to receive(:scan).and_return(["code_snippet"])
85
+ expect(output).to receive(:puts).with("code_snippet")
70
86
  interface.scan("\n")
71
87
  end
72
88
  end
@@ -5,9 +5,9 @@ module Swamp
5
5
 
6
6
  it "delegates to capybara the responsibility to get the links" do
7
7
  element = {'id' => "forgot-password", 'href' => "https://somewhere.com"}
8
- element.stub(:visible?).and_return(true)
9
- links.page.stub(:execute_script).and_return(nil)
10
- links.page.should_receive(:all).with('a[href][id]').and_return([element])
8
+ allow(element).to receive(:visible?).and_return(true)
9
+ allow(links.page).to receive(:execute_script).and_return(nil)
10
+ expect(links.page).to receive(:all).with('a[href][id]').and_return([element])
11
11
  links.get
12
12
  end
13
13
 
@@ -16,25 +16,25 @@ module Swamp
16
16
  let(:element) { {'id' => "forgot-password", 'href' => "https://somewhere.com"} }
17
17
 
18
18
  before(:each) do
19
- element.stub(:visible?).and_return(true)
20
- links.page.stub(:all).with('a[href][id]').and_return([element])
19
+ allow(element).to receive(:visible?).and_return(true)
20
+ allow(links.page).to receive(:all).with('a[href][id]').and_return([element])
21
21
  end
22
22
 
23
23
  it "highlights the element" do
24
- links.page.should_receive(:execute_script).and_return(nil)
24
+ expect(links.page).to receive(:execute_script).and_return(nil)
25
25
  links.get
26
26
  end
27
27
 
28
28
  it "returns the element in the array using the id as the name" do
29
- links.page.stub(:execute_script).and_return(nil)
30
- links.get.should have(1).link
31
- links.get.first.name.should == "forgot-password"
29
+ allow(links.page).to receive(:execute_script).and_return(nil)
30
+ expect(links.get.size).to eq(1)
31
+ expect(links.get.first.name).to eq("forgot-password")
32
32
  end
33
33
 
34
34
  it "returns the element in the array using the id as the selector" do
35
- links.page.stub(:execute_script).and_return(nil)
36
- links.get.should have(1).select_box
37
- links.get.first.selector.should == "forgot-password"
35
+ allow(links.page).to receive(:execute_script).and_return(nil)
36
+ expect(links.get.size).to eq(1)
37
+ expect(links.get.first.selector).to eq("forgot-password")
38
38
  end
39
39
  end
40
40
  end
@@ -5,9 +5,9 @@ module Swamp
5
5
 
6
6
  it "delegates to capybara the responsibility to get the select box elements" do
7
7
  element = {'id' => "month", 'name' => "birthday_month"}
8
- element.stub(:visible?).and_return(true)
9
- select_boxes.page.stub(:execute_script).and_return(nil)
10
- select_boxes.page.should_receive(:all).with('select').and_return([element])
8
+ allow(element).to receive(:visible?).and_return(true)
9
+ allow(select_boxes.page).to receive(:execute_script).and_return(nil)
10
+ expect(select_boxes.page).to receive(:all).with('select').and_return([element])
11
11
  select_boxes.get
12
12
  end
13
13
 
@@ -16,25 +16,25 @@ module Swamp
16
16
  let(:element) { {'id' => "month", 'name' => "birthday_month"} }
17
17
 
18
18
  before(:each) do
19
- element.stub(:visible?).and_return(true)
20
- select_boxes.page.stub(:all).with('select').and_return([element])
19
+ allow(element).to receive(:visible?).and_return(true)
20
+ allow(select_boxes.page).to receive(:all).with('select').and_return([element])
21
21
  end
22
22
 
23
23
  it "highlights the element" do
24
- select_boxes.page.should_receive(:execute_script).twice
24
+ expect(select_boxes.page).to receive(:execute_script).twice
25
25
  select_boxes.get
26
26
  end
27
27
 
28
28
  it "returns the element in the array using the id as the name" do
29
- select_boxes.page.stub(:execute_script).and_return(nil)
30
- select_boxes.get.should have(1).select_box
31
- select_boxes.get.first.name.should == "month"
29
+ allow(select_boxes.page).to receive(:execute_script).and_return(nil)
30
+ expect(select_boxes.get.size).to eq(1)
31
+ expect(select_boxes.get.first.name).to eq("month")
32
32
  end
33
33
 
34
34
  it "returns the element in the array using the id as the selector" do
35
- select_boxes.page.stub(:execute_script).and_return(nil)
36
- select_boxes.get.should have(1).select_box
37
- select_boxes.get.first.selector.should == "month"
35
+ allow(select_boxes.page).to receive(:execute_script).and_return(nil)
36
+ expect(select_boxes.get.size).to eq(1)
37
+ expect(select_boxes.get.first.selector).to eq("month")
38
38
  end
39
39
  end
40
40
 
@@ -42,25 +42,25 @@ module Swamp
42
42
  let(:element) { {'name' => "birthday_month"} }
43
43
 
44
44
  before(:each) do
45
- element.stub(:visible?).and_return(true)
46
- select_boxes.page.stub(:all).with('select').and_return([element])
45
+ allow(element).to receive(:visible?).and_return(true)
46
+ allow(select_boxes.page).to receive(:all).with('select').and_return([element])
47
47
  end
48
48
 
49
49
  it "highlights the element" do
50
- select_boxes.page.should_receive(:execute_script).twice
50
+ expect(select_boxes.page).to receive(:execute_script).twice
51
51
  select_boxes.get
52
52
  end
53
53
 
54
54
  it "returns the element in the array using the name as the name" do
55
- select_boxes.page.stub(:execute_script).and_return(nil)
56
- select_boxes.get.should have(1).select_box
57
- select_boxes.get.first.name.should == "birthday_month"
55
+ allow(select_boxes.page).to receive(:execute_script).and_return(nil)
56
+ expect(select_boxes.get.size).to eq(1)
57
+ expect(select_boxes.get.first.name).to eq("birthday_month")
58
58
  end
59
59
 
60
60
  it "returns the element in the array using the name as the selector" do
61
- select_boxes.page.stub(:execute_script).and_return(nil)
62
- select_boxes.get.should have(1).select_box
63
- select_boxes.get.first.selector.should == "birthday_month"
61
+ allow(select_boxes.page).to receive(:execute_script).and_return(nil)
62
+ expect(select_boxes.get.size).to eq(1)
63
+ expect(select_boxes.get.first.selector).to eq("birthday_month")
64
64
  end
65
65
  end
66
66
 
@@ -68,25 +68,25 @@ module Swamp
68
68
  let(:element) { {'class' => "provider-select"} }
69
69
 
70
70
  before(:each) do
71
- element.stub(:visible?).and_return(true)
72
- select_boxes.page.stub(:all).with('select').and_return([element])
71
+ allow(element).to receive(:visible?).and_return(true)
72
+ allow(select_boxes.page).to receive(:all).with('select').and_return([element])
73
73
  end
74
74
 
75
75
  it "highlights the element" do
76
- select_boxes.page.should_receive(:execute_script).twice
76
+ expect(select_boxes.page).to receive(:execute_script).twice
77
77
  select_boxes.get
78
78
  end
79
79
 
80
80
  it "returns the element in the array using the class as the name" do
81
- select_boxes.page.stub(:execute_script).and_return(nil)
82
- select_boxes.get.should have(1).select_box
83
- select_boxes.get.first.name.should == "provider-select"
81
+ allow(select_boxes.page).to receive(:execute_script).and_return(nil)
82
+ expect(select_boxes.get.size).to eq(1)
83
+ expect(select_boxes.get.first.name).to eq("provider-select")
84
84
  end
85
85
 
86
86
  it "returns the element in the array using the class as the selector" do
87
- select_boxes.page.stub(:execute_script).and_return(nil)
88
- select_boxes.get.should have(1).select_box
89
- select_boxes.get.first.selector.should == "provider-select"
87
+ allow(select_boxes.page).to receive(:execute_script).and_return(nil)
88
+ expect(select_boxes.get.size).to eq(1)
89
+ expect(select_boxes.get.first.selector).to eq("provider-select")
90
90
  end
91
91
  end
92
92
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+ module Swamp
3
+ describe Setup do
4
+ let(:setup) { Swamp::Setup.new }
5
+
6
+ it "should set the default options" do
7
+ expect(setup.scope).to eq("page")
8
+ end
9
+
10
+ describe "#handle_command" do
11
+ context "when the command is valid" do
12
+ context "when the scope changes" do
13
+ it "should set the option :scope to source" do
14
+ setup.handle_command(":scope = source")
15
+ expect(setup.scope).to eq("source")
16
+ end
17
+
18
+ it "should return a message confirming the scope was set to source" do
19
+ expect(setup.handle_command(":scope = source")).to eq(["Option :scope set to source"])
20
+ end
21
+
22
+ it "should set the option :scope to page" do
23
+ setup.handle_command(":scope = page")
24
+ expect(setup.scope).to eq("page")
25
+ end
26
+
27
+ it "should return a message confirming the scope was set to page" do
28
+ expect(setup.handle_command(":scope = page")).to eq(["Option :scope set to page"])
29
+ end
30
+ end
31
+ end
32
+
33
+ context "when the command is invalid" do
34
+ it "should return a message warning that the command is invalid" do
35
+ expect(setup.handle_command(":scope = ")).to eq(["Invalid command"])
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+ end