ghostbuster 0.3.7 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -135,6 +135,12 @@ If no path option is given, it will merely assert that the location changed.
135
135
 
136
136
  This will fill in the matching form elements with the text given.
137
137
 
138
+ ### select
139
+
140
+ *Arguments*: selector, newValue
141
+
142
+ This will set a select box to a given value
143
+
138
144
  ### wait
139
145
 
140
146
  *Arguments*: seconds, callback
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ namespace :test do
8
8
  task task_name do
9
9
  print "#{task_name} ... "
10
10
  Dir.chdir("test/working_ghost") do
11
- matcher = [/13 success, 0 failure, 1 pending/]
11
+ matcher = [/14 success, 0 failure, 1 pending/]
12
12
  fork {
13
13
  ENV['BUNDLE_GEMFILE'] = File.expand_path("./Gemfile")
14
14
  `bundle install`
@@ -132,6 +132,31 @@ class Body
132
132
  "
133
133
  @test.page.evaluate(input)
134
134
 
135
+ select: (selector, newValue, opts) ->
136
+ opts ||= {}
137
+ test = @test
138
+ @test.assert opts, (withValue) ->
139
+ idx = opts.index || 0
140
+ eval "
141
+ var evaluator = function() {
142
+ var targets = document.querySelectorAll('#{selector}'),
143
+ idx = #{idx},
144
+ evt = document.createEvent('MutationEvents'),
145
+ newValue = '#{newValue}';
146
+ if (idx < targets.length) {
147
+ evt.initMutationEvent('change', true, true, window, targets[idx].value, newValue, 'value', MutationEvent.MODIFICATION);
148
+ targets[idx].value = newValue;
149
+ targets[idx].dispatchEvent(evt);
150
+ return true;
151
+ } else {
152
+ alert('Couldn\\'t find element #{idx} for selector #{selector}');
153
+ return false;
154
+ }
155
+ };
156
+ "
157
+ withValue @page.evaluate(evaluator)
158
+
159
+
135
160
  click: (selector, opts) ->
136
161
  opts ||= {}
137
162
  test = @test
@@ -1,3 +1,3 @@
1
1
  class Ghostbuster
2
- VERSION = '0.3.7'
2
+ VERSION = '0.3.9'
3
3
  end
@@ -6,6 +6,11 @@
6
6
  <form>
7
7
  <input type="text" id="in">
8
8
  <input type="button" id="btn" onclick="document.getElementById('out').innerHTML = document.getElementById('in').value;">
9
+ <select id="sel" onchange="document.getElementById('out').innerHTML = document.getElementById('sel').value">
10
+ <option value="test">test</option>
11
+ <option value="test2">test2</option>
12
+ <option value="test3">test3</option>
13
+ </select>
9
14
  </form>
10
15
  <p id="out"></p>
11
16
  </body>
@@ -25,6 +25,13 @@ phantom.test.add "Form input", ->
25
25
  out.innerHTML == 'this is my input'
26
26
  @succeed()
27
27
 
28
+ phantom.test.add "Select box input", ->
29
+ @get '/form', ->
30
+ @body.select "#sel", "test3"
31
+ @body.assertFirst '#out', (out) ->
32
+ out.innerHTML == 'test3'
33
+ @succeed()
34
+
28
35
  phantom.test.add "Link traversal", ->
29
36
  @get '/', ->
30
37
  @body.click 'a'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghostbuster
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 7
10
- version: 0.3.7
9
+ - 9
10
+ version: 0.3.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Josh Hull
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-20 00:00:00 Z
18
+ date: 2011-11-03 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement