diff --git a/.gitignore b/.gitignore index e62133f0..90632c82 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ manifest.yml config/unicorn.rb db/schema.rb .local/ +spec/examples.txt diff --git a/Gemfile b/Gemfile index 38a6e161..336747f5 100644 --- a/Gemfile +++ b/Gemfile @@ -152,7 +152,7 @@ group :development do group :test do gem 'coveralls', '~> 0.8.12', require: false - gem 'capybara', '~> 2.13.0' + gem 'capybara', '~> 2.18' gem 'capybara-screenshot' gem 'capybara-select2', require: false gem 'delorean' @@ -160,9 +160,9 @@ group :development do gem 'pry-rails' gem 'pry-byebug' gem 'rr' - gem 'rspec', '~> 3.5' + gem 'rspec', '~> 3.7' gem 'rspec-collection_matchers', '~> 1.1.0' - gem 'rspec-rails', '~> 3.5.2' + gem 'rspec-rails', '~> 3.7' gem 'rspec-html-matchers', '~> 0.8' gem 'rails-controller-testing' gem 'shoulda-matchers' diff --git a/Gemfile.lock b/Gemfile.lock index 62d4f164..85ce5cd7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -136,8 +136,8 @@ GEM i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - addressable (2.5.1) - public_suffix (~> 2.0, >= 2.0.2) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) arel (9.0.0) aws-sdk-core (2.2.15) jmespath (~> 1.0) @@ -163,13 +163,13 @@ GEM capistrano-rails (1.1.3) capistrano (~> 3.1) capistrano-bundler (~> 1.1) - capybara (2.13.0) + capybara (2.18.0) addressable - mime-types (>= 1.16) + mini_mime (>= 0.1.3) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) - xpath (~> 2.0) + xpath (>= 2.0, < 4.0) capybara-screenshot (1.0.17) capybara (>= 1.0, < 3) launchy @@ -466,7 +466,7 @@ GEM pry (~> 0.10) pry-rails (0.3.4) pry (>= 0.9.10) - public_suffix (2.0.5) + public_suffix (3.0.2) rack (2.0.4) rack-livereload (0.3.16) rack @@ -521,32 +521,32 @@ GEM netrc (~> 0.8) retriable (3.0.2) rr (1.1.2) - rspec (3.5.0) - rspec-core (~> 3.5.0) - rspec-expectations (~> 3.5.0) - rspec-mocks (~> 3.5.0) + rspec (3.7.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) rspec-collection_matchers (1.1.2) rspec-expectations (>= 2.99.0.beta1) - rspec-core (3.5.4) - rspec-support (~> 3.5.0) - rspec-expectations (3.5.0) + rspec-core (3.7.1) + rspec-support (~> 3.7.0) + rspec-expectations (3.7.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.5.0) + rspec-support (~> 3.7.0) rspec-html-matchers (0.9.1) nokogiri (~> 1) rspec (>= 3.0.0.a, < 4) - rspec-mocks (3.5.0) + rspec-mocks (3.7.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.5.0) - rspec-rails (3.5.2) + rspec-support (~> 3.7.0) + rspec-rails (3.7.2) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 3.5.0) - rspec-expectations (~> 3.5.0) - rspec-mocks (~> 3.5.0) - rspec-support (~> 3.5.0) - rspec-support (3.5.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-support (~> 3.7.0) + rspec-support (3.7.1) rturk (2.12.1) erector nokogiri @@ -653,8 +653,8 @@ GEM httparty (> 0.6.0) json (> 1.4.0) xmpp4r (0.5.6) - xpath (2.0.0) - nokogiri (~> 1.3) + xpath (3.0.0) + nokogiri (~> 1.8) PLATFORMS ruby @@ -669,7 +669,7 @@ DEPENDENCIES capistrano (~> 3.4.0) capistrano-bundler (~> 1.1.4) capistrano-rails (~> 1.1) - capybara (~> 2.13.0) + capybara (~> 2.18) capybara-screenshot capybara-select2 coffee-rails (~> 4.2) @@ -737,10 +737,10 @@ DEPENDENCIES rails-html-sanitizer (~> 1.0.4) rb-kqueue (>= 0.2) rr - rspec (~> 3.5) + rspec (~> 3.7) rspec-collection_matchers (~> 1.1.0) rspec-html-matchers (~> 0.8) - rspec-rails (~> 3.5.2) + rspec-rails (~> 3.7) rturk (~> 2.12.1) ruby-growl (~> 4.1.0) rufus-scheduler (~> 3.4.2) diff --git a/app/controllers/jobs_controller.rb b/app/controllers/jobs_controller.rb index 00b9d257..ff49fe8b 100644 --- a/app/controllers/jobs_controller.rb +++ b/app/controllers/jobs_controller.rb @@ -2,7 +2,7 @@ class JobsController < ApplicationController before_action :authenticate_admin! def index - @jobs = Delayed::Job.order("coalesce(failed_at,'1000-01-01'), run_at asc").page(params[:page]) + @jobs = Delayed::Job.order(Arel.sql("coalesce(failed_at,'1000-01-01'), run_at asc")).page(params[:page]) respond_to do |format| format.html { render layout: !request.xhr? } diff --git a/app/controllers/worker_status_controller.rb b/app/controllers/worker_status_controller.rb index dc027bb6..4abd0514 100644 --- a/app/controllers/worker_status_controller.rb +++ b/app/controllers/worker_status_controller.rb @@ -8,7 +8,7 @@ class WorkerStatusController < ApplicationController events = events.where('id > ?', since_id) end - result = events.select('COUNT(id) AS count', 'MIN(id) AS min_id', 'MAX(id) AS max_id').reorder('min(created_at)').first + result = events.select('COUNT(id) AS count', 'MIN(id) AS min_id', 'MAX(id) AS max_id').reorder(Arel.sql('min(created_at)')).first count, min_id, max_id = result.count, result.min_id, result.max_id case max_id diff --git a/app/helpers/agent_helper.rb b/app/helpers/agent_helper.rb index 3dd7ca13..b6d17498 100644 --- a/app/helpers/agent_helper.rb +++ b/app/helpers/agent_helper.rb @@ -104,13 +104,13 @@ module AgentHelper agent_ids = agents.map(&:id) cache[:links_as_receiver] = Hash[Link.where(receiver_id: agent_ids) .group(:receiver_id) - .pluck('receiver_id', 'count(receiver_id) as id')] + .pluck(:receiver_id, Arel.sql('count(receiver_id) as id'))] cache[:links_as_source] = Hash[Link.where(source_id: agent_ids) .group(:source_id) - .pluck('source_id', 'count(source_id) as id')] + .pluck(:source_id, Arel.sql('count(source_id) as id'))] cache[:control_links_as_controller] = Hash[ControlLink.where(controller_id: agent_ids) .group(:controller_id) - .pluck('controller_id', 'count(controller_id) as id')] + .pluck(:controller_id, Arel.sql('count(controller_id) as id'))] end end end diff --git a/spec/controllers/agents_controller_spec.rb b/spec/controllers/agents_controller_spec.rb index c9054133..5e9a75a1 100644 --- a/spec/controllers/agents_controller_spec.rb +++ b/spec/controllers/agents_controller_spec.rb @@ -258,7 +258,7 @@ describe AgentsController do post :update, params: {:id => agents(:bob_website_agent).to_param, :agent => valid_attributes(:name => "New name")}, :format => :json expect(agents(:bob_website_agent).reload.name).to eq("New name") expect(JSON.parse(response.body)['name']).to eq("New name") - expect(response).to be_success + expect(response).to be_successful end it "will not accept Agent sources owned by other users" do diff --git a/spec/controllers/web_requests_controller_spec.rb b/spec/controllers/web_requests_controller_spec.rb index b4f1b4a8..a1c54122 100644 --- a/spec/controllers/web_requests_controller_spec.rb +++ b/spec/controllers/web_requests_controller_spec.rb @@ -29,7 +29,7 @@ describe WebRequestsController do post :handle_request, params: {:user_id => users(:bob).to_param, :agent_id => @agent.id, :secret => "my_secret", :key => "value", :another_key => "5"} expect(@agent.reload.last_web_request_at).to be_within(2).of(Time.now) expect(response.body).to eq("success") - expect(response).to be_success + expect(response).to be_successful end it "should call receive_web_request" do @@ -40,12 +40,12 @@ describe WebRequestsController do expect(@agent.memory[:web_request_method]).to eq("post") expect(response.body).to eq("success") expect(response.headers['Content-Type']).to eq('text/plain; charset=utf-8') - expect(response).to be_success + expect(response).to be_successful post :handle_request, params: {:user_id => users(:bob).to_param, :agent_id => @agent.id, :secret => "not_my_secret", :no => "go"} expect(@agent.reload.memory[:web_request_values]).not_to eq({ 'no' => "go" }) expect(response.body).to eq("failure") - expect(response).to be_missing + expect(response.status).to eq(404) end it "should accept gets" do @@ -55,7 +55,7 @@ describe WebRequestsController do expect(@agent.memory[:web_request_format]).to eq("text/html") expect(@agent.memory[:web_request_method]).to eq("get") expect(response.body).to eq("success") - expect(response).to be_success + expect(response).to be_successful end it "should pass through the received format" do @@ -109,12 +109,12 @@ describe WebRequestsController do it "should fail on incorrect users" do post :handle_request, params: {:user_id => users(:jane).to_param, :agent_id => @agent.id, :secret => "my_secret", :no => "go"} - expect(response).to be_missing + expect(response.status).to eq(404) end it "should fail on incorrect agents" do post :handle_request, params: {:user_id => users(:bob).to_param, :agent_id => 454545, :secret => "my_secret", :no => "go"} - expect(response).to be_missing + expect(response.status).to eq(404) end describe "legacy update_location endpoint" do @@ -141,7 +141,7 @@ describe WebRequestsController do it "should raise a 404 error when given an invalid user id" do post :update_location, params: {user_id: "123", secret: "not_my_secret", longitude: 123, latitude: 45, something: "else"} - expect(response).to be_missing + expect(response.status).to eq(404) end it "should only look at agents with the given secret" do diff --git a/spec/models/agents/imap_folder_agent_spec.rb b/spec/models/agents/imap_folder_agent_spec.rb index ea04d120..7a5d435f 100644 --- a/spec/models/agents/imap_folder_agent_spec.rb +++ b/spec/models/agents/imap_folder_agent_spec.rb @@ -215,7 +215,7 @@ describe Agents::ImapFolderAgent do }) expect(Event.last.payload).to eq(expected_payloads.last.update( - 'body' => "