kameleon 0.0.5 → 0.0.6

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.
Files changed (54) hide show
  1. data/lib/kameleon/dsl/act.rb +73 -22
  2. data/lib/kameleon/dsl/see.rb +101 -20
  3. data/lib/kameleon/session/capybara.rb +11 -0
  4. data/lib/kameleon/user/abstract.rb +78 -6
  5. data/spec/sample_rack_app/hey.rb +11 -4
  6. data/spec/spec_helper.rb +12 -0
  7. data/spec/support/deferred_garbage_collection.rb +20 -0
  8. data/spec/unit/act/click_spec.rb +52 -0
  9. data/spec/unit/act/fill_in/attach_file_spec.rb +27 -0
  10. data/spec/unit/act/fill_in/checkbox_spec.rb +87 -0
  11. data/spec/unit/act/fill_in/date_ranges_spec.rb +24 -0
  12. data/spec/unit/act/fill_in/multiple_select_spec.rb +42 -0
  13. data/spec/unit/act/fill_in/radio_button_spec.rb +35 -0
  14. data/spec/unit/act/fill_in/select_spec.rb +35 -0
  15. data/spec/unit/act/fill_in/text_area_spec.rb +52 -0
  16. data/spec/unit/act/fill_in/text_input_spec.rb +52 -0
  17. data/spec/unit/act/on_hover_spec.rb +34 -0
  18. data/spec/unit/dsl/not_see/form_elements/fields/empty_spec.rb +38 -0
  19. data/spec/unit/dsl/not_see/form_elements/fields/readonly_spec.rb +38 -0
  20. data/spec/unit/dsl/not_see/form_elements/fields_spec.rb +24 -0
  21. data/spec/unit/dsl/not_see/form_elements/textareas_spec.rb +25 -0
  22. data/spec/unit/dsl/not_see/form_elements/texts_spec.rb +26 -0
  23. data/spec/unit/dsl/not_see/in_scopes_spec.rb +61 -0
  24. data/spec/unit/dsl/not_see/special_elements/buttons_spec.rb +24 -0
  25. data/spec/unit/dsl/not_see/special_elements/error_message_for_spec.rb +24 -0
  26. data/spec/unit/dsl/not_see/special_elements/images_spec.rb +24 -0
  27. data/spec/unit/dsl/not_see/special_elements/links_spec.rb +46 -0
  28. data/spec/unit/dsl/not_see/special_elements/ordered_texts_spec.rb +21 -0
  29. data/spec/unit/dsl/not_see/special_selectors_spec.rb +35 -0
  30. data/spec/unit/dsl/not_see/texts_spec.rb +24 -0
  31. data/spec/unit/dsl/see/counted_elements_spec.rb +26 -0
  32. data/spec/unit/dsl/see/form_elements/checkboxes_spec.rb +45 -0
  33. data/spec/unit/dsl/see/form_elements/fields/disabled_spec.rb +30 -0
  34. data/spec/unit/dsl/see/form_elements/fields/empty_spec.rb +28 -0
  35. data/spec/unit/dsl/see/form_elements/fields/readonly_spec.rb +38 -0
  36. data/spec/unit/dsl/see/form_elements/fields_spec.rb +28 -0
  37. data/spec/unit/dsl/see/form_elements/multiple_selects_spec.rb +47 -0
  38. data/spec/unit/dsl/see/form_elements/radio_buttons_spec.rb +35 -0
  39. data/spec/unit/dsl/see/form_elements/selects_spec.rb +40 -0
  40. data/spec/unit/dsl/see/form_elements/textareas_spec.rb +29 -0
  41. data/spec/unit/dsl/see/form_elements/texts_spec.rb +29 -0
  42. data/spec/unit/dsl/see/in_scopes_spec.rb +83 -0
  43. data/spec/unit/dsl/see/special_elements/buttons_spec.rb +28 -0
  44. data/spec/unit/dsl/see/special_elements/error_message_for_spec.rb +24 -0
  45. data/spec/unit/dsl/see/special_elements/images_spec.rb +28 -0
  46. data/spec/unit/dsl/see/special_elements/links_spec.rb +55 -0
  47. data/spec/unit/dsl/see/special_elements/ordered_texts_spec.rb +21 -0
  48. data/spec/unit/dsl/see/special_selectors_spec.rb +53 -0
  49. data/spec/unit/dsl/see/texts_spec.rb +24 -0
  50. data/spec/unit/guest_spec.rb +24 -45
  51. data/spec/unit/user_base_spec.rb +1 -1
  52. metadata +78 -13
  53. data/spec/unit/act_spec.rb +0 -99
  54. data/spec/unit/see_spec.rb +0 -242
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#see special elements - buttons' do
4
+ before do
5
+ Capybara.app = Hey.new('special_elements.html')
6
+ @user = Kameleon::User::Guest.new(self)
7
+ end
8
+
9
+ it 'should see by id' do
10
+ @user.see :button => 'superButton'
11
+ end
12
+
13
+ it 'should see by label' do
14
+ @user.see :button => 'Super button'
15
+ end
16
+
17
+ it 'should see many buttons' do
18
+ @user.see :button => ['Super button', 'Second super button']
19
+ end
20
+
21
+ context 'when does not exist' do
22
+ it 'should raise error' do
23
+ expect do
24
+ @user.see :button => 'button does not exist'
25
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#see special elements - error message for' do
4
+ before do
5
+ Capybara.app = Hey.new('error_message_for.html')
6
+ @user = Kameleon::User::Guest.new(self)
7
+ end
8
+
9
+ it 'should see one messages' do
10
+ @user.see :error_message_for => 'name'
11
+ end
12
+
13
+ it 'should see many messages at once' do
14
+ @user.see :error_messages_for => ['name', 'title', 'content']
15
+ end
16
+
17
+ context 'when at least one does not exist' do
18
+ it 'should raise error' do
19
+ expect do
20
+ @user.see :error_messages_for => ['name', 'doesNotExist']
21
+ end.should raise_error(RSpec::Expectations::ExpectationNotMetError)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#see special elements - images' do
4
+ before do
5
+ Capybara.app = Hey.new('special_elements.html')
6
+ @user = Kameleon::User::Guest.new(self)
7
+ end
8
+
9
+ it 'should see by alt' do
10
+ @user.see :image => "Logo_diamondmine"
11
+ end
12
+
13
+ it 'should see by src' do
14
+ @user.see :image => "/images/logo_diamondmine.png?1324293836"
15
+ end
16
+
17
+ it 'should see many images' do
18
+ @user.see :images => ['Logo_diamondmine', 'Logo_redmine']
19
+ end
20
+
21
+ context 'when does not exist' do
22
+ it 'should raise error' do
23
+ expect do
24
+ @user.see :image => 'LinkDoesNotExist'
25
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#see special elements - links' do
4
+ before do
5
+ Capybara.app = Hey.new('special_elements.html')
6
+ @user = Kameleon::User::Guest.new(self)
7
+ end
8
+
9
+ context 'when src is provided' do
10
+ it 'should see one link' do
11
+ @user.see :link => { 'What you want' => '/i-want/to' }
12
+ end
13
+
14
+ it 'should see many links' do
15
+ @user.see :links => { 'What you want' => '/i-want/to',
16
+ 'What I need' => '/what-i/need' }
17
+ end
18
+
19
+ context 'when link text does not exist' do
20
+ it 'should raise error' do
21
+ expect do
22
+ @user.see :link => { 'What you want' => '/i-want/to',
23
+ 'link does not exist' => '/what-i/need' }
24
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
25
+ end
26
+ end
27
+
28
+ context 'when src path does not exist' do
29
+ it 'should raise error' do
30
+ expect do
31
+ @user.see :link => { 'What you want' => '/i-want/to',
32
+ 'What I need' => 'src does not exist' }
33
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
34
+ end
35
+ end
36
+ end
37
+
38
+ context 'when src path is not provided' do
39
+ it 'should see one link' do
40
+ @user.see :link => 'What you want'
41
+ end
42
+
43
+ it 'should see many links' do
44
+ @user.see :links => ['What you want', 'What I need']
45
+ end
46
+
47
+ context 'when at least one does not exist' do
48
+ it 'should raise error' do
49
+ expect do
50
+ @user.see :link => ['What you want', 'does not exist']
51
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,21 @@
1
+ #encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe '#see special elements - ordered texts' do
5
+ before do
6
+ Capybara.app = Hey.new('special_elements.html')
7
+ @user = Kameleon::User::Guest.new(self)
8
+ end
9
+
10
+ it 'should see text in proper order' do
11
+ @user.see :ordered => ['Michał Czyż', 'Tomasz Bąk', 'Rafał Bromirski']
12
+ end
13
+
14
+ context 'when different order' do
15
+ it 'should raise error' do
16
+ expect do
17
+ @user.see :ordered => ['Tomasz Bąk', 'Michał Czyż', 'Rafał Bromirski']
18
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,53 @@
1
+ #encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe '#see special selectors in tables' do
5
+ before do
6
+ Capybara.app = Hey.new('special_elements.html')
7
+ @user = Kameleon::User::Guest.new(self)
8
+ end
9
+
10
+ context 'when in row' do
11
+ it 'should see full text' do
12
+ @user.within(:row => 'Michał Czyż') do
13
+ see "13.00"
14
+ end
15
+ end
16
+
17
+ it 'should see partial text' do
18
+ @user.within(:row => 'Michał Czyż') do
19
+ see "13"
20
+ end
21
+ end
22
+ end
23
+
24
+ context 'when in column' do
25
+ context 'when scoped by full text' do
26
+ it 'should see full text' do
27
+ @user.within(:column => 'Selleo') do
28
+ see "13.00", "2.00", "0.00"
29
+ end
30
+ end
31
+
32
+ it 'should see partial text' do
33
+ @user.within(:column => 'Selleo') do
34
+ see "13", "2", "0"
35
+ end
36
+ end
37
+ end
38
+
39
+ context 'when scoped by partial text' do
40
+ it 'should see full text' do
41
+ @user.within(:column => 'lleo') do
42
+ see "13.00", "2.00", "0.00"
43
+ end
44
+ end
45
+
46
+ it 'should see partial text' do
47
+ @user.within(:column => 'lleo') do
48
+ see "13", "2", "0"
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#see texts' do
4
+ before do
5
+ Capybara.app = Hey.new('texts.html')
6
+ @user = Kameleon::User::Guest.new(self)
7
+ end
8
+
9
+ it 'should see single text' do
10
+ @user.see 'This is simple app'
11
+ end
12
+
13
+ it 'should see many text at once' do
14
+ @user.see 'This is simple app', 'and there is many lines', 'i that app'
15
+ end
16
+
17
+ context 'when at least one text is not visible' do
18
+ it 'should raise error' do
19
+ expect do
20
+ @user.see 'sinatra app', 'and there is many lines'
21
+ end.should raise_error(RSpec::Expectations::ExpectationNotMetError)
22
+ end
23
+ end
24
+ end
@@ -4,60 +4,39 @@ describe "Kameleon::User::Guest" do
4
4
  include ::Capybara::DSL
5
5
 
6
6
  before(:all) do
7
- Capybara.app = Hey.new("Hello You :-)")
7
+ Capybara.app = Hey.new
8
+ @guest = Kameleon::User::Guest.new(self, {:session_name => :see_world})
9
+ @another_guest = Kameleon::User::Guest.new(self)
8
10
  end
9
11
 
10
-
11
- context "guest user" do
12
- before(:all) do
13
- @guest = Kameleon::User::Guest.new(self, {:session_name => :see_world})
14
- @another_guest = Kameleon::User::Guest.new(self)
12
+ context "sessions" do
13
+ it "by default user should get current session" do
14
+ @another_guest.send(:session).should == Capybara.current_session
15
+ @another_guest.debug.should == Capybara.current_session
15
16
  end
16
17
 
17
- context "sessions" do
18
- it "by default user should get current session" do
19
- @another_guest.session.should == Capybara.current_session
20
- end
21
-
22
- it "guests should have separate session if param :session_name defined" do
23
- @guest.session.should_not == Capybara.current_session
24
- end
25
- end
26
-
27
- context "driver" do
28
- it "will not change if not defined in params" do
29
- @guest.session.driver.should be_a Capybara.current_session.driver.class
30
- end
31
-
32
- context "selecting custom driver" do
33
- before(:all) do
34
- @selenium = Kameleon::User::Guest.new(self, {:session_name => :new_world, :driver => :selenium, :skip_page_autoload => true})
35
- end
36
- it "should set Selenium if params :driver => :selenium" do
37
- @selenium.session.driver.should be_a Capybara::Selenium::Driver
38
- end
39
- it "shouldn't change drivers for other users'" do
40
- [@guest, @another_guest].each do |user|
41
- user.session.driver.should be_a Capybara::RackTest::Driver
42
- end
43
- end
44
- end
18
+ it "guests should have separate session if param :session_name defined" do
19
+ @guest.debug.should_not == Capybara.current_session
45
20
  end
46
21
  end
47
22
 
48
- context "perform request" do
49
- before(:all) do
50
- @user = Kameleon::User::Guest.new(self)
51
- end
52
-
53
- it "should be able to see response" do
54
- @user.see("Hello")
23
+ context "driver" do
24
+ it "will not change if not defined in params" do
25
+ @guest.debug.driver.should be_a Capybara.current_session.driver.class
55
26
  end
56
27
 
57
- it "using will block" do
58
- @user.will do
59
- see "Hello"
28
+ context "selecting custom driver" do
29
+ before(:all) do
30
+ @selenium = Kameleon::User::Guest.new(self, {:session_name => :new_world, :driver => :selenium, :skip_page_autoload => true})
31
+ end
32
+ it "should set Selenium if params :driver => :selenium" do
33
+ @selenium.debug.driver.should be_a Capybara::Selenium::Driver
34
+ end
35
+ it "shouldn't change drivers for other users'" do
36
+ [@guest, @another_guest].each do |user|
37
+ user.debug.driver.should be_a Capybara::RackTest::Driver
38
+ end
60
39
  end
61
40
  end
62
41
  end
63
- end
42
+ end
@@ -12,4 +12,4 @@ describe "Kameleon::User::Base" do
12
12
  #! overwriting using block for initialization
13
13
 
14
14
  # login in
15
- end
15
+ end
metadata CHANGED
@@ -1,19 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kameleon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Michał Czyż [@cs3b]
9
+ - Radosław Jędryszczak [socjopata]
10
+ - Szymon Kieloch [Skieloch]
9
11
  autorequire:
10
12
  bindir: bin
11
13
  cert_chain: []
12
- date: 2011-12-10 00:00:00.000000000 Z
14
+ date: 2012-01-19 00:00:00.000000000 Z
13
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ requirement: &19902960 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *19902960
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: capybara
16
- requirement: &18511140 !ruby/object:Gem::Requirement
29
+ requirement: &19902260 !ruby/object:Gem::Requirement
17
30
  none: false
18
31
  requirements:
19
32
  - - ! '>='
@@ -21,10 +34,10 @@ dependencies:
21
34
  version: '0'
22
35
  type: :runtime
23
36
  prerelease: false
24
- version_requirements: *18511140
37
+ version_requirements: *19902260
25
38
  - !ruby/object:Gem::Dependency
26
- name: rspec
27
- requirement: &18509900 !ruby/object:Gem::Requirement
39
+ name: selenium-webdriver
40
+ requirement: &19901620 !ruby/object:Gem::Requirement
28
41
  none: false
29
42
  requirements:
30
43
  - - ! '>='
@@ -32,10 +45,10 @@ dependencies:
32
45
  version: '0'
33
46
  type: :runtime
34
47
  prerelease: false
35
- version_requirements: *18509900
48
+ version_requirements: *19901620
36
49
  - !ruby/object:Gem::Dependency
37
50
  name: rspec
38
- requirement: &18508960 !ruby/object:Gem::Requirement
51
+ requirement: &19900740 !ruby/object:Gem::Requirement
39
52
  none: false
40
53
  requirements:
41
54
  - - ! '>='
@@ -43,10 +56,21 @@ dependencies:
43
56
  version: '0'
44
57
  type: :development
45
58
  prerelease: false
46
- version_requirements: *18508960
59
+ version_requirements: *19900740
47
60
  - !ruby/object:Gem::Dependency
48
61
  name: capybara
49
- requirement: &18506880 !ruby/object:Gem::Requirement
62
+ requirement: &19900220 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: *19900220
71
+ - !ruby/object:Gem::Dependency
72
+ name: guard-rspec
73
+ requirement: &19899720 !ruby/object:Gem::Requirement
50
74
  none: false
51
75
  requirements:
52
76
  - - ! '>='
@@ -54,7 +78,7 @@ dependencies:
54
78
  version: '0'
55
79
  type: :development
56
80
  prerelease: false
57
- version_requirements: *18506880
81
+ version_requirements: *19899720
58
82
  description: high abstraction dsl for end user perspective tests, kameleon - it's
59
83
  a polish word for chameleon
60
84
  email: michalczyz@gmail.com
@@ -69,11 +93,52 @@ files:
69
93
  - lib/kameleon/dsl/act.rb
70
94
  - lib/kameleon/dsl/see.rb
71
95
  - lib/kameleon.rb
96
+ - spec/unit/act/click_spec.rb
97
+ - spec/unit/act/fill_in/attach_file_spec.rb
98
+ - spec/unit/act/fill_in/checkbox_spec.rb
99
+ - spec/unit/act/fill_in/date_ranges_spec.rb
100
+ - spec/unit/act/fill_in/multiple_select_spec.rb
101
+ - spec/unit/act/fill_in/radio_button_spec.rb
102
+ - spec/unit/act/fill_in/text_area_spec.rb
103
+ - spec/unit/act/fill_in/text_input_spec.rb
104
+ - spec/unit/act/fill_in/select_spec.rb
105
+ - spec/unit/act/on_hover_spec.rb
106
+ - spec/unit/dsl/not_see/form_elements/fields/empty_spec.rb
107
+ - spec/unit/dsl/not_see/form_elements/fields/readonly_spec.rb
108
+ - spec/unit/dsl/not_see/form_elements/fields_spec.rb
109
+ - spec/unit/dsl/not_see/form_elements/textareas_spec.rb
110
+ - spec/unit/dsl/not_see/form_elements/texts_spec.rb
111
+ - spec/unit/dsl/not_see/in_scopes_spec.rb
112
+ - spec/unit/dsl/not_see/special_elements/buttons_spec.rb
113
+ - spec/unit/dsl/not_see/special_elements/error_message_for_spec.rb
114
+ - spec/unit/dsl/not_see/special_elements/images_spec.rb
115
+ - spec/unit/dsl/not_see/special_elements/links_spec.rb
116
+ - spec/unit/dsl/not_see/special_elements/ordered_texts_spec.rb
117
+ - spec/unit/dsl/not_see/special_selectors_spec.rb
118
+ - spec/unit/dsl/not_see/texts_spec.rb
119
+ - spec/unit/dsl/see/counted_elements_spec.rb
120
+ - spec/unit/dsl/see/form_elements/checkboxes_spec.rb
121
+ - spec/unit/dsl/see/form_elements/fields/disabled_spec.rb
122
+ - spec/unit/dsl/see/form_elements/fields/empty_spec.rb
123
+ - spec/unit/dsl/see/form_elements/fields/readonly_spec.rb
124
+ - spec/unit/dsl/see/form_elements/fields_spec.rb
125
+ - spec/unit/dsl/see/form_elements/radio_buttons_spec.rb
126
+ - spec/unit/dsl/see/form_elements/selects_spec.rb
127
+ - spec/unit/dsl/see/form_elements/textareas_spec.rb
128
+ - spec/unit/dsl/see/form_elements/texts_spec.rb
129
+ - spec/unit/dsl/see/form_elements/multiple_selects_spec.rb
130
+ - spec/unit/dsl/see/in_scopes_spec.rb
131
+ - spec/unit/dsl/see/special_elements/buttons_spec.rb
132
+ - spec/unit/dsl/see/special_elements/error_message_for_spec.rb
133
+ - spec/unit/dsl/see/special_elements/images_spec.rb
134
+ - spec/unit/dsl/see/special_elements/links_spec.rb
135
+ - spec/unit/dsl/see/special_elements/ordered_texts_spec.rb
136
+ - spec/unit/dsl/see/special_selectors_spec.rb
137
+ - spec/unit/dsl/see/texts_spec.rb
72
138
  - spec/unit/guest_spec.rb
73
139
  - spec/unit/user_base_spec.rb
74
- - spec/unit/see_spec.rb
75
- - spec/unit/act_spec.rb
76
140
  - spec/sample_rack_app/hey.rb
141
+ - spec/support/deferred_garbage_collection.rb
77
142
  - spec/spec_helper.rb
78
143
  - LICENCE
79
144
  homepage: https://github.com/cs3b/kameleon