conformity 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/conformity/actions.rb +4 -3
- data/lib/conformity/field.rb +0 -19
- data/lib/conformity/fields.rb +31 -0
- data/lib/conformity/form.rb +23 -20
- data/lib/conformity/success_conditions.rb +1 -1
- data/lib/conformity/version.rb +1 -1
- data/lib/conformity.rb +1 -0
- data/spec/actions_spec.rb +14 -29
- data/spec/field_spec.rb +0 -19
- data/spec/fields_spec.rb +55 -0
- data/spec/form_spec.rb +4 -27
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03f5bb53373a113a0035f5d41f94d396c70f6e58
|
4
|
+
data.tar.gz: 880e740b3ba9efd4db77ac939dd5ad72012eca69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b053d5f3f3eacc49e888927c696252b88dc9bf65ae1bde18d66290c40aa6d4ccba7d476dfb716dac3dc701ca0cd6da99a79b609704bed0be2454303d6729af8b
|
7
|
+
data.tar.gz: 208caa041d7abcbfcd5b3b52a6b839a3aae2defb56796fa30b904dd2ccecca5237ddb35b2ff91be8376c5ac508176166128270e8a001e1c9fe81225d11f453f9
|
data/lib/conformity/actions.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
module Conformity
|
2
2
|
class Actions
|
3
|
-
attr_reader :session
|
3
|
+
attr_reader :session, :fields
|
4
4
|
|
5
5
|
ACTIONS = [:visit, :find, :fill_in, :select, :check, :uncheck, :choose,
|
6
6
|
:click_on, :wait]
|
7
7
|
|
8
|
-
def initialize(session = Capybara.current_session)
|
8
|
+
def initialize(fields, session = Capybara.current_session)
|
9
|
+
@fields = fields
|
9
10
|
@session = session
|
10
11
|
end
|
11
12
|
|
12
13
|
def field(name, options={})
|
13
|
-
|
14
|
+
fields.value(name)
|
14
15
|
end
|
15
16
|
|
16
17
|
def method_missing(name, *args, &block)
|
data/lib/conformity/field.rb
CHANGED
@@ -3,29 +3,10 @@ module Conformity
|
|
3
3
|
attr_reader :name, :options
|
4
4
|
attr_accessor :type
|
5
5
|
|
6
|
-
class << self
|
7
|
-
def find(name)
|
8
|
-
fields[name]
|
9
|
-
end
|
10
|
-
|
11
|
-
def value(name)
|
12
|
-
find(name).value
|
13
|
-
end
|
14
|
-
|
15
|
-
def fields
|
16
|
-
@fields ||= {}
|
17
|
-
end
|
18
|
-
|
19
|
-
def add_field(field)
|
20
|
-
fields[field.name] = field
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
6
|
def initialize(name, options = {})
|
25
7
|
@name = name
|
26
8
|
@options = options[:options]
|
27
9
|
@required = options[:required] || false
|
28
|
-
self.class.add_field(self)
|
29
10
|
end
|
30
11
|
|
31
12
|
def required?
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Conformity
|
2
|
+
class Fields
|
3
|
+
def fields
|
4
|
+
@fields ||= []
|
5
|
+
end
|
6
|
+
|
7
|
+
def add_field(field)
|
8
|
+
fields << field
|
9
|
+
end
|
10
|
+
|
11
|
+
def add_new_field(name, opts={})
|
12
|
+
add_field(Field.new(name, opts))
|
13
|
+
end
|
14
|
+
|
15
|
+
def field_names
|
16
|
+
fields.map { |field| field.name }
|
17
|
+
end
|
18
|
+
|
19
|
+
def set_values(values)
|
20
|
+
fields.each_with_index { |field, i| field.value = values[i] }
|
21
|
+
end
|
22
|
+
|
23
|
+
def value(name)
|
24
|
+
find(name).value
|
25
|
+
end
|
26
|
+
|
27
|
+
def find(name)
|
28
|
+
fields.select { |field| field.name == name }.first
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/conformity/form.rb
CHANGED
@@ -2,41 +2,40 @@ module Conformity
|
|
2
2
|
class Form
|
3
3
|
extend Forwardable
|
4
4
|
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :host, :steps
|
6
6
|
|
7
|
-
def_delegators
|
7
|
+
def_delegators :success_conditions, :has_content?, :has_status_code?,
|
8
8
|
:success?
|
9
|
+
def_delegators :fields_container, :fields, :field_names
|
9
10
|
|
10
|
-
def initialize(host = '', &
|
11
|
-
|
12
|
-
@
|
13
|
-
|
14
|
-
@block = block
|
15
|
-
instance_eval(&block)
|
11
|
+
def initialize(host = '', &steps)
|
12
|
+
@host = host
|
13
|
+
@steps = steps
|
14
|
+
instance_eval(&steps)
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
19
|
-
|
17
|
+
def fields_container
|
18
|
+
@fields_container ||= Fields.new
|
20
19
|
end
|
21
20
|
|
22
|
-
def
|
23
|
-
|
24
|
-
fields.last
|
21
|
+
def actions
|
22
|
+
@actions ||= Actions.new(fields_container)
|
25
23
|
end
|
26
24
|
|
27
|
-
def
|
28
|
-
@
|
25
|
+
def success_conditions
|
26
|
+
@success_conditions ||= SuccessConditions.new
|
29
27
|
end
|
30
28
|
|
31
|
-
def
|
32
|
-
|
29
|
+
def field(name, opts = {})
|
30
|
+
fields_container.add_new_field(name, opts)
|
33
31
|
end
|
34
32
|
|
35
33
|
def fill
|
36
34
|
Capybara.current_session.reset!
|
35
|
+
set_host(host)
|
37
36
|
|
38
37
|
begin
|
39
|
-
actions.instance_eval(&
|
38
|
+
actions.instance_eval(&steps)
|
40
39
|
rescue => e
|
41
40
|
raise FillError, "#{e.message}"
|
42
41
|
end
|
@@ -44,8 +43,7 @@ module Conformity
|
|
44
43
|
end
|
45
44
|
|
46
45
|
def fill_with(*field_values)
|
47
|
-
|
48
|
-
fields.each { |field| field.value = val_enum.next }
|
46
|
+
fields_container.set_values(field_values)
|
49
47
|
fill
|
50
48
|
end
|
51
49
|
|
@@ -57,5 +55,10 @@ module Conformity
|
|
57
55
|
# so Kernel#select isn't called
|
58
56
|
def select(*args)
|
59
57
|
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def set_host(host)
|
61
|
+
Capybara.app_host = host
|
62
|
+
end
|
60
63
|
end
|
61
64
|
end
|
data/lib/conformity/version.rb
CHANGED
data/lib/conformity.rb
CHANGED
data/spec/actions_spec.rb
CHANGED
@@ -6,69 +6,54 @@ require 'conformity/actions'
|
|
6
6
|
include Conformity
|
7
7
|
describe Conformity::Actions do
|
8
8
|
before :each do
|
9
|
-
@
|
9
|
+
@fields = double()
|
10
|
+
@session = double()
|
11
|
+
@actions = Actions.new(@fields, @session)
|
10
12
|
end
|
11
13
|
|
12
14
|
describe "#field" do
|
13
15
|
it "get's the value of the field" do
|
14
|
-
|
15
|
-
|
16
|
-
allow(Field).to receive(:value).with(:name) { "Jane Doe" }
|
17
|
-
|
18
|
-
expect(actions.field(:name)).to match("Jane Doe")
|
16
|
+
allow(@fields).to receive(:value).with(:name) { "Jane Doe" }
|
17
|
+
expect(@actions.field(:name)).to match("Jane Doe")
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
22
21
|
describe "#method_missing" do
|
23
22
|
it "delegates action calls to session" do
|
24
|
-
session
|
25
|
-
actions
|
26
|
-
|
27
|
-
expect(session).to receive(:visit).with("/")
|
28
|
-
actions.visit('/')
|
23
|
+
expect(@session).to receive(:visit).with("/")
|
24
|
+
@actions.visit('/')
|
29
25
|
end
|
30
26
|
|
31
27
|
it "ignores success conditions" do
|
32
|
-
|
33
|
-
actions = Actions.new(session)
|
34
|
-
|
35
|
-
expect { actions.has_status_code?; actions.has_content? }.to_not raise_error
|
28
|
+
expect { @actions.has_status_code?; @actions.has_content? }.to_not raise_error
|
36
29
|
end
|
37
30
|
end
|
38
31
|
|
39
32
|
describe "#select" do
|
40
33
|
it "is called on session" do
|
41
|
-
session
|
42
|
-
actions
|
43
|
-
|
44
|
-
expect(session).to receive(:select)
|
45
|
-
actions.select('Yes')
|
34
|
+
expect(@session).to receive(:select)
|
35
|
+
@actions.select('Yes')
|
46
36
|
end
|
47
37
|
|
48
38
|
it "is not called on Kernel" do
|
49
39
|
skip "not sure how to test"
|
50
|
-
session = double
|
51
|
-
actions = Actions.new(session)
|
52
|
-
|
53
40
|
expect(Kernel).to_not receive(:select)
|
54
|
-
actions.select('Yes')
|
41
|
+
@actions.select('Yes')
|
55
42
|
end
|
56
43
|
end
|
57
44
|
|
58
45
|
describe "logging" do
|
59
46
|
it "calls session to save a screenshot" do
|
60
|
-
session = double
|
61
47
|
Conformity.configure do |c|
|
62
48
|
c.log_screenshots = true
|
63
49
|
c.screenshots_folder = "."
|
64
50
|
end
|
65
51
|
|
66
52
|
allow(Time).to receive(:now) { 0 }
|
67
|
-
allow(session).to receive(:visit)
|
68
|
-
expect(session).to receive(:save_screenshot).with("./0_visit.png")
|
53
|
+
allow(@session).to receive(:visit)
|
54
|
+
expect(@session).to receive(:save_screenshot).with("./0_visit.png")
|
69
55
|
|
70
|
-
actions
|
71
|
-
actions.visit('/')
|
56
|
+
@actions.visit('/')
|
72
57
|
end
|
73
58
|
end
|
74
59
|
end
|
data/spec/field_spec.rb
CHANGED
@@ -50,23 +50,4 @@ describe Conformity::Field do
|
|
50
50
|
expect(field.required?).to be_falsey
|
51
51
|
end
|
52
52
|
end
|
53
|
-
|
54
|
-
describe ".find" do
|
55
|
-
it "returns a field with the given name" do
|
56
|
-
to_find = Field.new(:a)
|
57
|
-
Field.new(:b)
|
58
|
-
Field.new(:c)
|
59
|
-
|
60
|
-
expect(Field.find(:a)).to be(to_find)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe ".value" do
|
65
|
-
it "returns the value for a field with name" do
|
66
|
-
field = Field.new(:field)
|
67
|
-
field.value = "blue"
|
68
|
-
|
69
|
-
expect(Field.value(:field)).to match("blue")
|
70
|
-
end
|
71
|
-
end
|
72
53
|
end
|
data/spec/fields_spec.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
require 'conformity/field'
|
3
|
+
|
4
|
+
include Conformity
|
5
|
+
describe Conformity::Fields do
|
6
|
+
before :each do
|
7
|
+
@fields = Fields.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#add_field" do
|
11
|
+
it "adds a field to fields" do
|
12
|
+
field = double()
|
13
|
+
@fields.add_field(field)
|
14
|
+
expect(@fields.fields).to include(field)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#add_new_field" do
|
19
|
+
it "adds a new field to fields" do
|
20
|
+
@fields.add_new_field(:title, options: ["Ms.", "Mr."])
|
21
|
+
allow(Field).to receive(:new) { double("Field", :name => :title) }
|
22
|
+
expect(@fields.fields.any? { |f| f.name == :title }).to be_truthy
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#field_names" do
|
27
|
+
it "returns the names of added fields" do
|
28
|
+
@fields.add_new_field(:name)
|
29
|
+
@fields.add_new_field(:title, options: ["Ms.", "Mr."])
|
30
|
+
@fields.add_new_field(:email)
|
31
|
+
expect(@fields.field_names).to match([:name, :title, :email])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#value" do
|
36
|
+
it "returns the value for field name" do
|
37
|
+
field = double("Field", :name => :phone_number, value: '867-5309')
|
38
|
+
@fields.add_field(field)
|
39
|
+
expect(@fields.value(:phone_number)).to match('867-5309')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#set_values" do
|
44
|
+
it "sets the value of fields" do
|
45
|
+
field_a = double()
|
46
|
+
field_b = double()
|
47
|
+
|
48
|
+
allow(@fields).to receive(:fields) { [field_a, field_b] }
|
49
|
+
expect(field_a).to receive(:value=).with('1')
|
50
|
+
expect(field_b).to receive(:value=).with('2')
|
51
|
+
|
52
|
+
@fields.set_values(['1', '2'])
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/spec/form_spec.rb
CHANGED
@@ -30,33 +30,10 @@ describe Form do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
describe '#field' do
|
33
|
-
it
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
describe '#fields' do
|
39
|
-
it 'should be empty with no fields' do
|
40
|
-
expect(@form.fields).to be_empty
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should return fields when there are fields' do
|
44
|
-
@form.field(:name)
|
45
|
-
@form.field(:state, options: ["NY", "CA"])
|
46
|
-
|
47
|
-
expect(@form.fields).to_not be_empty
|
48
|
-
expect(@form.fields.all? { |field| field.class == Field }).to be_truthy
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe '#field_names' do
|
53
|
-
it 'lists the field names' do
|
54
|
-
form = Form.new do
|
55
|
-
fill_in 'name', with: field(:name)
|
56
|
-
choose field(:state, options: ['NY', 'CA'])
|
57
|
-
end
|
58
|
-
|
59
|
-
expect(form.field_names).to match([:name, :state])
|
33
|
+
it "should delegate to fields_container" do
|
34
|
+
args = :name, { options: ['a', 'b'] }
|
35
|
+
expect(@form.fields_container).to receive(:add_new_field).with(*args)
|
36
|
+
@form.field(*args)
|
60
37
|
end
|
61
38
|
end
|
62
39
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conformity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikias Kalpaxis
|
@@ -68,11 +68,13 @@ files:
|
|
68
68
|
- lib/conformity.rb
|
69
69
|
- lib/conformity/actions.rb
|
70
70
|
- lib/conformity/field.rb
|
71
|
+
- lib/conformity/fields.rb
|
71
72
|
- lib/conformity/form.rb
|
72
73
|
- lib/conformity/success_conditions.rb
|
73
74
|
- lib/conformity/version.rb
|
74
75
|
- spec/actions_spec.rb
|
75
76
|
- spec/field_spec.rb
|
77
|
+
- spec/fields_spec.rb
|
76
78
|
- spec/form_spec.rb
|
77
79
|
- spec/spec_helper.rb
|
78
80
|
- spec/success_conditions_spec.rb
|
@@ -103,6 +105,7 @@ summary: Automates form submissions by building upon Capybara.
|
|
103
105
|
test_files:
|
104
106
|
- spec/actions_spec.rb
|
105
107
|
- spec/field_spec.rb
|
108
|
+
- spec/fields_spec.rb
|
106
109
|
- spec/form_spec.rb
|
107
110
|
- spec/spec_helper.rb
|
108
111
|
- spec/success_conditions_spec.rb
|