qlive-rspec 0.2.0 → 0.3.0

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.
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake" /></Settings>
data/README.md CHANGED
@@ -1,17 +1,19 @@
1
1
  # Qlive-Rspec
2
2
 
3
3
  Run qlive-rails qunit javascript tests headlessly alongside your normal rspec integration examples.
4
-
5
4
  This builds on the [qlive-rails](https://github.com/proxv/qlive-rails) gem. If you are using Ruby on Rails and rspec,
6
5
  this gem will let you run your qlive tests in both a browser and headlessly as an rspec example/test.
7
6
 
7
+
8
8
  Qlive-rspec has relatively heavy dependencies: virtual X11 frame buffer, headless webkit, capybara, and rspec.
9
9
  If this doesn't work for you, it should be possible to incorporate your qlive tests into other automated testing
10
10
  or continuous integration enviornments (eg, with a selenium-related library.)
11
11
 
12
12
 
13
13
 
14
- ## Installation
14
+ ## Headless Webkit
15
+
16
+
15
17
 
16
18
  * Install webkit-qt and xvfb on your system. Eg:
17
19
  <pre>sudo aptitude install libqt4-dev xvfb</pre>
@@ -41,17 +43,16 @@ note: See [capybara-webkit](https://github.com/thoughtbot/capybara-webkit) and [
41
43
 
42
44
 
43
45
 
44
-
45
- ## Usage
46
-
47
46
  ### qunits_spec.rb
48
47
 
49
48
  * After you have your [qlive suites](https://github.com/proxv/qlive/wiki/qlive-suites) working in a browser,
50
49
  create ``spec/qunits/qunits_spec.rb``:
51
50
 
52
51
  ```ruby
53
- require "spec_helper.rb"
52
+ require "spec_helper.rb"
54
53
  include Qlive::Runner
54
+
55
+ Capybara.current_driver = :webkit
55
56
 
56
57
  describe "qunits" do
57
58
  run_qlive
@@ -63,7 +64,90 @@ create ``spec/qunits/qunits_spec.rb``:
63
64
  <pre>rspec spec/qunits</pre>
64
65
 
65
66
 
66
- ### Configuration
67
+ ## Sauce
68
+
69
+ You can use qlive-rspec to run cross-browser tests using Sauce Labs.
70
+
71
+ ### Installation
72
+
73
+ * create account with Sauce Labs
74
+ * config/ondemand.yml with your password
75
+ * install java sdk
76
+ * add gem 'sauce' to Gemfile in :test group
77
+
78
+ ### Sauce Labs Integration
79
+
80
+ * Create a spec outside of the normal spec directory. Eg:
81
+
82
+ sauce/sauce_spec.rb
83
+
84
+ * It might look like:
85
+
86
+ ```ruby
87
+ require_relative '../spec/spec_helper.rb'
88
+ require 'sauce'
89
+ require 'sauce/capybara'
90
+
91
+ Sauce.config do |c|
92
+ c[:start_tunnel] = true
93
+ end
94
+
95
+ Capybara.default_driver = :sauce
96
+
97
+ all_tests_passed = nil
98
+ Qlive.setup[:before_suites] = lambda {
99
+ Capybara.current_driver = :sauce
100
+ all_tests_passed = true
101
+ }
102
+
103
+ Qlive.setup[:after_suites] = lambda {
104
+ driver = Capybara.current_session.driver
105
+ session_id = driver.browser.session_id
106
+ driver.browser.quit
107
+ driver.instance_variable_set(:@browser, nil)
108
+
109
+ job = Sauce::Job.new('id' => session_id)
110
+ job.passed = all_tests_passed
111
+ job.save
112
+ }
113
+
114
+ def job_name(config=nil)
115
+ config ||= Sauce::Config.new.opts
116
+ "Qlive tests in #{config[:browser]}#{config[:browser_version] || ''} on #{config[:os]} at #{Time.now.to_s}"
117
+ end
118
+
119
+ def setup_session(config)
120
+ config.each do |key, value|
121
+ value = value || ''
122
+ ENV["SAUCE_#{key.to_s.upcase}"] = value.to_s
123
+ end
124
+
125
+ ENV['SAUCE_JOB_NAME'] ||= job_name(config)
126
+ end
127
+
128
+ def record_result(example)
129
+ all_tests_passed = false if example.exception
130
+ end
131
+
132
+ [[ 'firefox', nil, 'Windows 2003' ], [ 'iexplore', 8, 'Windows 2003' ], [ 'iexplore', 9, 'Windows 2008' ]].each do |browser, version, os|
133
+ config = {
134
+ :browser => browser,
135
+ :browser_version => version,
136
+ :os => os
137
+ }
138
+ describe job_name(config) do
139
+ run_qlive(:before_each => lambda {
140
+ setup_session(config)
141
+ puts "Running #{job_name}"
142
+ }, :after_each => lambda { |example|
143
+ record_result(example)
144
+ })
145
+ end
146
+ end
147
+
148
+ ```
149
+
150
+ ## Configuration Options
67
151
 
68
152
  * Optionally run setup/teardown code before and after the qlive tests are run.
69
153
  <pre>
@@ -76,3 +160,7 @@ Qlive.setup[:after_suites] lambda { my_teardown_code }
76
160
  * Optionally disable xvfb with ``Qlive.setup[:start_xvfb] = false`` if you plan on configuring it externally
77
161
 
78
162
  * Optionally change per-page timeout in seconds with: ``Qlive.setup[:capybara_wait_time] = 30``
163
+
164
+ * Optionally pass in ``:before_each`` and ``:after_each`` proc/lambda in ``run_qlive`` (called in qunits_spec.rb)
165
+ :after_each gets passed the current rspec [example](http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#example-instance_method) as its one and only parameter.
166
+
@@ -1,3 +1,3 @@
1
1
  module QliveRspec
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -9,65 +9,77 @@ module Qlive
9
9
 
10
10
  module ClassMethods
11
11
 
12
- def run_qlive(bool=true)
13
- puts "tmp --- run_qlive hi #{self.inspect}"
12
+ def run_qlive(args={})
14
13
  Qlive::Matchers.add_matchers
15
-
16
14
  Qlive.setup[:base_path] ||= "#{Rails.root}/spec/qunits"
17
15
  Qlive.setup[:logger] ||= Rails.logger
18
- Qlive::Registry.find_suites
19
-
20
- describe "pages", :type => :request do
21
- extend Qlive::SuitesHelper
22
-
23
- def visit_qunit_page(suite_name, href)
24
- using_wait_time(Qlive.setup[:capybara_wait_time]) do # perhaps let suites override this value
25
- Qlive.logger.info "Qlive sending capybara to run '#{suite_name}' on #{href}"
26
- visit href
27
- page.html.should_not be_nil
28
- page.wait_until(Qlive.setup[:capybara_wait_time]) do # hmmmm
29
- page.evaluate_script('!!window.qunitComplete')
30
- end
31
- failure_text = page.evaluate_script("$('li.fail li.fail').text();")
32
- page.should pass_qunit_tests(failure_text)
33
- end
34
- end
35
-
36
- Qlive::Registry.suites.values.each do |suite_meta|
37
- load suite_meta[:path]
38
- suite = Qlive::Registry.build_suite(suite_meta[:name])
39
- hrefs_for_suite(suite).each do |href|
40
- it "should pass qunit tests when visiting: #{href}" do
41
- visit_qunit_page(suite.name, href)
42
- end
43
- end
44
- end
45
16
 
17
+ # todo: support suite selection by allowing directory and path names, not just suite names. (both absolute and relative to base_path)
18
+ desired_suites_by_name = args[:suites] || Qlive::Registry.find_suites.keys
19
+ describe "qlive", :type => :request do
46
20
  before(:all) do
47
21
  Qlive.setup[:before_suites].call if Qlive.setup[:before_suites]
48
- if Qlive.setup[:start_xvfb]
22
+ if Qlive.setup[:start_xvfb] && Capybara.current_driver == :webkit
49
23
  @headless = ::Headless.new(Qlive.setup[:headless_config])
50
24
  @headless.start
51
25
  end
52
26
  end
53
27
 
54
- before(:each) do
55
- page.reset!
28
+ desired_suites_by_name.each do |desired_suite|
29
+ suite = resolve_suite(desired_suite)
30
+ raise "Could not find qlive suite for: #{desired_suite}" unless suite
31
+ describe "suite '#{suite.name}'" do
32
+ extend Qlive::SuitesHelper
33
+
34
+ def visit_qunit_page(suite_name, href)
35
+ using_wait_time(Qlive.setup[:capybara_wait_time]) do # perhaps let individual suites override this value
36
+ Qlive.logger.info "Qlive sending capybara to run '#{suite_name}' on #{href}"
37
+ visit href
38
+ page.html.should_not be_nil
39
+ page.wait_until(Qlive.setup[:capybara_wait_time]) do # hmmmm
40
+ page.evaluate_script('!!window.qunitComplete')
41
+ end
42
+ failure_text = page.evaluate_script("$('li.fail li.fail').text();")
43
+ page.should pass_qunit_tests(failure_text)
44
+ end
45
+ end
46
+
47
+
48
+ before(:each) do
49
+ args[:before_each].call if args[:before_each]
50
+ page.reset!
51
+ end
52
+
53
+ hrefs_for_suite(suite).each do |href|
54
+ it "should pass qunit tests when visiting: #{href}" do
55
+ visit_qunit_page(suite.name, href)
56
+ end
57
+ end
58
+
59
+ after(:each) do
60
+ args[:after_each].call(example) if args[:after_each]
61
+ end
62
+ end
56
63
  end
57
64
 
58
65
  after(:all) do
59
- puts "\nGetting rough with headless webkit_server. In the event of a fatal IO error, use your judgement regarding calling the police."
60
- @headless.destroy if @headless
61
- if Qlive.setup[:after_suites]
62
- Qlive.setup[:after_suites].call
66
+ Qlive.setup[:after_suites].call if Qlive.setup[:after_suites]
67
+ if @headless
68
+ puts "\nGetting rough with headless webkit_server. In the event of a fatal IO error, use your judgement regarding calling the police."
69
+ @headless.destroy
63
70
  end
64
71
  end
72
+
65
73
  end
66
74
  end
75
+
76
+ def resolve_suite(desired_suite)
77
+ #todo: if it ends in .rb, check for the file, and use the path to get the suite
78
+ Qlive::Registry.build_suite(desired_suite)
79
+ end
67
80
  end
68
81
 
69
82
  def self.included(base)
70
- puts "tmp --- included. hi base #{base.inspect}"
71
83
  base.extend ClassMethods
72
84
  end
73
85
 
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["support@proxv.com"]
7
7
  gem.summary = "Run qlive-rails qunit javascript tests headlessly alongside your normal rspec integration examples"
8
8
  gem.description = gem.summary
9
- gem.homepage = "https://github.com/proxv/qlive-rspec/"
9
+ gem.homepage = "https://github.com/proxv/qlive/gems/qlive-rspec/"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = QliveRspec::VERSION
17
17
 
18
- gem.add_dependency "qlive-rails", "~> 0.1.2"
18
+ gem.add_dependency "qlive-rails", "~> 0.2.0"
19
19
  gem.add_dependency "capybara-webkit", "0.10.0"
20
20
  gem.add_dependency "rspec-rails", "~> 2.8.1"
21
21
  gem.add_dependency "headless", "~> 0.3"
@@ -18,12 +18,14 @@ end
18
18
 
19
19
  group :test, :development do
20
20
  gem 'factory_girl_rails', '3.5.0'
21
- gem 'qlive-rails', :require => 'qlive/engine' # https://github.com/proxv/qlive
21
+ gem 'qlive-rails', :path => "#{ENV['PROXV_REPOS']}/qlive/gems/qlive-rails", :require => 'qlive/engine' # https://github.com/proxv/qlive # tmp - del
22
+ #gem 'qlive-rails', :require => 'qlive/engine' # https://github.com/proxv/qlive # tmp - restore
22
23
  end
23
24
 
24
25
  group :test do
25
26
  gem 'rspec-rails', '~> 2.8.1'
26
27
  gem 'capybara-webkit', '0.10.0'
27
28
  gem 'headless', '~> 0.2'
29
+ gem 'qlive', :path => "#{ENV['PROXV_REPOS']}/qlive/gems/qlive" # tmp - del
28
30
  gem 'qlive-rspec', :path => File.expand_path('../../..', __FILE__)
29
31
  end
@@ -7,7 +7,7 @@ https://github.com/mulderp/Backbone-on-Rails-todoDemo
7
7
 
8
8
  ## Run dummy app qlive suites in browser
9
9
  ```
10
- cd qlive-rspec/spec/dummy
10
+ cd qlive/gems/qlive-rspec/spec/dummy
11
11
  rails s
12
12
  http://localhost/qlive
13
13
  ```
@@ -2,12 +2,12 @@ class AddingTodosQlive
2
2
  include Qlive::Suite
3
3
 
4
4
  def pages_to_test
5
- Todo.destroy(Todo.all.map(&:id))
6
- 4.times { FactoryGirl.create(:todo) }
7
5
  [ '/#colors/blue', '/#colors/brown' ]
8
6
  end
9
7
 
10
8
  def before_each_request(rack_request)
9
+ Todo.destroy(Todo.all.map(&:id))
10
+ 4.times { FactoryGirl.create(:todo) }
11
11
  end
12
12
 
13
13
  end
@@ -1,17 +1,17 @@
1
1
  $(document).ready(function() {
2
- module("ajax-creation.js");
2
+ module("test-ajax-creation.js");
3
3
 
4
- test("create new todo item", 2, function() {
4
+ asyncTest("create new todo item", 2, function() {
5
5
  waitFor('items load', function() {
6
6
  return $('#todo-list li').length > 3;
7
7
  }).then(function() {
8
- console.log('Finished fetching existing todo items');
9
8
  var startCount = $('#todo-list li').length;
10
9
  ok($('#todo-list li').length >= 4, "should start with at least 4 items");
11
10
  var input = $('#new-todo');
12
11
  var content = 'Water the dog again';
13
12
  input.val(content).trigger(jQuery.Event('keypress', { keyCode: 13 } ));
14
13
  equal($('#todo-list li').length, startCount + 1, "should add new item to the list");
14
+ start();
15
15
  });
16
16
  });
17
17
  });
@@ -0,0 +1,14 @@
1
+ window.qlog = function(msg, obj) {
2
+ var domConsole = $('#qlog');
3
+ if (!domConsole.length) {
4
+ domConsole = $('<ol id="qlog">Test Log:</ol>').appendTo($('.qlive-structure'));
5
+ }
6
+ if (console && console.log) {
7
+ console.log(msg, obj);
8
+ }
9
+ var li = $('<li>' + msg + '</li>');
10
+ if (obj) {
11
+ li.append('<pre>' + JSON.stringify(obj, null, ' ') + '</pre>');
12
+ }
13
+ li.appendTo(domConsole);
14
+ };
@@ -1,28 +1,46 @@
1
-
2
- var DEFAULT_MAX_DURATION = 9000;
3
-
4
- // note: optionally disable ajax async to reduce the need for waitFor. eg:
5
- // $.ajax({ async: false });
1
+ var DEFAULT_MAX_DURATION = 12000;
6
2
 
7
3
  window.waitFor = function(title, checkFn, opts) {
8
- stop();
4
+ var qunitCurrent = QUnit.config.current; // something is clearing this. Not yet sure why.
9
5
  var defer = jQuery.Deferred();
10
6
  opts = opts || {};
11
7
  var startTime = new Date().getTime();
12
8
  var maxDuration = opts.maxDuration || DEFAULT_MAX_DURATION;
13
9
  var pollInterval = opts.pollInterval || 200;
14
10
  var pollFn = function() {
15
- if (new Date().getTime() > startTime + maxDuration) {
16
- ok(false, 'waitFor "' + title + '" did not complete in ' + maxDuration + ' ms');
11
+ var now = new Date().getTime();
12
+ if (now > startTime + maxDuration) {
13
+ qlog('qq.waitFor "' + title + '" did not complete in ' + maxDuration + ' ms');
14
+ QUnit.config.current = qunitCurrent;
17
15
  defer.reject();
18
- start();
19
- } else if (checkFn()) {
20
- defer.resolve();
21
- start();
16
+ failQunit('qq.waitFor "' + title + '" did not complete in ' + maxDuration + ' ms');
22
17
  } else {
23
- window.setTimeout(pollFn, pollInterval);
18
+ try {
19
+ var isReady = checkFn();
20
+ } catch (err) {
21
+ failQunit('ERROR. qq.waitFor "' + title + '" WAIT function has an error: ' + err.message);
22
+ }
23
+ if (isReady) {
24
+ QUnit.config.current = qunitCurrent;
25
+ qlog('Wait on "' + title + '" completed in ' + (now - startTime) + ' ms');
26
+ try {
27
+ defer.resolve();
28
+ } catch (err) {
29
+ failQunit('ERROR. qq.waitFor "' + title + '" RESOLUTION function has an error: ' + err.message);
30
+ }
31
+ } else {
32
+ window.setTimeout(pollFn, pollInterval);
33
+ }
24
34
  }
25
35
  };
36
+ qlog('Waiting for "' + title + '"');
26
37
  pollFn();
27
38
  return defer.promise();
28
- };
39
+ };
40
+
41
+ function failQunit(msg) {
42
+ qlog(msg);
43
+ ok(false, msg);
44
+ start();
45
+ window.qunitComplete = true;
46
+ }
@@ -0,0 +1,14 @@
1
+ module Regressions
2
+ class SparseContentQlive
3
+ include Qlive::Suite
4
+
5
+ def pages_to_test
6
+ [ '/#colors/red' ]
7
+ end
8
+
9
+ def before_each_request(rack_request)
10
+ Todo.destroy(Todo.all.map(&:id))
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ $(document).ready(function() {
2
+ module("test-empty-list.js");
3
+
4
+ asyncTest("regression test of empty list", 1, function() {
5
+ waitFor('items load', function() {
6
+ return $('#todo-list').length;
7
+ }).then(function() {
8
+ ok($('#create-todo input').length, 'new item input box should render when list is empty');
9
+ start();
10
+ });
11
+ });
12
+ });
@@ -3,5 +3,8 @@ require_relative './spec_helper.rb'
3
3
  include Qlive::Runner
4
4
 
5
5
  describe "qunits" do
6
- run_qlive
6
+ run_qlive(:before_each => lambda {
7
+ # I can do things here like set ENV variables for sauce
8
+ })
9
+
7
10
  end
@@ -2,7 +2,6 @@ ENV["RAILS_ENV"] = 'test'
2
2
  ENV["DUMMY_HOME"] = dummy_home = File.expand_path("../dummy", __FILE__)
3
3
  require File.expand_path("#{dummy_home}/config/environment.rb", __FILE__)
4
4
  require 'rspec/rails'
5
- require 'pp'
6
5
 
7
6
  Dir["#{dummy_home}/spec/spec_support/**/*.rb"].each {|f| require f} # I don't care about Windows
8
7
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qlive-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-04 00:00:00.000000000 Z
12
+ date: 2012-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: qlive-rails
16
- requirement: &2152220460 !ruby/object:Gem::Requirement
16
+ requirement: &2152105900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.1.2
21
+ version: 0.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152220460
24
+ version_requirements: *2152105900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capybara-webkit
27
- requirement: &2152219660 !ruby/object:Gem::Requirement
27
+ requirement: &2152105200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.10.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152219660
35
+ version_requirements: *2152105200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec-rails
38
- requirement: &2152218800 !ruby/object:Gem::Requirement
38
+ requirement: &2152129920 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.8.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152218800
46
+ version_requirements: *2152129920
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: headless
49
- requirement: &2152217960 !ruby/object:Gem::Requirement
49
+ requirement: &2152129080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0.3'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2152217960
57
+ version_requirements: *2152129080
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec-rails
60
- requirement: &2152217160 !ruby/object:Gem::Requirement
60
+ requirement: &2152128520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.8.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152217160
68
+ version_requirements: *2152128520
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: factory_girl_rails
71
- requirement: &2152216260 !ruby/object:Gem::Requirement
71
+ requirement: &2152127640 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 3.5.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2152216260
79
+ version_requirements: *2152127640
80
80
  description: Run qlive-rails qunit javascript tests headlessly alongside your normal
81
81
  rspec integration examples
82
82
  email:
@@ -86,6 +86,7 @@ extensions: []
86
86
  extra_rdoc_files: []
87
87
  files:
88
88
  - .gitignore
89
+ - .rakeTasks
89
90
  - Gemfile
90
91
  - LICENSE
91
92
  - README.md
@@ -139,11 +140,9 @@ files:
139
140
  - spec/dummy/config/initializers/wrap_parameters.rb
140
141
  - spec/dummy/config/locales/en.yml
141
142
  - spec/dummy/config/routes.rb
142
- - spec/dummy/db/development.sqlite3
143
143
  - spec/dummy/db/migrate/20120317122010_create_todos.rb
144
144
  - spec/dummy/db/schema.rb
145
145
  - spec/dummy/db/seeds.rb
146
- - spec/dummy/db/test.sqlite3
147
146
  - spec/dummy/doc/README_FOR_APP
148
147
  - spec/dummy/lib/assets/.gitkeep
149
148
  - spec/dummy/lib/tasks/.gitkeep
@@ -157,64 +156,19 @@ files:
157
156
  - spec/dummy/script/test
158
157
  - spec/dummy/spec/factories/todo_lists.rb
159
158
  - spec/dummy/spec/factories/todos.rb
160
- - spec/dummy/spec/qunits/.DS_Store
161
159
  - spec/dummy/spec/qunits/adding_todos/adding_todos_qlive.rb
162
- - spec/dummy/spec/qunits/adding_todos/ajax-creation.js
163
- - spec/dummy/spec/qunits/qunit_support/qlive_helper.rb
160
+ - spec/dummy/spec/qunits/adding_todos/test-ajax-creation.js
161
+ - spec/dummy/spec/qunits/qunit_support/qunit-logger.js
164
162
  - spec/dummy/spec/qunits/qunit_support/qunit-starter.js
165
163
  - spec/dummy/spec/qunits/qunit_support/wait-for.js
166
- - spec/dummy/tmp/cache/assets/C5B/9C0/sprockets%2Faa69c6a6967552862782c17a264616f0
167
- - spec/dummy/tmp/cache/assets/C85/B80/sprockets%2F98af874023c7cc2924ae87e605711532
168
- - spec/dummy/tmp/cache/assets/C9A/C40/sprockets%2F729f761526e6c21ed96511f7277fe982
169
- - spec/dummy/tmp/cache/assets/C9F/9A0/sprockets%2F1db451c19d955625f00aa51437df3152
170
- - spec/dummy/tmp/cache/assets/CA5/800/sprockets%2F353700484461b1229e7cfb7b7c0ce640
171
- - spec/dummy/tmp/cache/assets/CAB/1F0/sprockets%2F5bc32b49750b54325270c34377ede81e
172
- - spec/dummy/tmp/cache/assets/CAF/6B0/sprockets%2F2b7b92f831e2b43c590ca91b62708395
173
- - spec/dummy/tmp/cache/assets/CBB/2E0/sprockets%2F9f57f2f115170a931f96bdb689312b94
174
- - spec/dummy/tmp/cache/assets/CC1/EC0/sprockets%2Fe6256cd8969bf71b9e18729e631072a2
175
- - spec/dummy/tmp/cache/assets/CD4/C30/sprockets%2Fd166012e1da02d12697c2ee0f574f690
176
- - spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
177
- - spec/dummy/tmp/cache/assets/CDC/F50/sprockets%2F614a5858458b9422d8e266fbaa6310ab
178
- - spec/dummy/tmp/cache/assets/CDF/CB0/sprockets%2Fd6f984ec9cf105b484172a66c00f0561
179
- - spec/dummy/tmp/cache/assets/CFF/170/sprockets%2F4af4a5f916847c198f92a79e8f04287f
180
- - spec/dummy/tmp/cache/assets/D0D/830/sprockets%2F15213ba08baca38d909585e736bb9f44
181
- - spec/dummy/tmp/cache/assets/D10/F10/sprockets%2F349a7d73940a1643fb3de693ca7cd244
182
- - spec/dummy/tmp/cache/assets/D11/2F0/sprockets%2F36fc2e765d9cc09c50c0e55b1933a737
183
- - spec/dummy/tmp/cache/assets/D26/620/sprockets%2F6926777d652a664ceb5aa28666efa7c9
184
- - spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
185
- - spec/dummy/tmp/cache/assets/D3E/F10/sprockets%2F75dd8ecd20427d22139517ae9f25ee2a
186
- - spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
187
- - spec/dummy/tmp/cache/assets/D4E/F70/sprockets%2Fcf5cf57efa2c53a409b80285278e5f77
188
- - spec/dummy/tmp/cache/assets/D52/090/sprockets%2F826a9bb15e4093dd94d248d9f90f9ed2
189
- - spec/dummy/tmp/cache/assets/D53/7D0/sprockets%2F43c0246147f6192dfffbf8f68d793a6e
190
- - spec/dummy/tmp/cache/assets/D53/E30/sprockets%2Fffde997b0d35826e3175caa159968dc4
191
- - spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
192
- - spec/dummy/tmp/cache/assets/D5B/1B0/sprockets%2F36c7e9792a69fd67c686a16e382b5ffa
193
- - spec/dummy/tmp/cache/assets/D68/7D0/sprockets%2Fde9b9f45d0b5fa19cf672371102a1f0f
194
- - spec/dummy/tmp/cache/assets/D6F/C80/sprockets%2F69d138071bef8c9a34324bfdf2fd530d
195
- - spec/dummy/tmp/cache/assets/D71/020/sprockets%2Fe303c90d58293dcd7eb29d633c9cb54a
196
- - spec/dummy/tmp/cache/assets/D76/C40/sprockets%2F5dc3f2334568fee3c23c086463fefa8c
197
- - spec/dummy/tmp/cache/assets/D82/AD0/sprockets%2F042cc68bc2ce132b356c704abfaf107a
198
- - spec/dummy/tmp/cache/assets/D89/0B0/sprockets%2F7c8dc9875c0c22e89fdc595cdd9605f2
199
- - spec/dummy/tmp/cache/assets/D8E/A00/sprockets%2Ff89d78b78be9a45cf7e944a57c82b26c
200
- - spec/dummy/tmp/cache/assets/D90/690/sprockets%2Fce78782d3fc61622015a80c2acc6cdba
201
- - spec/dummy/tmp/cache/assets/D99/330/sprockets%2Fe2a2a8724fee0fb701e358ee266cda62
202
- - spec/dummy/tmp/cache/assets/D99/B80/sprockets%2Fc608b81fe3a10ffee85e0b63e9ca9201
203
- - spec/dummy/tmp/cache/assets/DB0/B80/sprockets%2F96f6192adc54bf98a98d6fa190ebb74b
204
- - spec/dummy/tmp/cache/assets/DC6/AD0/sprockets%2Fcfcccca451e28002deb96721d94e25ce
205
- - spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
206
- - spec/dummy/tmp/cache/assets/DE6/CE0/sprockets%2F6fda7e975c6df54bffda6598f431e5d1
207
- - spec/dummy/tmp/cache/assets/DFD/350/sprockets%2Fdbea6b4a1f0b88258c29c6836bcca6ed
208
- - spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
209
- - spec/dummy/tmp/cache/assets/E39/3B0/sprockets%2F9ae1c4c883d1dd6fc84cdbf1ff55d44f
210
- - spec/dummy/tmp/cache/sass/3a7aef2f892362e6596155ab72cedacbd9a1a7ed/todos.scssc
211
- - spec/dummy/tmp/cache/sass/3ac4a8f3985b4a79a98fc03388b5ded5e9bdc4aa/todos.scssc
164
+ - spec/dummy/spec/qunits/regressions/sparse_content/sparse_content_qlive.rb
165
+ - spec/dummy/spec/qunits/regressions/sparse_content/test-empty-list.js
212
166
  - spec/dummy/vendor/assets/javascripts/.gitkeep
213
167
  - spec/dummy/vendor/assets/stylesheets/.gitkeep
214
168
  - spec/dummy/vendor/plugins/.gitkeep
215
169
  - spec/qunits_spec.rb
216
170
  - spec/spec_helper.rb
217
- homepage: https://github.com/proxv/qlive-rspec/
171
+ homepage: https://github.com/proxv/qlive/gems/qlive-rspec/
218
172
  licenses: []
219
173
  post_install_message:
220
174
  rdoc_options: []
@@ -284,11 +238,9 @@ test_files:
284
238
  - spec/dummy/config/initializers/wrap_parameters.rb
285
239
  - spec/dummy/config/locales/en.yml
286
240
  - spec/dummy/config/routes.rb
287
- - spec/dummy/db/development.sqlite3
288
241
  - spec/dummy/db/migrate/20120317122010_create_todos.rb
289
242
  - spec/dummy/db/schema.rb
290
243
  - spec/dummy/db/seeds.rb
291
- - spec/dummy/db/test.sqlite3
292
244
  - spec/dummy/doc/README_FOR_APP
293
245
  - spec/dummy/lib/assets/.gitkeep
294
246
  - spec/dummy/lib/tasks/.gitkeep
@@ -302,58 +254,13 @@ test_files:
302
254
  - spec/dummy/script/test
303
255
  - spec/dummy/spec/factories/todo_lists.rb
304
256
  - spec/dummy/spec/factories/todos.rb
305
- - spec/dummy/spec/qunits/.DS_Store
306
257
  - spec/dummy/spec/qunits/adding_todos/adding_todos_qlive.rb
307
- - spec/dummy/spec/qunits/adding_todos/ajax-creation.js
308
- - spec/dummy/spec/qunits/qunit_support/qlive_helper.rb
258
+ - spec/dummy/spec/qunits/adding_todos/test-ajax-creation.js
259
+ - spec/dummy/spec/qunits/qunit_support/qunit-logger.js
309
260
  - spec/dummy/spec/qunits/qunit_support/qunit-starter.js
310
261
  - spec/dummy/spec/qunits/qunit_support/wait-for.js
311
- - spec/dummy/tmp/cache/assets/C5B/9C0/sprockets%2Faa69c6a6967552862782c17a264616f0
312
- - spec/dummy/tmp/cache/assets/C85/B80/sprockets%2F98af874023c7cc2924ae87e605711532
313
- - spec/dummy/tmp/cache/assets/C9A/C40/sprockets%2F729f761526e6c21ed96511f7277fe982
314
- - spec/dummy/tmp/cache/assets/C9F/9A0/sprockets%2F1db451c19d955625f00aa51437df3152
315
- - spec/dummy/tmp/cache/assets/CA5/800/sprockets%2F353700484461b1229e7cfb7b7c0ce640
316
- - spec/dummy/tmp/cache/assets/CAB/1F0/sprockets%2F5bc32b49750b54325270c34377ede81e
317
- - spec/dummy/tmp/cache/assets/CAF/6B0/sprockets%2F2b7b92f831e2b43c590ca91b62708395
318
- - spec/dummy/tmp/cache/assets/CBB/2E0/sprockets%2F9f57f2f115170a931f96bdb689312b94
319
- - spec/dummy/tmp/cache/assets/CC1/EC0/sprockets%2Fe6256cd8969bf71b9e18729e631072a2
320
- - spec/dummy/tmp/cache/assets/CD4/C30/sprockets%2Fd166012e1da02d12697c2ee0f574f690
321
- - spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
322
- - spec/dummy/tmp/cache/assets/CDC/F50/sprockets%2F614a5858458b9422d8e266fbaa6310ab
323
- - spec/dummy/tmp/cache/assets/CDF/CB0/sprockets%2Fd6f984ec9cf105b484172a66c00f0561
324
- - spec/dummy/tmp/cache/assets/CFF/170/sprockets%2F4af4a5f916847c198f92a79e8f04287f
325
- - spec/dummy/tmp/cache/assets/D0D/830/sprockets%2F15213ba08baca38d909585e736bb9f44
326
- - spec/dummy/tmp/cache/assets/D10/F10/sprockets%2F349a7d73940a1643fb3de693ca7cd244
327
- - spec/dummy/tmp/cache/assets/D11/2F0/sprockets%2F36fc2e765d9cc09c50c0e55b1933a737
328
- - spec/dummy/tmp/cache/assets/D26/620/sprockets%2F6926777d652a664ceb5aa28666efa7c9
329
- - spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
330
- - spec/dummy/tmp/cache/assets/D3E/F10/sprockets%2F75dd8ecd20427d22139517ae9f25ee2a
331
- - spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
332
- - spec/dummy/tmp/cache/assets/D4E/F70/sprockets%2Fcf5cf57efa2c53a409b80285278e5f77
333
- - spec/dummy/tmp/cache/assets/D52/090/sprockets%2F826a9bb15e4093dd94d248d9f90f9ed2
334
- - spec/dummy/tmp/cache/assets/D53/7D0/sprockets%2F43c0246147f6192dfffbf8f68d793a6e
335
- - spec/dummy/tmp/cache/assets/D53/E30/sprockets%2Fffde997b0d35826e3175caa159968dc4
336
- - spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
337
- - spec/dummy/tmp/cache/assets/D5B/1B0/sprockets%2F36c7e9792a69fd67c686a16e382b5ffa
338
- - spec/dummy/tmp/cache/assets/D68/7D0/sprockets%2Fde9b9f45d0b5fa19cf672371102a1f0f
339
- - spec/dummy/tmp/cache/assets/D6F/C80/sprockets%2F69d138071bef8c9a34324bfdf2fd530d
340
- - spec/dummy/tmp/cache/assets/D71/020/sprockets%2Fe303c90d58293dcd7eb29d633c9cb54a
341
- - spec/dummy/tmp/cache/assets/D76/C40/sprockets%2F5dc3f2334568fee3c23c086463fefa8c
342
- - spec/dummy/tmp/cache/assets/D82/AD0/sprockets%2F042cc68bc2ce132b356c704abfaf107a
343
- - spec/dummy/tmp/cache/assets/D89/0B0/sprockets%2F7c8dc9875c0c22e89fdc595cdd9605f2
344
- - spec/dummy/tmp/cache/assets/D8E/A00/sprockets%2Ff89d78b78be9a45cf7e944a57c82b26c
345
- - spec/dummy/tmp/cache/assets/D90/690/sprockets%2Fce78782d3fc61622015a80c2acc6cdba
346
- - spec/dummy/tmp/cache/assets/D99/330/sprockets%2Fe2a2a8724fee0fb701e358ee266cda62
347
- - spec/dummy/tmp/cache/assets/D99/B80/sprockets%2Fc608b81fe3a10ffee85e0b63e9ca9201
348
- - spec/dummy/tmp/cache/assets/DB0/B80/sprockets%2F96f6192adc54bf98a98d6fa190ebb74b
349
- - spec/dummy/tmp/cache/assets/DC6/AD0/sprockets%2Fcfcccca451e28002deb96721d94e25ce
350
- - spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
351
- - spec/dummy/tmp/cache/assets/DE6/CE0/sprockets%2F6fda7e975c6df54bffda6598f431e5d1
352
- - spec/dummy/tmp/cache/assets/DFD/350/sprockets%2Fdbea6b4a1f0b88258c29c6836bcca6ed
353
- - spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
354
- - spec/dummy/tmp/cache/assets/E39/3B0/sprockets%2F9ae1c4c883d1dd6fc84cdbf1ff55d44f
355
- - spec/dummy/tmp/cache/sass/3a7aef2f892362e6596155ab72cedacbd9a1a7ed/todos.scssc
356
- - spec/dummy/tmp/cache/sass/3ac4a8f3985b4a79a98fc03388b5ded5e9bdc4aa/todos.scssc
262
+ - spec/dummy/spec/qunits/regressions/sparse_content/sparse_content_qlive.rb
263
+ - spec/dummy/spec/qunits/regressions/sparse_content/test-empty-list.js
357
264
  - spec/dummy/vendor/assets/javascripts/.gitkeep
358
265
  - spec/dummy/vendor/assets/stylesheets/.gitkeep
359
266
  - spec/dummy/vendor/plugins/.gitkeep