lackie 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -25,11 +25,12 @@ Feature: Remote Control
25
25
  When I tell the lackie to log "yipee"
26
26
  Then I should see a result with the value "yipee"
27
27
 
28
- Scenario: Send Command Without Expecting A Result
29
- When I tell the lackie to send the command "window.foo = '123'"
30
- Then I should see a result with the value "OK"
28
+ Scenario: Reload The Browser
31
29
  When I tell the lackie to execute "window.foo = 99"
32
- Then I should see a result with the value "99"
30
+ When I tell the lackie to execute "Lackie.reload()"
31
+ Then I should see a result with the value "reloading"
32
+ When I tell the lackie to execute "typeof window.foo"
33
+ Then I should see a result with the value "undefined"
33
34
 
34
35
  Scenario: Await Result
35
36
  When I tell the lackie to execute "setTimeout(function() { window.foo = 666 }, 500)"
@@ -7,6 +7,7 @@ When /^I tell the lackie to log "([^\"]*)"$/ do |message|
7
7
  end
8
8
 
9
9
  When /^I tell the lackie to execute "([^\"]*)"$/ do |script|
10
+ @error = nil
10
11
  begin
11
12
  @response = remote_control.exec(script)
12
13
  rescue => e
@@ -14,11 +15,8 @@ When /^I tell the lackie to execute "([^\"]*)"$/ do |script|
14
15
  end
15
16
  end
16
17
 
17
- When /^I tell the lackie to send the command "([^"]*)"$/ do |script|
18
- @response = remote_control.send_command(script)
19
- end
20
-
21
18
  When /^I await the result of "([^"]*)" to equal "([^"]*)"$/ do |script, value|
19
+ @error = nil
22
20
  begin
23
21
  @response = remote_control.await(script, :timeout_seconds => 1) do |current_value|
24
22
  current_value.to_s == value
@@ -29,6 +27,7 @@ When /^I await the result of "([^"]*)" to equal "([^"]*)"$/ do |script, value|
29
27
  end
30
28
 
31
29
  Then /^I should see a result with the value "([^\"]*)"$/ do |value|
30
+ @error.should == nil
32
31
  @response.to_s.should == value
33
32
  end
34
33
 
@@ -3,50 +3,25 @@ Lackie = {
3
3
  enabled: true,
4
4
  baseUrl: "/lackie",
5
5
 
6
- createXMLHttpRequest: function() {
7
- try {
8
- return new XMLHttpRequest();
9
- } catch(e) {}
10
- try {
11
- return new ActiveXObject("Msxml2.XMLHTTP");
12
- } catch(e) {}
13
- throw new Error("XMLHttpRequest not supported");
14
- },
15
-
16
6
  yield: function() {
17
7
  if (Lackie.wip || !Lackie.enabled) {
18
8
  return;
19
9
  }
20
- var xhReq = Lackie.createXMLHttpRequest();
21
- function readyStateChange() {
22
- if (xhReq.readyState != 4 || xhReq.status == 404) {
10
+ Lackie.get("/yield", function(body) {
11
+ if (body.indexOf('Lackie.reload()') == 0) {
12
+ Lackie.reload();
23
13
  return;
24
14
  }
25
15
  Lackie.wip = true;
26
- try {
27
- Lackie.execute(xhReq.responseText);
28
- }
29
- finally {
30
- try {
31
- xhReq.destroy();
32
- xhReq = null;
33
- } catch(e) {}
34
- }
35
- }
36
- xhReq.open("GET", Lackie.url("/yield"), true);
37
- xhReq.onreadystatechange = readyStateChange;
38
- xhReq.send(null);
16
+ Lackie.execute(body);
17
+ });
39
18
  },
40
-
19
+
41
20
  result: function(value) {
42
- var xhReq = Lackie.createXMLHttpRequest();
43
21
  var params = JSON.stringify(value);
44
- xhReq.open("POST", Lackie.url("/result"), true);
45
- xhReq.setRequestHeader("Content-type", "application/json");
46
- xhReq.setRequestHeader("Content-length", params.length);
47
- xhReq.setRequestHeader("Connection", "close");
48
- xhReq.send(params);
49
- Lackie.wip = false;
22
+ Lackie.post("/result", params, function() {
23
+ Lackie.wip = false;
24
+ });
50
25
  },
51
26
 
52
27
  execute: function(command) {
@@ -59,7 +34,14 @@ Lackie = {
59
34
  }
60
35
  Lackie.result(result);
61
36
  },
62
-
37
+
38
+ reload: function() {
39
+ Lackie.enabled = false;
40
+ Lackie.post("/result", '{ "value": "reloading" }', function() {
41
+ window.location.reload(true);
42
+ });
43
+ },
44
+
63
45
  log: function(message) {
64
46
  var logElement = document.getElementById("LackieLog");
65
47
  if (logElement) {
@@ -68,6 +50,59 @@ Lackie = {
68
50
  return message;
69
51
  },
70
52
 
53
+ get: function(path, bodyCallback) {
54
+ Lackie.usingAjax(function(xhReq) {
55
+ xhReq.open("GET", Lackie.url(path), true);
56
+ xhReq.onreadystatechange = function () {
57
+ if (xhReq.readyState != 4 || xhReq.status != 200) {
58
+ return;
59
+ }
60
+ bodyCallback(xhReq.responseText);
61
+ };
62
+ xhReq.send(null);
63
+ });
64
+ },
65
+
66
+ post: function(path, params, callback) {
67
+ Lackie.usingAjax(function(xhReq) {
68
+ xhReq.open("POST", Lackie.url(path), true);
69
+ xhReq.onreadystatechange = function () {
70
+ if (xhReq.readyState != 2 || xhReq.status != 200) {
71
+ return;
72
+ }
73
+ callback();
74
+ };
75
+ xhReq.setRequestHeader("Content-type", "application/json");
76
+ xhReq.setRequestHeader("Content-length", params.length);
77
+ xhReq.setRequestHeader("Connection", "close");
78
+ xhReq.send(params);
79
+ });
80
+ },
81
+
82
+ createXMLHttpRequest: function() {
83
+ try {
84
+ return new XMLHttpRequest();
85
+ } catch(e) {}
86
+ try {
87
+ return new ActiveXObject("Msxml2.XMLHTTP");
88
+ } catch(e) {}
89
+ throw new Error("XMLHttpRequest not supported");
90
+ },
91
+
92
+ usingAjax: function(callback) {
93
+ var xhReq = Lackie.createXMLHttpRequest();
94
+ try {
95
+ callback(xhReq);
96
+ }
97
+ finally {
98
+ try {
99
+ if (typeof xhReq.destroy == 'function')
100
+ xhReq.destroy();
101
+ delete xhReq;
102
+ } catch(e) {}
103
+ }
104
+ },
105
+
71
106
  url: function(path) {
72
107
  var now = new Date();
73
108
  return Lackie.baseUrl + path + '?' + now.getTime().toString();
data/lib/lackie/poller.rb CHANGED
@@ -14,7 +14,7 @@ module Lackie
14
14
  @sleeper.sleep @interval_seconds
15
15
  seconds_waited += @interval_seconds
16
16
  end
17
- raise TimeoutError.new("Timed out after #{@timeout_seconds} seconds awaiting #{outcome}")
17
+ raise TimeoutError.new("Timed out after #{timeout_seconds} seconds awaiting #{outcome}")
18
18
  end
19
19
  end
20
20
 
@@ -20,7 +20,7 @@ module Lackie
20
20
  end
21
21
 
22
22
  def surrender(request)
23
- @result = nil
23
+ #@result = nil
24
24
  js(@surrender.script)
25
25
  end
26
26
 
data/lib/lackie.rb CHANGED
@@ -2,7 +2,7 @@ lib = File.dirname(__FILE__)
2
2
  $:.unshift(lib) unless $:.include?(lib) || $:.include?(File.expand_path(lib))
3
3
 
4
4
  module Lackie
5
- VERSION = '0.1.5'
5
+ VERSION = '0.1.6'
6
6
  end
7
7
 
8
8
  require 'lackie/remote_control'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lackie
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 5
10
- version: 0.1.5
9
+ - 6
10
+ version: 0.1.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Josh Chisholm
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-17 00:00:00 +00:00
18
+ date: 2011-01-26 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -197,7 +197,7 @@ rubyforge_project:
197
197
  rubygems_version: 1.3.7
198
198
  signing_key:
199
199
  specification_version: 3
200
- summary: lackie-0.1.5
200
+ summary: lackie-0.1.6
201
201
  test_files:
202
202
  - features/remote_control.feature
203
203
  - features/step_definitions/lackie_steps.rb