diff --git a/Gemfile b/Gemfile index 1a74167300b..fcec6dca19d 100644 --- a/Gemfile +++ b/Gemfile @@ -188,10 +188,7 @@ group :test do gem 'rspec-legacy_formatters', '~> 1.0.1', require: false # brings back testing for 'assigns' and 'assert_template' extracted in rails 5 - # TODO: 1.0.1 still contains an issue that breaks helper inclusion in view specs - # Constrain value once new version released. - # More information: https://github.com/rspec/rspec-rails/issues/1644 - gem 'rails-controller-testing', git: 'https://github.com/rails/rails-controller-testing/' + gem 'rails-controller-testing', '~> 1.0.2' gem 'aws-sdk', '~> 2.10.1' gem 'capybara', '~> 2.13.0' diff --git a/Gemfile.lock b/Gemfile.lock index 6f1c65a85a6..303d2d6088e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -77,15 +77,6 @@ GIT rails-angular-xss (0.3.0.pre.pre) rails (>= 5.0.0, < 5.1) -GIT - remote: https://github.com/rails/rails-controller-testing/ - revision: d942a5d239a4b34cf93e86ca35e49f464e516ede - specs: - rails-controller-testing (1.0.1) - actionpack (~> 5.x) - actionview (~> 5.x) - activesupport (~> 5.x) - GIT remote: https://github.com/rspec/rspec-activemodel-mocks revision: 5cd4c9d552bcc75d60ea4b7dda96e7377197ab8d @@ -436,6 +427,10 @@ GEM bundler (>= 1.3.0, < 2.0) railties (= 5.0.4) sprockets-rails (>= 2.0.0) + rails-controller-testing (1.0.2) + actionpack (~> 5.x, >= 5.0.1) + actionview (~> 5.x, >= 5.0.1) + activesupport (~> 5.x) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) @@ -685,7 +680,7 @@ DEPENDENCIES rack_session_access rails (~> 5.0.4) rails-angular-xss! - rails-controller-testing! + rails-controller-testing (~> 1.0.2) rails_12factor rails_autolink (~> 1.1.6) rdoc (>= 2.4.2) diff --git a/app/controllers/api/v2/custom_fields_controller.rb b/app/controllers/api/v2/custom_fields_controller.rb index 9f45f1a9da7..b2038c6063c 100644 --- a/app/controllers/api/v2/custom_fields_controller.rb +++ b/app/controllers/api/v2/custom_fields_controller.rb @@ -40,6 +40,7 @@ module Api .visible_by_user(User.current) .includes(:projects, :types) .order(:id) + other_fields = CustomField.where("type != 'WorkPackageCustomField'") .order(:type, :id) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4ab1227f908..5e2bc57e428 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -105,7 +105,7 @@ class ApplicationController < ActionController::Base end rescue_from ActionController::ParameterMissing do |exception| - render text: "Required parameter missing: #{exception.param}", + render body: "Required parameter missing: #{exception.param}", status: :bad_request end diff --git a/app/controllers/mail_handler_controller.rb b/app/controllers/mail_handler_controller.rb index ed018c707a4..67b612cb730 100644 --- a/app/controllers/mail_handler_controller.rb +++ b/app/controllers/mail_handler_controller.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -39,9 +40,9 @@ class MailHandlerController < ActionController::Base options = params.dup email = options.delete(:email) if MailHandler.receive(email, options) - render nothing: true, status: :created + head :created else - render nothing: true, status: :unprocessable_entity + head :unprocessable_entity end end @@ -50,7 +51,7 @@ class MailHandlerController < ActionController::Base def check_credential User.current = nil unless Setting.mail_handler_api_enabled? && params[:key].to_s == Setting.mail_handler_api_key - render text: 'Access denied. Incoming emails WS is disabled or key is invalid.', status: 403 + render plain: 'Access denied. Incoming emails WS is disabled or key is invalid.', status: 403 end end end diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index ecea6c308c4..1bb70ab7ec7 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -244,7 +245,7 @@ class MyController < ApplicationController @user.pref[:my_page_layout] = layout @user.pref.save - render nothing: true + head :ok end def default_breadcrumb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index d64ffb0a32b..001ffdf0b36 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -117,12 +117,14 @@ class ProjectsController < ApplicationController cond = @project.project_condition(Setting.display_subprojects_work_packages?) - @open_issues_by_type = WorkPackage.visible.group(:type) + @open_issues_by_type = WorkPackage + .visible.group(:type) .includes(:project, :status, :type) .where(["(#{cond}) AND #{Status.table_name}.is_closed=?", false]) .references(:projects, :statuses, :types) .count - @total_issues_by_type = WorkPackage.visible.group(:type) + @total_issues_by_type = WorkPackage + .visible.group(:type) .includes(:project, :status, :type) .where(cond) .references(:projects, :statuses, :types) diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb index 55206df6f64..b70911404a6 100644 --- a/app/controllers/settings_controller.rb +++ b/app/controllers/settings_controller.rb @@ -39,12 +39,8 @@ class SettingsController < ApplicationController def edit @notifiables = Redmine::Notifiable.all - if request.post? && params[:settings] && params[:settings].is_a?(ActionController::Parameters) - settings = (params[:settings] || {}).dup.symbolize_keys.tap do |set| - set.except! *password_settings if OpenProject::Configuration.disable_password_login? - end - - settings.each do |name, value| + if request.post? && params[:settings] + permitted_params.settings.to_h.each do |name, value| if value.is_a?(Array) # remove blank values in array settings value.delete_if(&:blank?) @@ -90,15 +86,4 @@ class SettingsController < ApplicationController def show_local_breadcrumb true end - - private - - ## - # Returns all password-login related setting keys. - def password_settings - [ - :password_min_length, :password_active_rules, :password_min_adhered_rules, - :password_days_valid, :password_count_former_banned, :lost_password - ] - end end diff --git a/app/controllers/sys_controller.rb b/app/controllers/sys_controller.rb index e49925f9f76..f94428821c7 100644 --- a/app/controllers/sys_controller.rb +++ b/app/controllers/sys_controller.rb @@ -45,7 +45,7 @@ class SysController < ActionController::Base render json: p.to_json(include: :repository) end format.any(:html, :xml) do - render xml: p.to_xml(include: :repository), content_type: Mime::XML + render xml: p.to_xml(include: :repository), content_type: Mime[:xml] end end end @@ -68,9 +68,9 @@ class SysController < ActionController::Base project.repository.fetch_changesets end end - render nothing: true, status: 200 + head 200 rescue ActiveRecord::RecordNotFound - render nothing: true, status: 404 + head 404 end def repo_auth diff --git a/app/controllers/timelog_controller.rb b/app/controllers/timelog_controller.rb index 168f4d5582d..1582fd27216 100644 --- a/app/controllers/timelog_controller.rb +++ b/app/controllers/timelog_controller.rb @@ -137,7 +137,7 @@ class TimelogController < ApplicationController respond_to do |format| # TODO: Implement html response format.html do - render nothing: true, status: 406 + head 406 end end end @@ -173,7 +173,7 @@ class TimelogController < ApplicationController respond_to do |format| format.html do flash[:notice] = l(:notice_successful_delete) - redirect_to :back + redirect_back fallback_location: { action: 'index', project_id: @time_entry.project } end format.json do render json: { text: l(:notice_successful_delete) } @@ -183,7 +183,7 @@ class TimelogController < ApplicationController respond_to do |format| format.html do flash[:error] = l(:notice_unable_delete_time_entry) - redirect_to :back + redirect_back fallback_location: { action: 'index', project_id: @time_entry.project } end format.json do render json: { isError: true, text: l(:notice_unable_delete_time_entry) } diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1d297a3bd42..ceeb6e83bfd 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -166,7 +166,7 @@ class UsersController < ApplicationController respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) - redirect_to :back + redirect_back(fallback_location: edit_user_path(@user)) end end else @@ -176,7 +176,9 @@ class UsersController < ApplicationController @user.password = @user.password_confirmation = nil respond_to do |format| - format.html do render action: :edit end + format.html do + render action: :edit + end end end rescue ::ActionController::RedirectBackError diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index fec91214094..668ff6d1653 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -114,7 +114,7 @@ class WikiController < ApplicationController @content.author = User.current if @page.save - attachments = Attachment.attach_files(@page, params[:attachments]) + attachments = Attachment.attach_files(@page, permitted_params.attachments.to_h) render_attachment_warning_if_needed(@page) call_hook(:controller_wiki_edit_after_save, params: params, page: @page) flash[:notice] = l(:notice_successful_create) @@ -192,7 +192,7 @@ class WikiController < ApplicationController @content.comments = nil if !@page.new_record? && params[:content].present? && @content.text == params[:content][:text] - attachments = Attachment.attach_files(@page, params[:attachments]) + attachments = Attachment.attach_files(@page, permitted_params.attachments.to_h) render_attachment_warning_if_needed(@page) # don't save if text wasn't changed redirect_to_show @@ -203,7 +203,7 @@ class WikiController < ApplicationController @content.add_journal User.current, params['content']['comments'] # if page is new @page.save will also save content, but not if page isn't a new record if @page.new_record? ? @page.save : @content.save - attachments = Attachment.attach_files(@page, params[:attachments]) + attachments = Attachment.attach_files(@page, permitted_params.attachments.to_h) render_attachment_warning_if_needed(@page) call_hook(:controller_wiki_edit_after_save, params: params, page: @page) flash[:notice] = l(:notice_successful_update) @@ -359,7 +359,7 @@ class WikiController < ApplicationController def add_attachment return render_403 unless editable? - attachments = Attachment.attach_files(@page, params[:attachments]) + attachments = Attachment.attach_files(@page, permitted_params.attachments.to_h) render_attachment_warning_if_needed(@page) redirect_to action: 'show', id: @page, project_id: @project end diff --git a/app/controllers/workflows_controller.rb b/app/controllers/workflows_controller.rb index 7565a704659..0ccd4e399db 100644 --- a/app/controllers/workflows_controller.rb +++ b/app/controllers/workflows_controller.rb @@ -43,7 +43,7 @@ class WorkflowsController < ApplicationController @type = ::Type.find_by(id: params[:type_id]) if request.post? - Workflow.destroy_all(['role_id=? and type_id=?', @role.id, @type.id]) + Workflow.where(role_id: @role.id, type_id: @type.id).delete_all (params[:status] || []).each do |status_id, transitions| transitions.each { |new_status_id, options| author = options.is_a?(Array) && options.include?('author') && !options.include?('always') diff --git a/app/models/permitted_params.rb b/app/models/permitted_params.rb index 1776b8c7e7b..1d0732c5443 100644 --- a/app/models/permitted_params.rb +++ b/app/models/permitted_params.rb @@ -190,6 +190,24 @@ class PermittedParams params.require(:status).permit(*self.class.permitted_attributes[:status]) end + def settings + permitted_params = params.require(:settings).permit + + all_setting_keys = Setting.available_settings.keys + all_valid_keys = if OpenProject::Configuration.disable_password_login? + all_setting_keys - %w(password_min_length + password_active_rules + password_min_adhered_rules + password_days_valid + password_count_former_banned + lost_password) + else + all_setting_keys + end + + permitted_params.merge(params[:settings].to_unsafe_hash.slice(*all_valid_keys)) + end + def user permitted_params = params.require(:user).permit(*self.class.permitted_attributes[:user]) permitted_params = permitted_params.merge(custom_field_values(:user)) @@ -198,7 +216,8 @@ class PermittedParams end def user_register_via_omniauth - permitted_params = params.require(:user) \ + permitted_params = params + .require(:user) .permit(:login, :firstname, :lastname, :mail, :language) permitted_params = permitted_params.merge(custom_field_values(:user)) @@ -241,6 +260,14 @@ class PermittedParams params.require(:type).permit(*self.class.permitted_attributes[:move_to]) end + def timelog + params.permit(:period, + :period_type, + :from, + :to, + criterias: []) + end + def search params.permit(*self.class.permitted_attributes[:search]) end @@ -416,6 +443,10 @@ class PermittedParams :reported_project_status_comment) end + def repository_diff + params.permit(:rev, :rev_to, :project, :action, :controller) + end + def membership params.require(:membership).permit(*self.class.permitted_attributes[:membership]) end diff --git a/app/models/status.rb b/app/models/status.rb index 83b4b9d8dd8..bd5adf0f449 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -112,6 +112,9 @@ class Status < ActiveRecord::Base # Deletes associated workflows def delete_workflows - Workflow.delete_all(['old_status_id = :id OR new_status_id = :id', { id: id }]) + Workflow + .where(old_status_id: id) + .or(Workflow.where(new_status_id: id)) + .delete_all end end diff --git a/app/views/repositories/diff.html.erb b/app/views/repositories/diff.html.erb index 4906498baba..2a26d841f92 100644 --- a/app/views/repositories/diff.html.erb +++ b/app/views/repositories/diff.html.erb @@ -38,10 +38,10 @@ See doc/COPYRIGHT.rdoc for more details. <% end %> <% cache(@cache_key) do -%> - <%= render partial: 'common/diff', locals: {diff: @diff, diff_type: @diff_type} %> + <%= render partial: 'common/diff', locals: { diff: @diff, diff_type: @diff_type } %> <% end -%> <%= other_formats_links do |f| %> - <%= f.link_to 'Diff', url: params, caption: 'Unified diff' %> + <%= f.link_to 'Diff', url: permitted_params.repository_diff.to_h, caption: 'Unified diff' %> <% end %> <% html_title(h(with_leading_slash(@path)), 'Diff') -%> diff --git a/app/views/time_entries/reports/show.html.erb b/app/views/time_entries/reports/show.html.erb index 97de1b1260a..368ad360e4e 100644 --- a/app/views/time_entries/reports/show.html.erb +++ b/app/views/time_entries/reports/show.html.erb @@ -147,7 +147,7 @@ See doc/COPYRIGHT.rdoc for more details. <%= other_formats_links do |f| %> - <%= f.link_to 'CSV', url: params %> + <%= f.link_to 'CSV', url: permitted_params.timelog.to_h %> <% end %> <% end %> <% end %> diff --git a/app/views/timelog/index.html.erb b/app/views/timelog/index.html.erb index c59970a7461..de68f9aea8b 100644 --- a/app/views/timelog/index.html.erb +++ b/app/views/timelog/index.html.erb @@ -56,8 +56,8 @@ See doc/COPYRIGHT.rdoc for more details. <%= other_formats_links do |f| %> - <%= f.link_to 'Atom', url: params.merge({issue_id: @issue, key: User.current.rss_key}) %> - <%= f.link_to 'CSV', url: params %> + <%= f.link_to 'Atom', url: permitted_params.timelog.to_h.merge({issue_id: @issue, key: User.current.rss_key}) %> + <%= f.link_to 'CSV', url: permitted_params.timelog.to_h %> <% end %> <% end %> diff --git a/config/application.rb b/config/application.rb index 287b8e1c342..b6c67840052 100644 --- a/config/application.rb +++ b/config/application.rb @@ -48,10 +48,6 @@ end require 'rails/all' -if Rails.env.production? || (Rails.env.test? && ENV['CI']) - ActiveSupport::Deprecation.behavior = :silence -end - if defined?(Bundler) # lib directory has to be added to the load path so that # the open_project/plugins files can be found (places under lib). @@ -71,7 +67,6 @@ if defined?(Bundler) end require File.dirname(__FILE__) + '/../lib/open_project/configuration' -require File.dirname(__FILE__) + '/../app/middleware/params_parser_with_exclusion' require File.dirname(__FILE__) + '/../app/middleware/reset_current_user' module OpenProject @@ -95,11 +90,6 @@ module OpenProject content_type != 'application/x-gzip' } - config.middleware.use ::ParamsParserWithExclusion, - exclude: -> (env) { - env['PATH_INFO'] =~ /\/api\/v3/ - } - config.middleware.use Rack::Attack # Ensure that tempfiles are cleared after request # http://stackoverflow.com/questions/4590229 diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb index 3ff5c9096e5..f5416ff0a7b 100644 --- a/config/initializers/10-patches.rb +++ b/config/initializers/10-patches.rb @@ -41,90 +41,6 @@ module ActiveRecord end end -module ActiveModel - class Errors - ## - # ActiveRecord errors do provide no means to access the symbols initially used to create an - # error. E.g. errors.add :foo, :bar instantly translates :bar, making it hard to write code - # dependent on specific errors (which we use in the APIv3). - # We therefore add a second information store containing pairs of [symbol, translated_message]. - def add_with_storing_error_symbols(attribute, message = :invalid, options = {}) - error_symbol = options.fetch(:error_symbol) { message } - add_without_storing_error_symbols(attribute, message, options) - - if store_new_symbols? - if error_symbol.is_a?(Symbol) - symbol = error_symbol - partial_message = normalize_message(attribute, message, options) - full_message = full_message(attribute, partial_message) - else - symbol = :unknown - full_message = message - end - - writable_symbols_and_messages_for(attribute) << [symbol, full_message, partial_message] - end - end - - alias_method_chain :add, :storing_error_symbols - - def symbols_and_messages_for(attribute) - writable_symbols_and_messages_for(attribute).dup - end - - def symbols_for(attribute) - symbols_and_messages_for(attribute).map(&:first) - end - - def full_message(attribute, message) - return message if attribute == :base - - # if a model acts_as_customizable it will inject attributes like 'custom_field_1' into itself - # using attr_name_override we resolve names of such attributes. - # The rest of the method should reflect the original method implementation of ActiveModel - attr_name_override = nil - match = /\Acustom_field_(?\d+)\z/.match(attribute) - if match - attr_name_override = CustomField.find_by(id: match[:id]).name - end - - attr_name = attribute.to_s.gsub('.', '_').humanize - attr_name = @base.class.human_attribute_name(attribute, default: attr_name) - I18n.t(:"errors.format", default: '%{attribute} %{message}', - attribute: attr_name_override || attr_name, - message: message) - end - - # Need to do the house keeping along with AR::Errors - # so that the symbols are removed when a new validation round starts - def clear_with_storing_error_symbols - clear_without_storing_error_symbols - - @error_symbols = Hash.new - end - - alias_method_chain :clear, :storing_error_symbols - - private - - def error_symbols - @error_symbols ||= Hash.new - end - - def writable_symbols_and_messages_for(attribute) - error_symbols[attribute.to_sym] ||= [] - end - - # Kind of a hack: We need the possibility to temporarily disable symbol storing in the subclass - # Reform::Contract::Errors, because otherwise we end up with duplicate entries - # I feel dirty for doing that, but on the other hand I see no other way out... Please, stop me! - def store_new_symbols? - @store_new_symbols = true if @store_new_symbols.nil? - @store_new_symbols - end - end -end - module ActionView module Helpers module Tags @@ -219,14 +135,6 @@ module ActionView end end end - - module AssetTagHelper - def auto_discovery_link_tag_with_no_atom_feeds(type = :rss, url_options = {}, tag_options = {}) - return if (type == :atom) && Setting.table_exists? && !Setting.feeds_enabled? - auto_discovery_link_tag_without_no_atom_feeds(type, url_options, tag_options) - end - alias_method_chain :auto_discovery_link_tag, :no_atom_feeds - end end end diff --git a/app/middleware/params_parser_with_exclusion.rb b/config/initializers/action_view_helpers_asset_tag_helper_patch.rb similarity index 77% rename from app/middleware/params_parser_with_exclusion.rb rename to config/initializers/action_view_helpers_asset_tag_helper_patch.rb index d080a1b09ca..b368b8b6294 100644 --- a/app/middleware/params_parser_with_exclusion.rb +++ b/config/initializers/action_view_helpers_asset_tag_helper_patch.rb @@ -1,3 +1,5 @@ +#-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,18 +28,12 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -class ParamsParserWithExclusion < ::ActionDispatch::ParamsParser - def initialize(app, options = {}) - super(app) +module OpenProject::ActionViewHelpersAssetTagHelperPatch + def auto_discovery_link_tag(type = :rss, url_options = {}, tag_options = {}) + return if (type == :atom) && Setting.table_exists? && !Setting.feeds_enabled? - @exclude = options[:exclude] - end - - def call(env) - if @exclude && @exclude.call(env) - @app.call(env) - else - super(env) - end + super end end + +ActionView::Helpers::AssetTagHelper.prepend(OpenProject::ActionViewHelpersAssetTagHelperPatch) diff --git a/config/initializers/active_model_errors_patch.rb b/config/initializers/active_model_errors_patch.rb new file mode 100644 index 00000000000..528910fb71f --- /dev/null +++ b/config/initializers/active_model_errors_patch.rb @@ -0,0 +1,109 @@ +#-- encoding: UTF-8 + +#-- copyright +# OpenProject is a project management system. +# Copyright (C) 2012-2017 the OpenProject Foundation (OPF) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2017 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See doc/COPYRIGHT.rdoc for more details. +#++ + +module OpenProject::ActiveModelErrorsPatch + ## + # ActiveRecord errors do provide no means to access the symbols initially used to create an + # error. E.g. errors.add :foo, :bar instantly translates :bar, making it hard to write code + # dependent on specific errors (which we use in the APIv3). + # We therefore add a second information store containing pairs of [symbol, translated_message]. + def add(attribute, message = :invalid, options = {}) + error_symbol = options.fetch(:error_symbol) { message } + super(attribute, message, options) + + if store_new_symbols? + if error_symbol.is_a?(Symbol) + symbol = error_symbol + partial_message = normalize_message(attribute, message, options) + full_message = full_message(attribute, partial_message) + else + symbol = :unknown + full_message = message + end + + writable_symbols_and_messages_for(attribute) << [symbol, full_message, partial_message] + end + end + + def symbols_and_messages_for(attribute) + writable_symbols_and_messages_for(attribute).dup + end + + def symbols_for(attribute) + symbols_and_messages_for(attribute).map(&:first) + end + + def full_message(attribute, message) + return message if attribute == :base + + # if a model acts_as_customizable it will inject attributes like 'custom_field_1' into itself + # using attr_name_override we resolve names of such attributes. + # The rest of the method should reflect the original method implementation of ActiveModel + attr_name_override = nil + match = /\Acustom_field_(?\d+)\z/.match(attribute) + if match + attr_name_override = CustomField.find_by(id: match[:id]).name + end + + attr_name = attribute.to_s.tr('.', '_').humanize + attr_name = @base.class.human_attribute_name(attribute, default: attr_name) + I18n.t(:"errors.format", default: '%{attribute} %{message}', + attribute: attr_name_override || attr_name, + message: message) + end + + # Need to do the house keeping along with AR::Errors + # so that the symbols are removed when a new validation round starts + def clear + super + + @error_symbols = Hash.new + end + + private + + def error_symbols + @error_symbols ||= Hash.new + end + + def writable_symbols_and_messages_for(attribute) + error_symbols[attribute.to_sym] ||= [] + end + + # Kind of a hack: We need the possibility to temporarily disable symbol storing in the subclass + # Reform::Contract::Errors, because otherwise we end up with duplicate entries + # I feel dirty for doing that, but on the other hand I see no other way out... Please, stop me! + def store_new_symbols? + @store_new_symbols = true if @store_new_symbols.nil? + @store_new_symbols + end +end + +ActiveModel::Errors.prepend(OpenProject::ActiveModelErrorsPatch) diff --git a/config/initializers/eager_load_with_hours.rb b/config/initializers/eager_load_with_hours.rb index 1be4156d906..a7e87bcb34a 100644 --- a/config/initializers/eager_load_with_hours.rb +++ b/config/initializers/eager_load_with_hours.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -34,22 +35,28 @@ # this patch has been added which is based on # https://github.com/rails/rails/issues/15185#issuecomment-142230234 +module OpenProject::Patches + module ActiveRecordJoinPartPatch + def instantiate(row, aliases) + if base_klass == WorkPackage && row.has_key?('hours') + aliases_with_hours = aliases + [['hours', 'hours']] + + super(row, aliases_with_hours) + else + super(row, aliases) + end + end + end +end + require 'active_record' module ActiveRecord module Associations class JoinDependency JoinBase && class JoinPart - def instantiate_with_hours(row, aliases) - if base_klass == WorkPackage && row.has_key?('hours') - aliases_with_hours = aliases + [['hours', 'hours']] - - instantiate_without_hours(row, aliases_with_hours) - else - instantiate_without_hours(row, aliases) - end - end; alias_method_chain :instantiate, :hours - end + prepend OpenProject::Patches::ActiveRecordJoinPartPatch + end end end end diff --git a/config/initializers/redcloth_numbered_headings.rb b/config/initializers/redcloth_numbered_headings.rb index 72209f5bb67..10affef1417 100644 --- a/config/initializers/redcloth_numbered_headings.rb +++ b/config/initializers/redcloth_numbered_headings.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -30,64 +31,54 @@ require 'redcloth3' module RedCloth3Patch - def self.included(base) - base.send(:include, InstanceMethods) + private - base.class_eval do - alias_method_chain :block_textile_prefix, :numbering - end + def block_textile_prefix(text) + text.replace(prepend_number_to_heading(text)) + + super(text) end - module InstanceMethods - private + HEADING = /^h(\d)\.(.*)$/ unless defined? HEADING + NUMBERED_HEADING = /^h(\d)#\.(.*)$/ unless defined? NUMBERED_HEADING - def block_textile_prefix_with_numbering(text) - text.replace(prepend_number_to_heading(text)) + def prepend_number_to_heading(text) + if text =~ NUMBERED_HEADING + level = $1.to_i - block_textile_prefix_without_numbering(text) + number = get_next_number_or_start_new_numbering level + + new_text = "h#{level}. #{number}#{$2}" + elsif text =~ HEADING + reset_numbering end - HEADING = /^h(\d)\.(.*)$/ unless defined? HEADING - NUMBERED_HEADING = /^h(\d)#\.(.*)$/ unless defined? NUMBERED_HEADING + new_text.nil? ? text : new_text + end - def prepend_number_to_heading(text) - if text =~ NUMBERED_HEADING - level = $1.to_i - - number = get_next_number_or_start_new_numbering level - - new_text = "h#{level}. #{number}#{$2}" - elsif text =~ HEADING - reset_numbering - end - - new_text.nil? ? text : new_text + def get_next_number_or_start_new_numbering(level) + begin + number = get_number_for_level level + rescue ArgumentError + reset_numbering + number = get_number_for_level level end - def get_next_number_or_start_new_numbering(level) - begin - number = get_number_for_level level - rescue ArgumentError - reset_numbering - number = get_number_for_level level - end + number + end - number - end + def get_number_for_level(level) + @numbering_provider ||= Redcloth3::NumberingStack.new level - def get_number_for_level(level) - @numbering_provider ||= Redcloth3::NumberingStack.new level + @numbering_provider.get_next_numbering_for_level level + end - @numbering_provider.get_next_numbering_for_level level - end - - def reset_numbering - @numbering_provider = nil - end + def reset_numbering + @numbering_provider = nil end end -RedCloth3.send(:include, RedCloth3Patch) +RedCloth3.send(:prepend, RedCloth3Patch) module Redcloth3 class NumberingStack diff --git a/lib/extended_http.rb b/lib/extended_http.rb index 863dac84fe8..19929730f95 100644 --- a/lib/extended_http.rb +++ b/lib/extended_http.rb @@ -47,6 +47,6 @@ module ExtendedHTTP # # This is especially useful for successful update actions. def no_content - render html: '', status: :no_content + render body: '', status: :no_content end end diff --git a/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb b/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb index 80ffd9e4073..ef4bdac70e7 100644 --- a/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb +++ b/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb @@ -134,7 +134,7 @@ module Redmine return nil unless user && user.is_a?(User) watchers_to_delete = watchers.find_all { |watcher| watcher.user == user } watchers_to_delete.each(&:delete) - watchers(true) + watchers.reload watchers_to_delete.count end diff --git a/spec/controllers/members_controller_spec.rb b/spec/controllers/members_controller_spec.rb index be387c55b8e..2b195c94097 100644 --- a/spec/controllers/members_controller_spec.rb +++ b/spec/controllers/members_controller_spec.rb @@ -107,7 +107,7 @@ describe MembersController, type: :controller do end describe '#autocomplete_for_member' do - let(:params) { ActionController::Parameters.new('project_id' => project.identifier.to_s) } + let(:params) { { 'project_id' => project.identifier.to_s } } before do login_as(user) diff --git a/spec/controllers/repositories_controller_spec.rb b/spec/controllers/repositories_controller_spec.rb index 5f3a2ea698b..edff680fa0c 100644 --- a/spec/controllers/repositories_controller_spec.rb +++ b/spec/controllers/repositories_controller_spec.rb @@ -80,9 +80,9 @@ describe RepositoriesController, type: :controller do context 'with #edit' do before do - xhr :get, - :edit, - params: { scm_vendor: 'subversion' } + get :edit, + params: { scm_vendor: 'subversion' }, + xhr: true end it_behaves_like 'successful settings response' @@ -91,7 +91,7 @@ describe RepositoriesController, type: :controller do context 'with #destroy' do before do allow(repository).to receive(:destroy).and_return(true) - xhr :delete, :destroy + delete :destroy, xhr: true end it 'redirects to settings' do @@ -101,7 +101,7 @@ describe RepositoriesController, type: :controller do context 'with #update' do before do - xhr :put, :update + put :update, xhr: true end it_behaves_like 'successful settings response' @@ -109,13 +109,13 @@ describe RepositoriesController, type: :controller do context 'with #create' do before do - xhr :post, - :create, - params: { - scm_vendor: 'subversion', - scm_type: 'local', - url: 'file:///tmp/repo.svn/' - } + post :create, + params: { + scm_vendor: 'subversion', + scm_type: 'local', + url: 'file:///tmp/repo.svn/' + }, + xhr: true end it 'renders a JS redirect' do diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 42fd3fdfec7..bffe275658e 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -102,7 +102,7 @@ describe Member, type: :model do end it('member should be destroyed') { expect(member.destroyed?).to eq(true) } - context(:roles) { it { expect(member.roles(true)).to be_empty } } + context(:roles) { it { expect(member.roles.reload).to be_empty } } end end @@ -114,7 +114,7 @@ describe Member, type: :model do member.reload # Use member_roles(true) to make sure that all member roles are loaded, # otherwise ActiveRecord doesn't notice mark_for_destruction. - member_role = member.member_roles(true).first + member_role = member.member_roles.reload.first member.mark_member_role_for_destruction(member_role) member.save! member.reload @@ -126,7 +126,7 @@ describe Member, type: :model do context 'before saving the member when removing the last role' do before do - member_role = member.member_roles(true).first + member_role = member.member_roles.reload.first member.mark_member_role_for_destruction(member_role) end @@ -143,7 +143,7 @@ describe Member, type: :model do # # Order is important here to ensure we destroy the existing # member_role and not the one added by adding second_role. - member_role = member.member_roles(true).first + member_role = member.member_roles.reload.first member.add_and_save_role(second_role) @@ -152,18 +152,18 @@ describe Member, type: :model do it('member should not be destroyed') { expect(member.destroyed?).to eq(false) } context(:roles) do - it { expect(member.roles(true)).to eq [second_role] } + it { expect(member.roles.reload).to eq [second_role] } end end context 'when removing the last member role' do before do - member_role = member.member_roles(true).first + member_role = member.member_roles.reload.first member.remove_member_role_and_destroy_member_if_last(member_role) end it('member should be destroyed') { expect(member.destroyed?).to eq(true) } - context(:roles) { it { expect(member.roles(true)).to be_empty } } + context(:roles) { it { expect(member.roles.reload).to be_empty } } end end end diff --git a/spec/models/permitted_params_spec.rb b/spec/models/permitted_params_spec.rb index d4e5d881e44..982ac603649 100644 --- a/spec/models/permitted_params_spec.rb +++ b/spec/models/permitted_params_spec.rb @@ -880,6 +880,61 @@ describe PermittedParams, type: :model do end end + describe '#settings' do + let (:attribute) { :settings } + + describe 'with password login enabled' do + before do + allow(OpenProject::Configuration) + .to receive(:disable_password_login?) + .and_return(false) + end + + let(:hash) do + { + 'sendmail_arguments' => 'value', + 'brute_force_block_after_failed_logins' => 'value', + 'password_active_rules' => ['value'], + 'default_projects_modules' => ['value', 'value'], + 'emails_footer' => { 'en' => 'value' } + } + end + + it_behaves_like 'allows params' + end + + describe 'with password login disabld' do + include_context 'prepare params comparison' + + before do + allow(OpenProject::Configuration) + .to receive(:disable_password_login?) + .and_return(true) + end + + let(:hash) do + { + 'sendmail_arguments' => 'value', + 'brute_force_block_after_failed_logins' => 'value', + 'password_active_rules' => ['value'], + 'default_projects_modules' => ['value', 'value'], + 'emails_footer' => { 'en' => 'value' } + } + end + + let(:permitted_hash) do + { + 'sendmail_arguments' => 'value', + 'brute_force_block_after_failed_logins' => 'value', + 'default_projects_modules' => ['value', 'value'], + 'emails_footer' => { 'en' => 'value' } + } + end + + it { expect(subject).to eq(permitted_hash) } + end + end + describe '#enumerations' do let (:attribute) { :enumerations } diff --git a/spec/models/type/attribute_groups_spec.rb b/spec/models/type/attribute_groups_spec.rb index da4f1958b12..de4ca681ed5 100644 --- a/spec/models/type/attribute_groups_spec.rb +++ b/spec/models/type/attribute_groups_spec.rb @@ -89,10 +89,10 @@ describe ::Type, type: :model do it 'raises an exception for invalid structure' do # Exampel for invalid structure: type.attribute_groups = ['foo'] - expect { type.save }.to raise_exception + expect { type.save }.to raise_exception(NoMethodError) # Exampel for invalid structure: type.attribute_groups = [[]] - expect { type.save }.to raise_exception + expect { type.save }.to raise_exception(NoMethodError) # Exampel for invalid group name: type.attribute_groups = [['', ['date']]] expect(type).not_to be_valid diff --git a/spec/models/work_package/ask_before_destruction_spec.rb b/spec/models/work_package/ask_before_destruction_spec.rb index 67b127af44c..8e134d5dbab 100644 --- a/spec/models/work_package/ask_before_destruction_spec.rb +++ b/spec/models/work_package/ask_before_destruction_spec.rb @@ -29,14 +29,14 @@ require 'spec_helper' describe WorkPackage, type: :model do - let(:work_package) { + let(:work_package) do FactoryGirl.create(:work_package, project: project, status: status) - } - let(:work_package2) { + end + let(:work_package2) do FactoryGirl.create(:work_package, project: project2, status: status) - } + end let(:user) { FactoryGirl.create(:user) } let(:type) { FactoryGirl.create(:type_standard) } @@ -44,25 +44,25 @@ describe WorkPackage, type: :model do let(:project2) { FactoryGirl.create(:project, types: [type]) } let(:role) { FactoryGirl.create(:role) } let(:role2) { FactoryGirl.create(:role) } - let(:member) { + let(:member) do FactoryGirl.create(:member, principal: user, roles: [role]) - } - let(:member2) { + end + let(:member2) do FactoryGirl.create(:member, principal: user, roles: [role2], project: work_package2.project) - } + end let(:status) { FactoryGirl.create(:status) } let(:priority) { FactoryGirl.create(:priority) } - let(:time_entry) { + let(:time_entry) do FactoryGirl.build(:time_entry, work_package: work_package, project: work_package.project) - } - let(:time_entry2) { + end + let(:time_entry2) do FactoryGirl.build(:time_entry, work_package: work_package2, project: work_package2.project) - } + end describe '#cleanup_action_required_before_destructing?' do describe 'w/ the work package having a time entry' do @@ -191,7 +191,12 @@ describe WorkPackage, type: :model do w/ reassigning to a valid work_package' do context 'with a single work package' do - let(:action) { WorkPackage.cleanup_associated_before_destructing_if_required(work_package, user, action: 'reassign', reassign_to_id: work_package2.id) } + let(:action) do + WorkPackage.cleanup_associated_before_destructing_if_required(work_package, + user, + action: 'reassign', + reassign_to_id: work_package2.id) + end before do work_package2.save! @@ -219,7 +224,12 @@ describe WorkPackage, type: :model do end context 'with a collection of work packages' do - let(:action) { WorkPackage.cleanup_associated_before_destructing_if_required([work_package], user, action: 'reassign', reassign_to_id: work_package2.id) } + let(:action) do + WorkPackage.cleanup_associated_before_destructing_if_required([work_package], + user, + action: 'reassign', + reassign_to_id: work_package2.id) + end before do work_package2.save! @@ -250,7 +260,12 @@ describe WorkPackage, type: :model do describe 'w/ "reassign" as action w/ reassigning to a work_package the user is not allowed to see' do - let(:action) { WorkPackage.cleanup_associated_before_destructing_if_required([work_package], user, action: 'reassign', reassign_to_id: work_package2.id) } + let(:action) do + WorkPackage.cleanup_associated_before_destructing_if_required([work_package], + user, + action: 'reassign', + reassign_to_id: work_package2.id) + end before do work_package2.save! @@ -270,7 +285,12 @@ describe WorkPackage, type: :model do describe 'w/ "reassign" as action w/ reassigning to a non existing work package' do - let(:action) { WorkPackage.cleanup_associated_before_destructing_if_required([work_package], user, action: 'reassign', reassign_to_id: 0) } + let(:action) do + WorkPackage.cleanup_associated_before_destructing_if_required([work_package], + user, + action: 'reassign', + reassign_to_id: 0) + end it 'should return true' do expect(action).to be_falsey @@ -286,13 +306,18 @@ describe WorkPackage, type: :model do it 'should set an error on work packages' do action - expect(work_package.errors.get(:base)).to eq([I18n.t(:'activerecord.errors.models.work_package.is_not_a_valid_target_for_time_entries', id: 0)]) + expect(work_package.errors[:base]) + .to eq([I18n.t(:'activerecord.errors.models.work_package.is_not_a_valid_target_for_time_entries', id: 0)]) end end describe 'w/ "reassign" as action w/o providing a reassignment id' do - let(:action) { WorkPackage.cleanup_associated_before_destructing_if_required([work_package], user, action: 'reassign') } + let(:action) do + WorkPackage.cleanup_associated_before_destructing_if_required([work_package], + user, + action: 'reassign') + end it 'should return true' do expect(action).to be_falsey @@ -308,12 +333,17 @@ describe WorkPackage, type: :model do it 'should set an error on work packages' do action - expect(work_package.errors.get(:base)).to eq([I18n.t(:'activerecord.errors.models.work_package.is_not_a_valid_target_for_time_entries', id: nil)]) + expect(work_package.errors[:base]) + .to eq([I18n.t(:'activerecord.errors.models.work_package.is_not_a_valid_target_for_time_entries', id: nil)]) end end describe 'w/ an invalid option' do - let(:action) { WorkPackage.cleanup_associated_before_destructing_if_required([work_package], user, action: 'bogus') } + let(:action) do + WorkPackage.cleanup_associated_before_destructing_if_required([work_package], + user, + action: 'bogus') + end it 'should return false' do expect(action).to be_falsey @@ -321,7 +351,11 @@ describe WorkPackage, type: :model do end describe 'w/ nil as invalid option' do - let(:action) { WorkPackage.cleanup_associated_before_destructing_if_required([work_package], user, nil) } + let(:action) do + WorkPackage.cleanup_associated_before_destructing_if_required([work_package], + user, + nil) + end it 'should return false' do expect(action).to be_falsey diff --git a/spec/requests/api/v3/activities_by_work_package_resource_spec.rb b/spec/requests/api/v3/activities_by_work_package_resource_spec.rb index b1999119b50..ddd13c9d78f 100644 --- a/spec/requests/api/v3/activities_by_work_package_resource_spec.rb +++ b/spec/requests/api/v3/activities_by_work_package_resource_spec.rb @@ -69,7 +69,7 @@ describe API::V3::Activities::ActivitiesByWorkPackageAPI, type: :request do shared_context 'create activity' do before do - post (api_v3_paths.work_package_activities work_package.id), + post api_v3_paths.work_package_activities(work_package.id), params: { comment: { raw: comment } }.to_json, headers: { 'CONTENT_TYPE' => 'application/json' } end diff --git a/spec/views/account/register.html.erb_spec.rb b/spec/views/account/register.html.erb_spec.rb index 414343cb084..4ea900e7fb5 100644 --- a/spec/views/account/register.html.erb_spec.rb +++ b/spec/views/account/register.html.erb_spec.rb @@ -78,8 +78,6 @@ describe 'account/register', type: :view do context 'without auth source' do it 'should not show a login field' do - puts rendered - expect(rendered).not_to include('user[login]') end diff --git a/spec_legacy/functional/account_controller_spec.rb b/spec_legacy/functional/account_controller_spec.rb index 4129125fca8..4022f22c64a 100644 --- a/spec_legacy/functional/account_controller_spec.rb +++ b/spec_legacy/functional/account_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'account_controller' describe AccountController, type: :controller do @@ -39,7 +40,7 @@ describe AccountController, type: :controller do end it 'should login with wrong password' do - post :login, username: 'admin', password: 'bad' + post :login, params: { username: 'admin', password: 'bad' } assert_response :success assert_template 'login' assert_select 'div.flash.error.icon.icon-error', /Invalid user or password/ @@ -53,7 +54,7 @@ describe AccountController, type: :controller do it 'should login should reset session' do expect(@controller).to receive(:reset_session).once - post :login, username: 'jsmith', password: 'jsmith' + post :login, params: { username: 'jsmith', password: 'jsmith' } assert_response 302 end diff --git a/spec_legacy/functional/activities_controller_spec.rb b/spec_legacy/functional/activities_controller_spec.rb index 631c63db457..cacaf5da305 100644 --- a/spec_legacy/functional/activities_controller_spec.rb +++ b/spec_legacy/functional/activities_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' describe ActivitiesController, type: :controller do fixtures :all @@ -36,7 +37,6 @@ describe ActivitiesController, type: :controller do it 'project index' do Journal.delete_all - project = Project.find(1) public_project = FactoryGirl.create :public_project issue = FactoryGirl.create :work_package, project: public_project, @@ -62,21 +62,24 @@ describe ActivitiesController, type: :controller do type_id: issue.type_id, project_id: issue.project_id) - get :index, id: 1, with_subprojects: 0 + get :index, params: { id: 1, with_subprojects: 0 } assert_response :success assert_template 'index' refute_nil assigns(:events_by_day) assert_select 'h3', - content: /#{1.day.ago.to_date.day}/, - sibling: { tag: 'dl', - child: { tag: 'dt', - attributes: { class: /work_package/ }, - child: { tag: 'a', - content: /#{ERB::Util.h(Status.find(2).name)}/ - } - } - } + content: /#{1.day.ago.to_date.day}/, + sibling: { + tag: 'dl', + child: { + tag: 'dt', + attributes: { class: /work_package/ }, + child: { + tag: 'a', + content: /#{ERB::Util.h(Status.find(2).name)}/ + } + } + } end it 'previous project index' do @@ -90,21 +93,24 @@ describe ActivitiesController, type: :controller do type_id: issue.type_id, project_id: issue.project_id) - get :index, id: 1, from: 3.days.ago.to_date + get :index, params: { id: 1, from: 3.days.ago.to_date } assert_response :success assert_template 'index' refute_nil assigns(:events_by_day) assert_select 'h3', - content: /#{3.day.ago.to_date.day}/, - sibling: { tag: 'dl', - child: { tag: 'dt', - attributes: { class: /work_package/ }, - child: { tag: 'a', - content: /#{ERB::Util.h(issue.subject)}/ - } - } - } + content: /#{3.day.ago.to_date.day}/, + sibling: { + tag: 'dl', + child: { + tag: 'dt', + attributes: { class: /work_package/ }, + child: { + tag: 'a', + content: /#{ERB::Util.h(issue.subject)}/ + } + } + } end it 'user index' do @@ -119,20 +125,23 @@ describe ActivitiesController, type: :controller do type_id: issue.type_id, project_id: issue.project_id) - get :index, user_id: 2 + get :index, params: { user_id: 2 } assert_response :success assert_template 'index' refute_nil assigns(:events_by_day) assert_select 'h3', - content: /#{3.day.ago.to_date.day}/, - sibling: { tag: 'dl', - child: { tag: 'dt', - attributes: { class: /work_package/ }, - child: { tag: 'a', - content: /#{ERB::Util.h(WorkPackage.find(1).subject)}/ - } - } - } + content: /#{3.day.ago.to_date.day}/, + sibling: { + tag: 'dl', + child: { + tag: 'dt', + attributes: { class: /work_package/ }, + child: { + tag: 'a', + content: /#{ERB::Util.h(WorkPackage.find(1).subject)}/ + } + } + } end end diff --git a/spec_legacy/functional/admin_controller_spec.rb b/spec_legacy/functional/admin_controller_spec.rb index 9a649aa44a1..ffd277a3eca 100644 --- a/spec_legacy/functional/admin_controller_spec.rb +++ b/spec_legacy/functional/admin_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'admin_controller' describe AdminController, type: :controller do @@ -51,11 +52,11 @@ describe AdminController, type: :controller do assert_template 'projects' refute_nil assigns(:projects) # active projects only - assert_nil assigns(:projects).detect { |u| !u.active? } + assert_nil(assigns(:projects).detect { |u| !u.active? }) end it 'should projects with name filter' do - get :projects, name: 'store', status: '' + get :projects, params: { name: 'store', status: '' } assert_response :success assert_template 'projects' projects = assigns(:projects) @@ -118,8 +119,9 @@ describe AdminController, type: :controller do get :projects assert_response :success - assert_select 'a', attributes: { href: '/projects' }, - content: 'Test' + assert_select 'a', + attributes: { href: '/projects' }, + content: 'Test' Redmine::MenuManager.map :admin_menu do |menu| menu.delete :test_admin_menu_plugin_extension diff --git a/spec_legacy/functional/application_controller_spec.rb b/spec_legacy/functional/application_controller_spec.rb index 6a1aaca01d1..549050cac80 100644 --- a/spec_legacy/functional/application_controller_spec.rb +++ b/spec_legacy/functional/application_controller_spec.rb @@ -26,7 +26,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'application_controller' describe ApplicationController, type: :controller do diff --git a/spec_legacy/functional/attachments_controller_spec.rb b/spec_legacy/functional/attachments_controller_spec.rb index 9ad38e42898..a0fe1c2fd5d 100644 --- a/spec_legacy/functional/attachments_controller_spec.rb +++ b/spec_legacy/functional/attachments_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'attachments_controller' describe AttachmentsController, type: :controller do @@ -40,28 +41,28 @@ describe AttachmentsController, type: :controller do end it 'should download other' do - get :download, id: 6 + get :download, params: { id: 6 } assert_equal 'application/zip', response.content_type end it 'should download text file' do - get :download, id: 4 + get :download, params: { id: 4 } assert_response :success assert_equal 'text/x-ruby', response.content_type end it 'should download missing file' do - get :download, id: 2 + get :download, params: { id: 2 } assert_response 404 end it 'should anonymous on private private' do - get :download, id: 7 + get :download, params: { id: 7 } assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2F7' end it 'should destroy without permission' do - delete :destroy, id: 3 + delete :destroy, params: { id: 3 } assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2F3' assert Attachment.find_by(id: 3) end diff --git a/spec_legacy/functional/boards_controller_spec.rb b/spec_legacy/functional/boards_controller_spec.rb index 4780a224727..856f28c4b53 100644 --- a/spec_legacy/functional/boards_controller_spec.rb +++ b/spec_legacy/functional/boards_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'boards_controller' describe BoardsController, type: :controller do @@ -37,7 +38,7 @@ describe BoardsController, type: :controller do end it 'should index' do - get :index, project_id: 1 + get :index, params: { project_id: 1 } assert_response :success assert_template 'index' refute_nil assigns(:boards) @@ -45,7 +46,7 @@ describe BoardsController, type: :controller do end it 'should index not found' do - get :index, project_id: 97 + get :index, params: { project_id: 97 } assert_response 404 end @@ -53,7 +54,7 @@ describe BoardsController, type: :controller do boards = Project.find(1).boards boards.take(boards.count - 1).each(&:destroy) - get :index, project_id: 1 + get :index, params: { project_id: 1 } assert_response :success assert_template 'show' refute_nil assigns(:topics) @@ -62,13 +63,13 @@ describe BoardsController, type: :controller do it 'should create' do session[:user_id] = 2 assert_difference 'Board.count' do - post :create, project_id: 1, board: { name: 'Testing', description: 'Testing board creation' } + post :create, params: { project_id: 1, board: { name: 'Testing', description: 'Testing board creation' } } end assert_redirected_to '/projects/ecookbook/settings/boards' end it 'should show' do - get :show, project_id: 1, id: 1 + get :show, params: { project_id: 1, id: 1 } assert_response :success assert_template 'show' refute_nil assigns(:board) @@ -77,7 +78,7 @@ describe BoardsController, type: :controller do end it 'should show atom' do - get :show, project_id: 1, id: 1, format: 'atom' + get :show, params: { project_id: 1, id: 1, format: 'atom' } assert_response :success assert_template 'common/feed' refute_nil assigns(:board) @@ -88,7 +89,7 @@ describe BoardsController, type: :controller do it 'should update' do session[:user_id] = 2 assert_no_difference 'Board.count' do - put :update, project_id: 1, id: 2, board: { name: 'Testing', description: 'Testing board update' } + put :update, params: { project_id: 1, id: 2, board: { name: 'Testing', description: 'Testing board update' } } end assert_redirected_to '/projects/ecookbook/settings/boards' assert_equal 'Testing', Board.find(2).name @@ -97,7 +98,7 @@ describe BoardsController, type: :controller do it 'should post destroy' do session[:user_id] = 2 assert_difference 'Board.count', -1 do - post :destroy, project_id: 1, id: 2 + post :destroy, params: { project_id: 1, id: 2 } end assert_redirected_to '/projects/ecookbook/settings/boards' assert_nil Board.find_by(id: 2) @@ -106,7 +107,7 @@ describe BoardsController, type: :controller do it 'should index should 404 with no board' do Project.find(1).boards.each(&:destroy) - get :index, project_id: 1 + get :index, params: { project_id: 1 } assert_response 404 end end diff --git a/spec_legacy/functional/enumerations_controller_spec.rb b/spec_legacy/functional/enumerations_controller_spec.rb index 57b6102580e..ea30bedb625 100644 --- a/spec_legacy/functional/enumerations_controller_spec.rb +++ b/spec_legacy/functional/enumerations_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'enumerations_controller' describe EnumerationsController, type: :controller do @@ -43,13 +44,13 @@ describe EnumerationsController, type: :controller do end it 'should destroy enumeration not in use' do - post :destroy, id: 7 + post :destroy, params: { id: 7 } assert_redirected_to enumerations_path assert_nil Enumeration.find_by(id: 7) end it 'should destroy enumeration in use' do - post :destroy, id: 4 + post :destroy, params: { id: 4 } assert_response :success assert_template 'destroy' refute_nil Enumeration.find_by(id: 4) @@ -57,7 +58,7 @@ describe EnumerationsController, type: :controller do it 'should destroy enumeration in use with reassignment' do issue = WorkPackage.find_by(priority_id: 4) - post :destroy, id: 4, reassign_to_id: 6 + post :destroy, params: { id: 4, reassign_to_id: 6 } assert_redirected_to enumerations_path assert_nil Enumeration.find_by(id: 4) # check that the issue was reassign diff --git a/spec_legacy/functional/groups_controller_spec.rb b/spec_legacy/functional/groups_controller_spec.rb index db5a9643da7..c8587e0ea0f 100644 --- a/spec_legacy/functional/groups_controller_spec.rb +++ b/spec_legacy/functional/groups_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'groups_controller' describe GroupsController, type: :controller do @@ -44,7 +45,7 @@ describe GroupsController, type: :controller do end it 'should show' do - get :show, id: 10 + get :show, params: { id: 10 } assert_response :success assert_template 'show' end @@ -57,61 +58,61 @@ describe GroupsController, type: :controller do it 'should create' do assert_difference 'Group.count' do - post :create, group: { lastname: 'New group' } + post :create, params: { group: { lastname: 'New group' } } end assert_redirected_to groups_path end it 'should edit' do - get :edit, id: 10 + get :edit, params: { id: 10 } assert_response :success assert_template 'edit' end it 'should update' do - put :update, id: 10, group: { lastname: 'new name' } + put :update, params: { id: 10, group: { lastname: 'new name' } } assert_redirected_to groups_path end it 'should destroy' do assert_difference 'Group.count', -1 do - delete :destroy, id: 10 + delete :destroy, params: { id: 10 } end assert_redirected_to groups_path end it 'should add users' do assert_difference 'Group.find(10).users.count', 2 do - post :add_users, id: 10, user_ids: ['2', '3'] + post :add_users, params: { id: 10, user_ids: ['2', '3'] } end end it 'should remove user' do assert_difference 'Group.find(10).users.count', -1 do - delete :remove_user, id: 10, user_id: '8' + delete :remove_user, params: { id: 10, user_id: '8' } end end it 'should create membership' do assert_difference 'Group.find(10).members.count' do - post :create_memberships, id: 10, membership: { project_id: 2, role_ids: ['1', '2'] } + post :create_memberships, params: { id: 10, membership: { project_id: 2, role_ids: ['1', '2'] } } end end it 'should edit membership' do assert_no_difference 'Group.find(10).members.count' do - put :edit_membership, id: 10, membership_id: 6, membership: { role_ids: ['1', '3'] } + put :edit_membership, params: { id: 10, membership_id: 6, membership: { role_ids: ['1', '3'] } } end end it 'should destroy membership' do assert_difference 'Group.find(10).members.count', -1 do - delete :destroy_membership, id: 10, membership_id: 6 + delete :destroy_membership, params: { id: 10, membership_id: 6 } end end it 'should autocomplete for user' do - get :autocomplete_for_user, id: 10, q: 'mis' + get :autocomplete_for_user, params: { id: 10, q: 'mis' } assert_response :success users = assigns(:users) refute_nil users diff --git a/spec_legacy/functional/help_controller_spec.rb b/spec_legacy/functional/help_controller_spec.rb index 28dabcc0564..112187c98c2 100644 --- a/spec_legacy/functional/help_controller_spec.rb +++ b/spec_legacy/functional/help_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' describe HelpController, type: :controller do render_views diff --git a/spec_legacy/functional/mail_handler_controller_spec.rb b/spec_legacy/functional/mail_handler_controller_spec.rb index 0ccd98cf295..2f69d1111b9 100644 --- a/spec_legacy/functional/mail_handler_controller_spec.rb +++ b/spec_legacy/functional/mail_handler_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'mail_handler_controller' describe MailHandlerController, type: :controller do @@ -43,7 +44,7 @@ describe MailHandlerController, type: :controller do Setting.mail_handler_api_enabled = 1 Setting.mail_handler_api_key = 'secret' - post :index, key: 'secret', email: IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml')) + post :index, params: { key: 'secret', email: IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml')) } assert_response 201 end @@ -52,7 +53,7 @@ describe MailHandlerController, type: :controller do Setting.mail_handler_api_enabled = 0 Setting.mail_handler_api_key = 'secret' - post :index, key: 'secret', email: IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml')) + post :index, params: { key: 'secret', email: IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml')) } assert_response 403 end end diff --git a/spec_legacy/functional/messages_controller_spec.rb b/spec_legacy/functional/messages_controller_spec.rb index 47038f63db9..d809f8280c2 100644 --- a/spec_legacy/functional/messages_controller_spec.rb +++ b/spec_legacy/functional/messages_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'messages_controller' describe MessagesController, type: :controller do @@ -39,7 +40,7 @@ describe MessagesController, type: :controller do end it 'should show' do - get :show, board_id: 1, id: 1 + get :show, params: { board_id: 1, id: 1 } assert_response :success assert_template 'show' refute_nil assigns(:board) @@ -56,7 +57,7 @@ describe MessagesController, type: :controller do message.children << m end end - get :show, board_id: 1, id: 1, per_page: 100, r: message.children.order('id').last.id + get :show, params: { board_id: 1, id: 1, per_page: 100, r: message.children.order('id').last.id } assert_response :success assert_template 'show' replies = assigns(:replies) @@ -67,21 +68,22 @@ describe MessagesController, type: :controller do it 'should show with reply permission' do session[:user_id] = 2 - get :show, board_id: 1, id: 1 + get :show, params: { board_id: 1, id: 1 } assert_response :success assert_template 'show' - assert_select 'div', attributes: { id: 'reply' }, - descendant: { tag: 'textarea', attributes: { id: 'reply_content' } } + assert_select 'div', + attributes: { id: 'reply' }, + descendant: { tag: 'textarea', attributes: { id: 'reply_content' } } end it 'should show message not found' do - get :show, board_id: 1, id: 99999 + get :show, params: { board_id: 1, id: 99999 } assert_response 404 end it 'should get new' do session[:user_id] = 2 - get :new, board_id: 1 + get :new, params: { board_id: 1 } assert_response :success assert_template 'new' end @@ -90,9 +92,14 @@ describe MessagesController, type: :controller do session[:user_id] = 2 allow(Setting).to receive(:notified_events).and_return ['message_posted'] - post :create, board_id: 1, - message: { subject: 'Test created message', - content: 'Message body' } + post :create, + params: { + board_id: 1, + message: { + subject: 'Test created message', + content: 'Message body' + } + } message = Message.find_by(subject: 'Test created message') refute_nil message assert_redirected_to topic_path(message) @@ -106,7 +113,8 @@ describe MessagesController, type: :controller do mail = mails_to_author.first assert mail.to.include?('jsmith@somenet.foo') assert_kind_of Mail::Message, mail - assert_equal "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] Test created message", mail.subject + assert_equal "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] Test created message", + mail.subject assert mail.body.encoded.include?('Message body') # project member @@ -117,16 +125,21 @@ describe MessagesController, type: :controller do it 'should get edit' do session[:user_id] = 2 - get :edit, id: 1 + get :edit, params: { id: 1 } assert_response :success assert_template 'edit' end it 'should put update' do session[:user_id] = 2 - put :update, id: 1, - message: { subject: 'New subject', - content: 'New body' } + put :update, + params: { + id: 1, + message: { + subject: 'New subject', + content: 'New body' + } + } message = Message.find(1) assert_redirected_to topic_path(message) assert_equal 'New subject', message.subject @@ -135,7 +148,7 @@ describe MessagesController, type: :controller do it 'should reply' do session[:user_id] = 2 - post :reply, board_id: 1, id: 1, reply: { content: 'This is a test reply', subject: 'Test reply' } + post :reply, params: { board_id: 1, id: 1, reply: { content: 'This is a test reply', subject: 'Test reply' } } reply = Message.order('id DESC').first assert_redirected_to topic_path(1, r: reply) assert Message.find_by(subject: 'Test reply') @@ -143,14 +156,14 @@ describe MessagesController, type: :controller do it 'should destroy topic' do session[:user_id] = 2 - delete :destroy, id: 1 + delete :destroy, params: { id: 1 } assert_redirected_to project_board_path('ecookbook', 1) assert_nil Message.find_by(id: 1) end it 'should quote' do session[:user_id] = 2 - xhr :get, :quote, board_id: 1, id: 3 + get :quote, params: { board_id: 1, id: 3 }, xhr: true assert_response :success assert_template 'quote' end diff --git a/spec_legacy/functional/my_controller_spec.rb b/spec_legacy/functional/my_controller_spec.rb index af510461123..df4efe464e4 100644 --- a/spec_legacy/functional/my_controller_spec.rb +++ b/spec_legacy/functional/my_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'my_controller' describe MyController, type: :controller do @@ -64,19 +65,21 @@ describe MyController, type: :controller do end it 'should add block' do - xhr :post, :add_block, block: 'issuesreportedbyme' + post :add_block, params: { block: 'issuesreportedbyme' }, xhr: true assert_response :success assert User.find(2).pref[:my_page_layout]['top'].include?('issuesreportedbyme') end it 'should remove block' do - xhr :post, :remove_block, block: 'issuesassignedtome' + post :remove_block, params: { block: 'issuesassignedtome' }, xhr: true assert_response :success assert !User.find(2).pref[:my_page_layout].values.flatten.include?('issuesassignedtome') end it 'should order blocks' do - xhr :post, :order_blocks, target: 'left', 'target_ordered_children' => ['documents', 'calendar', 'latestnews'] + post :order_blocks, + params: { target: 'left', 'target_ordered_children' => ['documents', 'calendar', 'latestnews'] }, + xhr: true assert_response :success assert_equal ['documents', 'calendar', 'latestnews'], User.find(2).pref[:my_page_layout]['left'] end diff --git a/spec_legacy/functional/project_enumerations_controller_spec.rb b/spec_legacy/functional/project_enumerations_controller_spec.rb index f1c8e9b09b3..97230e26b80 100644 --- a/spec_legacy/functional/project_enumerations_controller_spec.rb +++ b/spec_legacy/functional/project_enumerations_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' describe ProjectEnumerationsController, type: :controller do fixtures :all @@ -41,13 +42,21 @@ describe ProjectEnumerationsController, type: :controller do session[:user_id] = 2 # manager billable_field = TimeEntryActivityCustomField.find_by(name: 'Billable') - put :update, project_id: 1, enumerations: { - '9' => { 'parent_id' => '9', 'custom_field_values' => { '7' => '1' }, 'active' => '0' }, # Design, De-activate - '10' => { 'parent_id' => '10', 'custom_field_values' => { '7' => '0' }, 'active' => '1' }, # Development, Change custom value - '14' => { 'parent_id' => '14', 'custom_field_values' => { '7' => '1' }, 'active' => '1' }, # Inactive Activity, Activate with custom value - '11' => { 'parent_id' => '11', 'custom_field_values' => { '7' => '1' }, 'active' => '1' } # QA, no changes + params = { + project_id: 1, + enumerations: { + # Design, De-activate + '9' => { 'parent_id' => '9', 'custom_field_values' => { '7' => '1' }, 'active' => '0' }, + # Development, Change custom value + '10' => { 'parent_id' => '10', 'custom_field_values' => { '7' => '0' }, 'active' => '1' }, + # Inactive Activity, Activate with custom value + '14' => { 'parent_id' => '14', 'custom_field_values' => { '7' => '1' }, 'active' => '1' }, + '11' => { 'parent_id' => '11', 'custom_field_values' => { '7' => '1' }, 'active' => '1' } # QA, no changes + } } + put :update, params: params + assert_response :redirect assert_redirected_to '/projects/ecookbook/settings/activities' @@ -105,11 +114,16 @@ describe ProjectEnumerationsController, type: :controller do ) assert project_activity_two.save - put :update, project_id: 1, enumerations: { - project_activity.id => { 'custom_field_values' => { '7' => '1' }, 'active' => '0' }, # De-activate - project_activity_two.id => { 'custom_field_values' => { '7' => '1' }, 'active' => '0' } # De-activate + params = { + project_id: 1, + enumerations: { + project_activity.id => { 'custom_field_values' => { '7' => '1' }, 'active' => '0' }, # De-activate + project_activity_two.id => { 'custom_field_values' => { '7' => '1' }, 'active' => '0' } # De-activate + } } + put :update, params: params + assert_response :redirect assert_redirected_to '/projects/ecookbook/settings/activities' @@ -132,16 +146,24 @@ describe ProjectEnumerationsController, type: :controller do assert_equal 3, TimeEntry.where(activity_id: 9, project_id: 1).size session[:user_id] = 2 # manager - put :update, project_id: 1, enumerations: { - '9' => { 'parent_id' => '9', 'custom_field_values' => { '7' => '1' }, 'active' => '0' } # Design, De-activate + + params = { + project_id: 1, + enumerations: { + '9' => { 'parent_id' => '9', 'custom_field_values' => { '7' => '1' }, 'active' => '0' } # Design, De-activate + } } + put :update, params: params + assert_response :redirect # No more TimeEntries using the system activity assert_equal 0, TimeEntry.where(activity_id: 9, project_id: 1).size, 'Time Entries still assigned to system activities' # All TimeEntries using project activity project_specific_activity = TimeEntryActivity.find_by(parent_id: 9, project_id: 1) - assert_equal 3, TimeEntry.where(activity_id: project_specific_activity.id, project_id: 1).size, 'No Time Entries assigned to the project activity' + assert_equal 3, + TimeEntry.where(activity_id: project_specific_activity.id, project_id: 1).size, + 'No Time Entries assigned to the project activity' end it 'update when creating new activities will not convert existing data if an exception is raised' do @@ -165,16 +187,27 @@ describe ProjectEnumerationsController, type: :controller do session[:user_id] = 2 # manager - put :update, project_id: 1, - enumerations: { '9' => { 'parent_id' => parent.id, - 'custom_field_values' => { '7' => '1' }, - 'active' => '0' } } + params = { + project_id: 1, + enumerations: { + '9' => { 'parent_id' => parent.id, + 'custom_field_values' => { '7' => '1' }, + 'active' => '0' } + } + } + + put :update, params: params + assert_response :redirect # TimeEntries shouldn't have been reassigned on the failed record - assert_equal 3, TimeEntry.where(activity_id: 9, project_id: 1).size, 'Time Entries are not assigned to system activities' + assert_equal 3, + TimeEntry.where(activity_id: 9, project_id: 1).size, + 'Time Entries are not assigned to system activities' # TimeEntries shouldn't have been reassigned on the saved record either - assert_equal 1, TimeEntry.where(activity_id: 10, project_id: 1).size, 'Time Entries are not assigned to system activities' + assert_equal 1, + TimeEntry.where(activity_id: 10, project_id: 1).size, + 'Time Entries are not assigned to system activities' end it 'destroy' do @@ -194,7 +227,7 @@ describe ProjectEnumerationsController, type: :controller do ) assert project_activity_two.save - delete :destroy, project_id: 1 + delete :destroy, params: { project_id: 1 } assert_response :redirect assert_redirected_to '/projects/ecookbook/settings/activities' @@ -215,12 +248,16 @@ describe ProjectEnumerationsController, type: :controller do .update_all("activity_id = '#{project_activity.id}'") assert_equal 3, TimeEntry.where(activity_id: project_activity.id, project_id: 1).size - delete :destroy, project_id: 1 + delete :destroy, params: { project_id: 1 } assert_response :redirect assert_redirected_to '/projects/ecookbook/settings/activities' assert_nil TimeEntryActivity.find_by(id: project_activity.id) - assert_equal 0, TimeEntry.where(activity_id: project_activity.id, project_id: 1).size, 'TimeEntries still assigned to project specific activity' - assert_equal 3, TimeEntry.where(activity_id: 9, project_id: 1).size, 'TimeEntries still assigned to project specific activity' + assert_equal 0, + TimeEntry.where(activity_id: project_activity.id, project_id: 1).size, + 'TimeEntries still assigned to project specific activity' + assert_equal 3, + TimeEntry.where(activity_id: 9, project_id: 1).size, + 'TimeEntries still assigned to project specific activity' end end diff --git a/spec_legacy/functional/projects_controller_spec.rb b/spec_legacy/functional/projects_controller_spec.rb index b24347267af..eca0992668d 100644 --- a/spec_legacy/functional/projects_controller_spec.rb +++ b/spec_legacy/functional/projects_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -47,16 +48,20 @@ describe ProjectsController, type: :controller do assert_template 'index' refute_nil assigns(:projects) - assert_select 'ul', child: { tag: 'li', - descendant: { tag: 'a', content: 'eCookbook' }, - child: { tag: 'ul', - descendant: { tag: 'a', - content: 'Child of private child' - } - } - } + assert_select 'ul', + child: { + tag: 'li', + descendant: { tag: 'a', content: 'eCookbook' }, + child: { + tag: 'ul', + descendant: { + tag: 'a', + content: 'Child of private child' + } + } + } - assert_select('a', {content: /Private child of eCookbook/}, false) + assert_select('a', { content: /Private child of eCookbook/ }, false) end it 'should index atom' do @@ -78,7 +83,7 @@ describe ProjectsController, type: :controller do it 'should not show overall spent time link' do get :index assert_template 'index' - assert_select('a', {attributes: { href: '/time_entries' }}, false) + assert_select('a', { attributes: { href: '/time_entries' } }, false) end end end @@ -106,7 +111,7 @@ describe ProjectsController, type: :controller do get :new assert_response :success assert_template 'new' - assert_select('select', {attributes: { name: 'project[parent_id]' }}, false) + assert_select('select', { attributes: { name: 'project[parent_id]' } }, false) end end @@ -118,15 +123,20 @@ describe ProjectsController, type: :controller do end it 'should accept get' do - get :new, parent_id: 'ecookbook' + get :new, params: { parent_id: 'ecookbook' } assert_response :success assert_template 'new' # parent project selected - assert_select 'select', attributes: { name: 'project[parent_id]' }, - child: { tag: 'option', attributes: { value: '1', selected: 'selected' } } + assert_select 'select', + attributes: { name: 'project[parent_id]' }, + child: { tag: 'option', attributes: { value: '1', selected: 'selected' } } # no empty value - assert_select('select', {attributes: { name: 'project[parent_id]' }, - child: { tag: 'option', attributes: { value: '' } }}, false) + assert_select('select', + { + attributes: { name: 'project[parent_id]' }, + child: { tag: 'option', attributes: { value: '' } } + }, + false) end end end @@ -139,16 +149,18 @@ describe ProjectsController, type: :controller do it 'should create a new project' do post :create, - project: { - name: 'blog', - description: 'weblog', - identifier: 'blog', - is_public: 1, - custom_field_values: { :'3' => '5' }, - type_ids: ['1', '3'], - # an issue custom field that is not for all project - work_package_custom_field_ids: ['9'], - enabled_module_names: ['work_package_tracking', 'news', 'repository'] + params: { + project: { + name: 'blog', + description: 'weblog', + identifier: 'blog', + is_public: 1, + custom_field_values: { '3': '5' }, + type_ids: ['1', '3'], + # an issue custom field that is not for all project + work_package_custom_field_ids: ['9'], + enabled_module_names: ['work_package_tracking', 'news', 'repository'] + } } assert_redirected_to '/projects/blog/work_packages' @@ -165,13 +177,17 @@ describe ProjectsController, type: :controller do end it 'should create a new subproject' do - post :create, project: { name: 'blog', - description: 'weblog', - identifier: 'blog', - is_public: 1, - custom_field_values: { '3' => '5' }, - parent_id: 1 - } + post :create, + params: { + project: { + name: 'blog', + description: 'weblog', + identifier: 'blog', + is_public: 1, + custom_field_values: { '3' => '5' }, + parent_id: 1 + } + } assert_redirected_to '/projects/blog/work_packages' project = Project.find_by(name: 'blog') @@ -187,14 +203,18 @@ describe ProjectsController, type: :controller do end it 'should accept create a Project' do - post :create, project: { name: 'blog', - description: 'weblog', - identifier: 'blog', - is_public: 1, - custom_field_values: { '3' => '5' }, - type_ids: ['1', '3'], - enabled_module_names: ['work_package_tracking', 'news', 'repository'] - } + post :create, + params: { + project: { + name: 'blog', + description: 'weblog', + identifier: 'blog', + is_public: 1, + custom_field_values: { '3' => '5' }, + type_ids: ['1', '3'], + enabled_module_names: ['work_package_tracking', 'news', 'repository'] + } + } assert_redirected_to '/projects/blog/work_packages' @@ -212,13 +232,17 @@ describe ProjectsController, type: :controller do it 'should fail with parent_id' do assert_no_difference 'Project.count' do - post :create, project: { name: 'blog', - description: 'weblog', - identifier: 'blog', - is_public: 1, - custom_field_values: { '3' => '5' }, - parent_id: 1 - } + post :create, + params: { + project: { + name: 'blog', + description: 'weblog', + identifier: 'blog', + is_public: 1, + custom_field_values: { '3' => '5' }, + parent_id: 1 + } + } end assert_response :success project = assigns(:project) @@ -235,25 +259,32 @@ describe ProjectsController, type: :controller do end it 'should create a project with a parent_id' do - post :create, project: { name: 'blog', - description: 'weblog', - identifier: 'blog', - is_public: 1, - custom_field_values: { '3' => '5' }, - parent_id: 1 - } + post :create, + params: { + project: { + name: 'blog', + description: 'weblog', + identifier: 'blog', + is_public: 1, + custom_field_values: { '3' => '5' }, + parent_id: 1 + } + } assert_redirected_to '/projects/blog/work_packages' - project = Project.find_by(name: 'blog') end it 'should fail without parent_id' do assert_no_difference 'Project.count' do - post :create, project: { name: 'blog', - description: 'weblog', - identifier: 'blog', - is_public: 1, - custom_field_values: { '3' => '5' } - } + post :create, + params: { + project: { + name: 'blog', + description: 'weblog', + identifier: 'blog', + is_public: 1, + custom_field_values: { '3' => '5' } + } + } end assert_response :success project = assigns(:project) @@ -264,13 +295,17 @@ describe ProjectsController, type: :controller do it 'should fail with unauthorized parent_id' do assert !User.find(2).member_of?(Project.find(6)) assert_no_difference 'Project.count' do - post :create, project: { name: 'blog', - description: 'weblog', - identifier: 'blog', - is_public: 1, - custom_field_values: { '3' => '5' }, - parent_id: 6 - } + post :create, + params: { + project: { + name: 'blog', + description: 'weblog', + identifier: 'blog', + is_public: 1, + custom_field_values: { '3' => '5' }, + parent_id: 6 + } + } end assert_response :success project = assigns(:project) @@ -285,11 +320,14 @@ describe ProjectsController, type: :controller do it 'should create should preserve modules on validation failure' do session[:user_id] = 1 assert_no_difference 'Project.count' do - post :create, project: { - name: 'blog', - identifier: '', - enabled_module_names: %w(work_package_tracking news) - } + post :create, + params: { + project: { + name: 'blog', + identifier: '', + enabled_module_names: %w(work_package_tracking news) + } + } end assert_response :success project = assigns(:project) @@ -298,14 +336,14 @@ describe ProjectsController, type: :controller do end it 'should show by id' do - get :show, id: 1 + get :show, params: { id: 1 } assert_response :success assert_template 'show' refute_nil assigns(:project) end it 'should show by identifier' do - get :show, id: 'ecookbook' + get :show, params: { id: 'ecookbook' } assert_response :success assert_template 'show' refute_nil assigns(:project) @@ -316,18 +354,18 @@ describe ProjectsController, type: :controller do it 'should show should not display hidden custom fields' do ProjectCustomField.find_by(name: 'Development status').update_attribute :visible, false - get :show, id: 'ecookbook' + get :show, params: { id: 'ecookbook' } assert_response :success assert_template 'show' refute_nil assigns(:project) - assert_select('li', {content: /Development status/}, false) + assert_select('li', { content: /Development status/ }, false) end it 'should show should not fail when custom values are nil' do project = Project.find_by(identifier: 'ecookbook') project.custom_values.first.update_attribute(:value, nil) - get :show, id: 'ecookbook' + get :show, params: { id: 'ecookbook' } assert_response :success assert_template 'show' refute_nil assigns(:project) @@ -338,22 +376,22 @@ describe ProjectsController, type: :controller do project = Project.find_by(identifier: 'ecookbook') project.archive! - get :show, id: 'ecookbook' + get :show, params: { id: 'ecookbook' } assert_response 403 assert_nil assigns(:project) assert_select 'p', content: /archived/ end it 'should private subprojects hidden' do - get :show, id: 'ecookbook' + get :show, params: { id: 'ecookbook' } assert_response :success assert_template 'show' - assert_select('a', {content: /Private child/}, false) + assert_select('a', { content: /Private child/ }, false) end it 'should private subprojects visible' do session[:user_id] = 2 # manager who is a member of the private subproject - get :show, id: 'ecookbook' + get :show, params: { id: 'ecookbook' } assert_response :success assert_template 'show' assert_select 'a', content: /Private child/ @@ -361,15 +399,21 @@ describe ProjectsController, type: :controller do it 'should settings' do session[:user_id] = 2 # manager - get :settings, id: 1 + get :settings, params: { id: 1 } assert_response :success assert_template 'settings' end it 'should update' do session[:user_id] = 2 # manager - put :update, id: 1, project: { name: 'Test changed name', - issue_custom_field_ids: [''] } + put :update, + params: { + id: 1, + project: { + name: 'Test changed name', + issue_custom_field_ids: [''] + } + } assert_redirected_to '/projects/ecookbook/settings' project = Project.find(1) assert_equal 'Test changed name', project.name @@ -379,14 +423,14 @@ describe ProjectsController, type: :controller do session[:user_id] = 2 Project.find(1).enabled_module_names = ['work_package_tracking', 'news'] - put :modules, id: 1, project: { enabled_module_names: ['work_package_tracking', 'repository'] } + put :modules, params: { id: 1, project: { enabled_module_names: ['work_package_tracking', 'repository'] } } assert_redirected_to '/projects/ecookbook/settings/modules' assert_equal ['repository', 'work_package_tracking'], Project.find(1).enabled_module_names.sort end it 'should get destroy info' do session[:user_id] = 1 # admin - get :destroy_info, id: 1 + get :destroy_info, params: { id: 1 } assert_response :success assert_template 'destroy_info' refute_nil Project.find_by(id: 1) @@ -394,14 +438,14 @@ describe ProjectsController, type: :controller do it 'should post destroy' do session[:user_id] = 1 # admin - delete :destroy, id: 1, confirm: 1 + delete :destroy, params: { id: 1, confirm: 1 } assert_redirected_to '/admin/projects' assert_nil Project.find_by(id: 1) end it 'should archive' do session[:user_id] = 1 # admin - put :archive, id: 1 + put :archive, params: { id: 1 } assert_redirected_to '/admin/projects' assert !Project.find(1).active? end @@ -409,42 +453,49 @@ describe ProjectsController, type: :controller do it 'should unarchive' do session[:user_id] = 1 # admin Project.find(1).archive - put :unarchive, id: 1 + put :unarchive, params: { id: 1 } assert_redirected_to '/admin/projects' assert Project.find(1).active? end it 'should jump should redirect to active tab' do - get :show, id: 1, jump: 'work_packages' + get :show, params: { id: 1, jump: 'work_packages' } assert_redirected_to controller: :work_packages, action: :index, project_id: 'ecookbook' end it 'should jump should not redirect to inactive tab' do - get :show, id: 3, jump: 'news' + get :show, params: { id: 3, jump: 'news' } assert_response :success assert_template 'show' end it 'should jump should not redirect to unknown tab' do - get :show, id: 3, jump: 'foobar' + get :show, params: { id: 3, jump: 'foobar' } assert_response :success assert_template 'show' end - # A hook that is manually registered later - class ProjectBasedTemplate < Redmine::Hook::ViewListener - def view_layouts_base_html_head(context) - context[:controller].send(:render, text: '

Hello from hook!

') + context 'with hooks' do + # A hook that is manually registered later + class ProjectBasedTemplate < Redmine::Hook::ViewListener + def view_layouts_base_html_head(context) + context[:controller].send(:render, html: '

Hello from hook!

'.html_safe) + end + end + + before do + # Don't use this hook now + Redmine::Hook.clear_listeners + end + + after do + Redmine::Hook.clear_listeners + end + + it 'should hook response' do + Redmine::Hook.add_listener(ProjectBasedTemplate) + get :show, params: { id: 1 } + assert_select('p#hookselector') end end - # Don't use this hook now - Redmine::Hook.clear_listeners - - it 'should hook response' do - Redmine::Hook.add_listener(ProjectBasedTemplate) - get :show, id: 1 - assert_select('p#hookselector') - - Redmine::Hook.clear_listeners - end end diff --git a/spec_legacy/functional/repositories_controller_spec.rb b/spec_legacy/functional/repositories_controller_spec.rb index a1c0e8fcb4c..8ef015a0184 100644 --- a/spec_legacy/functional/repositories_controller_spec.rb +++ b/spec_legacy/functional/repositories_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'repositories_controller' describe RepositoriesController, type: :controller do @@ -50,52 +51,57 @@ describe RepositoriesController, type: :controller do end it 'should revisions' do - get :revisions, project_id: 1 + get :revisions, params: { project_id: 1 } assert_response :success assert_template 'revisions' refute_nil assigns(:changesets) end it 'should revision' do - get :revision, project_id: 1, rev: 1 + get :revision, params: { project_id: 1, rev: 1 } assert_response :success refute_nil assigns(:changeset) assert_equal '1', assigns(:changeset).revision end it 'should revision with before nil and after normal' do - get :revision, project_id: 1, rev: 1 + get :revision, params: { project_id: 1, rev: 1 } assert_response :success assert_template 'revision' - assert_select('ul', - {attributes: { class: 'toolbar-items' }, - descendant: { tag: 'a', - attributes: { - href: @controller.url_for( - only_path: true, - controller: 'repositories', - action: 'revision', - project_id: 'ecookbook', - rev: '0' - ) - }}}, false) + assert_select('ul', + { + attributes: { class: 'toolbar-items' }, + descendant: { + tag: 'a', + attributes: { + href: @controller.url_for( + only_path: true, + controller: 'repositories', + action: 'revision', + project_id: 'ecookbook', + rev: '0' + ) + } + } + }, false) assert_select 'ul', - attributes: { class: 'toolbar-items' }, - descendant: { tag: 'a', - attributes: { - href: @controller.url_for( - only_path: true, - controller: 'repositories', - action: 'revision', - project_id: 'ecookbook', - rev: '2' - ) - } - } + attributes: { class: 'toolbar-items' }, + descendant: { + tag: 'a', + attributes: { + href: @controller.url_for( + only_path: true, + controller: 'repositories', + action: 'revision', + project_id: 'ecookbook', + rev: '2' + ) + } + } end it 'should graph commits per month' do - get :graph, project_id: 1, graph: 'commits_per_month' + get :graph, params: { project_id: 1, graph: 'commits_per_month' } assert_response :success assert_equal 'image/svg+xml', response.content_type end @@ -111,24 +117,27 @@ describe RepositoriesController, type: :controller do comments: 'Committed by foo.' ) - get :committers, project_id: 1 + get :committers, params: { project_id: 1 } assert_response :success assert_template 'committers' assert_select 'td', - content: 'foo', - sibling: { - tag: 'td', - child: { tag: 'select', - attributes: { name: %r{^committers\[\d+\]\[\]$} } - } - } - assert_select('td', - {content: 'foo', + content: 'foo', sibling: { tag: 'td', - descendant: { tag: 'option', attributes: { selected: 'selected' } } - }}, false) + child: { + tag: 'select', + attributes: { name: %r{^committers\[\d+\]\[\]$} } + } + } + assert_select('td', + { + content: 'foo', + sibling: { + tag: 'td', + descendant: { tag: 'option', attributes: { selected: 'selected' } } + } + }, false) end it 'should map committers' do @@ -142,8 +151,12 @@ describe RepositoriesController, type: :controller do comments: 'Committed by foo.' ) assert_no_difference "Changeset.where('user_id = 3').count" do - post :committers, project_id: 1, - committers: { '0' => ['foo', '2'], '1' => ['dlopper', '3'] } + post :committers, + params: { + project_id: 1, + committers: { '0' => ['foo', '2'], + '1' => ['dlopper', '3'] } + } assert_redirected_to '/projects/ecookbook/repository/committers' assert_equal User.find(2), c.reload.user end diff --git a/spec_legacy/functional/repositories_git_controller_spec.rb b/spec_legacy/functional/repositories_git_controller_spec.rb index 596cecd9448..10bca8ee931 100644 --- a/spec_legacy/functional/repositories_git_controller_spec.rb +++ b/spec_legacy/functional/repositories_git_controller_spec.rb @@ -26,7 +26,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'repositories_controller' describe RepositoriesController, 'Git', type: :controller do @@ -64,7 +64,7 @@ describe RepositoriesController, 'Git', type: :controller do it 'should browse root' do @repository.fetch_changesets @repository.reload - get :show, project_id: 3 + get :show, params: { project_id: 3 } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -85,7 +85,7 @@ describe RepositoriesController, 'Git', type: :controller do it 'should browse branch' do @repository.fetch_changesets @repository.reload - get :show, project_id: 3, rev: 'test_branch' + get :show, params: { project_id: 3, rev: 'test_branch' } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -105,7 +105,7 @@ describe RepositoriesController, 'Git', type: :controller do 'tag00.lightweight', 'tag01.annotated', ].each do |t1| - get :show, project_id: 3, rev: t1 + get :show, params: { project_id: 3, rev: t1 } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -118,7 +118,7 @@ describe RepositoriesController, 'Git', type: :controller do it 'should browse directory' do @repository.fetch_changesets @repository.reload - get :show, project_id: 3, path: 'images' + get :show, params: { project_id: 3, path: 'images' } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -134,7 +134,7 @@ describe RepositoriesController, 'Git', type: :controller do it 'should browse at given revision' do @repository.fetch_changesets @repository.reload - get :show, project_id: 3, path: 'images', rev: '7234cb2750b63f47bff735edc50a1c0a433c2518' + get :show, params: { project_id: 3, path: 'images', rev: '7234cb2750b63f47bff735edc50a1c0a433c2518' } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -144,7 +144,7 @@ describe RepositoriesController, 'Git', type: :controller do end it 'should changes' do - get :changes, project_id: 3, path: 'images/edit.png' + get :changes, params: { project_id: 3, path: 'images/edit.png' } assert_response :success assert_template 'changes' assert_select 'div', @@ -153,25 +153,25 @@ describe RepositoriesController, 'Git', type: :controller do end it 'should entry show' do - get :entry, project_id: 3, path: 'sources/watchers_controller.rb' + get :entry, params: { project_id: 3, path: 'sources/watchers_controller.rb' } assert_response :success assert_template 'entry' # Line 19 assert_select 'th', - content: /11/, - attributes: { class: /line-num/ }, - sibling: { tag: 'td', content: /WITHOUT ANY WARRANTY/ } + content: /11/, + attributes: { class: /line-num/ }, + sibling: { tag: 'td', content: /WITHOUT ANY WARRANTY/ } end it 'should entry download' do - get :entry, project_id: 3, path: 'sources/watchers_controller.rb', format: 'raw' + get :entry, params: { project_id: 3, path: 'sources/watchers_controller.rb', format: 'raw' } assert_response :success # File content assert response.body.include?('WITHOUT ANY WARRANTY') end it 'should directory entry' do - get :entry, project_id: 3, path: 'sources' + get :entry, params: { project_id: 3, path: 'sources' } assert_response :success assert_template 'show' refute_nil assigns(:entry) @@ -183,7 +183,7 @@ describe RepositoriesController, 'Git', type: :controller do @repository.reload # Full diff of changeset 2f9c0091 - get :diff, project_id: 3, rev: '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + get :diff, params: { project_id: 3, rev: '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' } assert_response :success assert_template 'diff' # Line 22 removed @@ -199,8 +199,8 @@ describe RepositoriesController, 'Git', type: :controller do @repository.fetch_changesets @repository.reload - get :diff, project_id: 3, rev: '61b685fbe55ab05b5ac68402d5720c1a6ac973d1', - rev_to: '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + get :diff, params: { project_id: 3, rev: '61b685fbe55ab05b5ac68402d5720c1a6ac973d1', + rev_to: '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' } assert_response :success assert_template 'diff' @@ -210,7 +210,7 @@ describe RepositoriesController, 'Git', type: :controller do end it 'should annotate' do - get :annotate, project_id: 3, path: 'sources/watchers_controller.rb' + get :annotate, params: { project_id: 3, path: 'sources/watchers_controller.rb' } assert_response :success assert_template 'annotate' # Line 23, changeset 2f9c0091 @@ -223,7 +223,7 @@ describe RepositoriesController, 'Git', type: :controller do it 'should annotate at given revision' do @repository.fetch_changesets @repository.reload - get :annotate, project_id: 3, rev: 'deff7', path: 'sources/watchers_controller.rb' + get :annotate, params: { project_id: 3, rev: 'deff7', path: 'sources/watchers_controller.rb' } assert_response :success assert_template 'annotate' assert_select 'div', @@ -232,7 +232,7 @@ describe RepositoriesController, 'Git', type: :controller do end it 'should annotate binary file' do - get :annotate, project_id: 3, path: 'images/edit.png' + get :annotate, params: { project_id: 3, path: 'images/edit.png' } assert_response 200 assert_select 'p', attributes: { class: /nodata/ }, @@ -243,7 +243,7 @@ describe RepositoriesController, 'Git', type: :controller do @repository.fetch_changesets @repository.reload ['61b685fbe55ab05b5ac68402d5720c1a6ac973d1', '61b685f'].each do |r| - get :revision, project_id: 3, rev: r + get :revision, params: { project_id: 3, rev: r } assert_response :success assert_template 'revision' end @@ -253,7 +253,7 @@ describe RepositoriesController, 'Git', type: :controller do @repository.fetch_changesets @repository.reload ['', ' ', nil].each do |r| - get :revision, project_id: 3, rev: r + get :revision, params: { project_id: 3, rev: r } assert_response 404 assert_error_tag content: /was not found/ end diff --git a/spec_legacy/functional/repositories_subversion_controller_spec.rb b/spec_legacy/functional/repositories_subversion_controller_spec.rb index c74f8e9f0d1..3ddbf980349 100644 --- a/spec_legacy/functional/repositories_subversion_controller_spec.rb +++ b/spec_legacy/functional/repositories_subversion_controller_spec.rb @@ -26,7 +26,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'repositories_controller' describe RepositoriesController, 'Subversion', type: :controller do @@ -61,7 +61,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should show' do @repository.fetch_changesets @repository.reload - get :show, project_id: PRJ_ID + get :show, params: { project_id: PRJ_ID } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -71,7 +71,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should browse root' do @repository.fetch_changesets @repository.reload - get :show, project_id: PRJ_ID + get :show, params: { project_id: PRJ_ID } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -82,7 +82,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should browse directory' do @repository.fetch_changesets @repository.reload - get :show, project_id: PRJ_ID, path: 'subversion_test' + get :show, params: { project_id: PRJ_ID, path: 'subversion_test' } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -96,7 +96,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should browse at given revision' do @repository.fetch_changesets @repository.reload - get :show, project_id: PRJ_ID, path: 'subversion_test', rev: 4 + get :show, params: { project_id: PRJ_ID, path: 'subversion_test', rev: 4 } assert_response :success assert_template 'show' refute_nil assigns(:entries) @@ -106,7 +106,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should file changes' do @repository.fetch_changesets @repository.reload - get :changes, project_id: PRJ_ID, path: 'subversion_test/folder/helloworld.rb' + get :changes, params: { project_id: PRJ_ID, path: 'subversion_test/folder/helloworld.rb' } assert_response :success assert_template 'changes' @@ -128,7 +128,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should directory changes' do @repository.fetch_changesets @repository.reload - get :changes, project_id: PRJ_ID, path: 'subversion_test/folder' + get :changes, params: { project_id: PRJ_ID, path: 'subversion_test/folder' } assert_response :success assert_template 'changes' @@ -140,7 +140,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should entry' do @repository.fetch_changesets @repository.reload - get :entry, project_id: PRJ_ID, path: 'subversion_test/helloworld.c' + get :entry, params: { project_id: PRJ_ID, path: 'subversion_test/helloworld.c' } assert_response :success assert_template 'entry' end @@ -151,7 +151,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should entry should send if too big' do @repository.fetch_changesets @repository.reload - get :entry, project_id: PRJ_ID, path: 'subversion_test/helloworld.c' + get :entry, params: { project_id: PRJ_ID, path: 'subversion_test/helloworld.c' } assert_response :success assert_template nil assert_equal 'attachment; filename="helloworld.c"', response.headers['Content-Disposition'] @@ -161,7 +161,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should entry at given revision' do @repository.fetch_changesets @repository.reload - get :entry, project_id: PRJ_ID, path: 'subversion_test/helloworld.rb', rev: 2 + get :entry, params: { project_id: PRJ_ID, path: 'subversion_test/helloworld.rb', rev: 2 } assert_response :success assert_template 'entry' # this line was removed in r3 and file was moved in r6 @@ -172,7 +172,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should entry not found' do @repository.fetch_changesets @repository.reload - get :entry, project_id: PRJ_ID, path: 'subversion_test/zzz.c' + get :entry, params: { project_id: PRJ_ID, path: 'subversion_test/zzz.c' } assert_select 'div', attributes: { id: /errorExplanation/ }, content: /The entry or revision was not found in the repository/ end @@ -180,7 +180,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should entry download' do @repository.fetch_changesets @repository.reload - get :entry, project_id: PRJ_ID, path: 'subversion_test/helloworld.c', format: 'raw' + get :entry, params: { project_id: PRJ_ID, path: 'subversion_test/helloworld.c', format: 'raw' } assert_response :success assert_template nil assert_equal 'attachment; filename="helloworld.c"', response.headers['Content-Disposition'] @@ -189,7 +189,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should directory entry' do @repository.fetch_changesets @repository.reload - get :entry, project_id: PRJ_ID, path: 'subversion_test/folder' + get :entry, params: { project_id: PRJ_ID, path: 'subversion_test/folder' } assert_response :success assert_template 'show' refute_nil assigns(:entry) @@ -200,7 +200,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should revision' do @repository.fetch_changesets @repository.reload - get :revision, project_id: 1, rev: 2 + get :revision, params: { project_id: 1, rev: 2 } assert_response :success assert_template 'revision' assert_select 'ul', @@ -220,13 +220,13 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should invalid revision' do @repository.fetch_changesets @repository.reload - get :revision, project_id: PRJ_ID, rev: 'something_weird' + get :revision, params: { project_id: PRJ_ID, rev: 'something_weird' } assert_response 404 assert_error_tag content: /was not found/ end it 'should invalid revision diff' do - get :diff, project_id: PRJ_ID, rev: '1', rev_to: 'something_weird' + get :diff, params: { project_id: PRJ_ID, rev: '1', rev_to: 'something_weird' } assert_response 404 assert_error_tag content: /was not found/ end @@ -235,7 +235,7 @@ describe RepositoriesController, 'Subversion', type: :controller do @repository.fetch_changesets @repository.reload ['', ' ', nil].each do |r| - get :revision, project_id: PRJ_ID, rev: r + get :revision, params: { project_id: PRJ_ID, rev: r } assert_response 404 assert_error_tag content: /was not found/ end @@ -247,7 +247,7 @@ describe RepositoriesController, 'Subversion', type: :controller do # Changes repository url to a subdirectory r.update_attribute :url, (r.url + '/subversion_test/folder/') - get :revision, project_id: 1, rev: 2 + get :revision, params: { project_id: 1, rev: 2 } assert_response :success assert_template 'revision' assert_select 'ul', @@ -267,7 +267,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should revision diff' do @repository.fetch_changesets @repository.reload - get :diff, project_id: PRJ_ID, rev: 3 + get :diff, params: { project_id: PRJ_ID, rev: 3 } assert_response :success assert_template 'diff' @@ -277,7 +277,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should directory diff' do @repository.fetch_changesets @repository.reload - get :diff, project_id: PRJ_ID, rev: 6, rev_to: 2, path: 'subversion_test/folder' + get :diff, params: { project_id: PRJ_ID, rev: 6, rev_to: 2, path: 'subversion_test/folder' } assert_response :success assert_template 'diff' @@ -292,7 +292,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should annotate' do @repository.fetch_changesets @repository.reload - get :annotate, project_id: PRJ_ID, path: 'subversion_test/helloworld.c' + get :annotate, params: { project_id: PRJ_ID, path: 'subversion_test/helloworld.c' } assert_response :success assert_template 'annotate' end @@ -300,7 +300,7 @@ describe RepositoriesController, 'Subversion', type: :controller do it 'should annotate at given revision' do @repository.fetch_changesets @repository.reload - get :annotate, project_id: PRJ_ID, rev: 8, path: 'subversion_test/helloworld.c' + get :annotate, params: { project_id: PRJ_ID, rev: 8, path: 'subversion_test/helloworld.c' } assert_response :success assert_template 'annotate' assert_select 'div', diff --git a/spec_legacy/functional/roles_controller_spec.rb b/spec_legacy/functional/roles_controller_spec.rb index 27bb268b74c..8f1a59445e1 100644 --- a/spec_legacy/functional/roles_controller_spec.rb +++ b/spec_legacy/functional/roles_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -47,8 +48,9 @@ describe RolesController, type: :controller do refute_nil assigns(:roles) assert_equal Role.order('builtin, position').to_a, assigns(:roles) - assert_select 'a', attributes: { href: edit_role_path(1) }, - content: 'Manager' + assert_select 'a', + attributes: { href: edit_role_path(1) }, + content: 'Manager' end it 'should get new' do @@ -58,9 +60,14 @@ describe RolesController, type: :controller do end it 'should post new with validaton failure' do - post :create, role: { name: '', - permissions: ['add_work_packages', 'edit_work_packages', 'log_time', ''], - assignable: '0' } + post :create, + params: { + role: { + name: '', + permissions: ['add_work_packages', 'edit_work_packages', 'log_time', ''], + assignable: '0' + } + } assert_response :success assert_template 'new' @@ -68,9 +75,14 @@ describe RolesController, type: :controller do end it 'should post new without workflow copy' do - post :create, role: { name: 'RoleWithoutWorkflowCopy', - permissions: ['add_work_packages', 'edit_work_packages', 'log_time'], - assignable: '0' } + post :create, + params: { + role: { + name: 'RoleWithoutWorkflowCopy', + permissions: ['add_work_packages', 'edit_work_packages', 'log_time'], + assignable: '0' + } + } assert_redirected_to roles_path role = Role.find_by(name: 'RoleWithoutWorkflowCopy') @@ -80,10 +92,15 @@ describe RolesController, type: :controller do end it 'should post new with workflow copy' do - post :create, role: { name: 'RoleWithWorkflowCopy', - permissions: ['add_work_packages', 'edit_work_packages', 'log_time'], - assignable: '0' }, - copy_workflow_from: '1' + post :create, + params: { + role: { + name: 'RoleWithWorkflowCopy', + permissions: ['add_work_packages', 'edit_work_packages', 'log_time'], + assignable: '0' + }, + copy_workflow_from: '1' + } assert_redirected_to roles_path role = Role.find_by(name: 'RoleWithWorkflowCopy') @@ -92,17 +109,22 @@ describe RolesController, type: :controller do end it 'should get edit' do - get :edit, id: 1 + get :edit, params: { id: 1 } assert_response :success assert_template 'edit' assert_equal Role.find(1), assigns(:role) end it 'should put update' do - put :update, id: 1, - role: { name: 'Manager', - permissions: ['edit_project'], - assignable: '0' } + put :update, + params: { + id: 1, + role: { + name: 'Manager', + permissions: ['edit_project'], + assignable: '0' + } + } assert_redirected_to roles_path role = Role.find(1) @@ -113,13 +135,13 @@ describe RolesController, type: :controller do r = Role.new(name: 'ToBeDestroyed', permissions: [:view_wiki_pages]) assert r.save - delete :destroy, id: r + delete :destroy, params: { id: r } assert_redirected_to roles_path assert_nil Role.find_by(id: r.id) end it 'should destroy role in use' do - delete :destroy, id: 1 + delete :destroy, params: { id: 1 } assert_redirected_to roles_path assert flash[:error] == 'This role is in use and cannot be deleted.' refute_nil Role.find_by(id: 1) @@ -134,18 +156,21 @@ describe RolesController, type: :controller do assert_equal Role.order('builtin, position'), assigns(:roles) assert_select 'input', attributes: { type: 'checkbox', - name: 'permissions[3][]', - value: 'add_work_packages', - checked: 'checked' } + name: 'permissions[3][]', + value: 'add_work_packages', + checked: 'checked' } assert_select 'input', attributes: { type: 'checkbox', - name: 'permissions[3][]', - value: 'delete_work_packages', - checked: nil } + name: 'permissions[3][]', + value: 'delete_work_packages', + checked: nil } end it 'should put bulk update' do - put :bulk_update, permissions: { '0' => '', '1' => ['edit_work_packages'], '3' => ['add_work_packages', 'delete_work_packages'] } + put :bulk_update, + params: { + permissions: { '0' => '', '1' => ['edit_work_packages'], '3' => ['add_work_packages', 'delete_work_packages'] } + } assert_redirected_to roles_path assert_equal [:edit_work_packages], Role.find(1).permissions @@ -154,33 +179,33 @@ describe RolesController, type: :controller do end it 'should clear all permissions' do - put :bulk_update, permissions: { '0' => '' } + put :bulk_update, params: { permissions: { '0' => '' } } assert_redirected_to roles_path assert Role.find(1).permissions.empty? end it 'should move highest' do - put :update, id: 3, role: { move_to: 'highest' } + put :update, params: { id: 3, role: { move_to: 'highest' } } assert_redirected_to roles_path assert_equal 1, Role.find(3).position end it 'should move higher' do position = Role.find(3).position - put :update, id: 3, role: { move_to: 'higher' } + put :update, params: { id: 3, role: { move_to: 'higher' } } assert_redirected_to roles_path assert_equal position - 1, Role.find(3).position end it 'should move lower' do position = Role.find(2).position - put :update, id: 2, role: { move_to: 'lower' } + put :update, params: { id: 2, role: { move_to: 'lower' } } assert_redirected_to roles_path assert_equal position + 1, Role.find(2).position end it 'should move lowest' do - put :update, id: 2, role: { move_to: 'lowest' } + put :update, params: { id: 2, role: { move_to: 'lowest' } } assert_redirected_to roles_path assert_equal Role.count, Role.find(2).position end diff --git a/spec_legacy/functional/search_controller_spec.rb b/spec_legacy/functional/search_controller_spec.rb index 1b0e1e0765f..0370ff60684 100644 --- a/spec_legacy/functional/search_controller_spec.rb +++ b/spec_legacy/functional/search_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'search_controller' describe SearchController, type: :controller do @@ -40,7 +41,7 @@ describe SearchController, type: :controller do end it 'should search all projects' do - get :index, q: 'recipe subproject commit', submit: 'Search' + get :index, params: { q: 'recipe subproject commit', submit: 'Search' } assert_response :success assert_template 'index' @@ -54,7 +55,7 @@ describe SearchController, type: :controller do end it 'should search project and subprojects' do - get :index, project_id: 1, q: 'recipe subproject', scope: 'subprojects', submit: 'Search' + get :index, params: { project_id: 1, q: 'recipe subproject', scope: 'subprojects', submit: 'Search' } assert_response :success assert_template 'index' assert assigns(:results).include?(WorkPackage.find(1)) @@ -64,18 +65,18 @@ describe SearchController, type: :controller do it 'should search without searchable custom fields' do CustomField.update_all "searchable = #{ActiveRecord::Base.connection.quoted_false}" - get :index, project_id: 1 + get :index, params: { project_id: 1 } assert_response :success assert_template 'index' refute_nil assigns(:project) - get :index, project_id: 1, q: 'can' + get :index, params: { project_id: 1, q: 'can' } assert_response :success assert_template 'index' end it 'should search with searchable custom fields' do - get :index, project_id: 1, q: 'stringforcustomfield' + get :index, params: { project_id: 1, q: 'stringforcustomfield' } assert_response :success results = assigns(:results) refute_nil results @@ -85,7 +86,7 @@ describe SearchController, type: :controller do it 'should search all words' do # 'all words' is on by default - get :index, project_id: 1, q: 'recipe updating saving' + get :index, params: { project_id: 1, q: 'recipe updating saving' } results = assigns(:results) refute_nil results assert_equal 1, results.size @@ -93,7 +94,7 @@ describe SearchController, type: :controller do end it 'should search one of the words' do - get :index, project_id: 1, q: 'recipe updating saving', submit: 'Search' + get :index, params: { project_id: 1, q: 'recipe updating saving', submit: 'Search' } results = assigns(:results) refute_nil results assert_equal 3, results.size @@ -101,45 +102,45 @@ describe SearchController, type: :controller do end it 'should search titles only without result' do - get :index, project_id: 1, q: 'recipe updating saving', all_words: '1', titles_only: '1', submit: 'Search' + get :index, params: { project_id: 1, q: 'recipe updating saving', all_words: '1', titles_only: '1', submit: 'Search' } results = assigns(:results) refute_nil results assert_equal 0, results.size end it 'should search titles only' do - get :index, project_id: 1, q: 'recipe', titles_only: '1', submit: 'Search' + get :index, params: { project_id: 1, q: 'recipe', titles_only: '1', submit: 'Search' } results = assigns(:results) refute_nil results assert_equal 2, results.size end it 'should search with invalid project id' do - get :index, project_id: 195, q: 'recipe' + get :index, params: { project_id: 195, q: 'recipe' } assert_response 404 assert_nil assigns(:results) end it 'should quick jump to work packages' do # work_package of a public project - get :index, q: '3' + get :index, params: { q: '3' } assert_redirected_to '/work_packages/3' end it 'should not jump to an invisible WP' do - get :index, q: '4' + get :index, params: { q: '4' } assert_response :success assert_template 'index' end it 'should large integer' do - get :index, q: '4615713488' + get :index, params: { q: '4615713488' } assert_response :success assert_template 'index' end it 'should tokens with quotes' do - get :index, project_id: 1, q: '"good bye" hello "bye bye"' + get :index, params: { project_id: 1, q: '"good bye" hello "bye bye"' } assert_equal ['good bye', 'hello', 'bye bye'], assigns(:tokens) end end diff --git a/spec_legacy/functional/settings_controller_spec.rb b/spec_legacy/functional/settings_controller_spec.rb index e5ebd5c8837..c1a119f041d 100644 --- a/spec_legacy/functional/settings_controller_spec.rb +++ b/spec_legacy/functional/settings_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'settings_controller' describe SettingsController, type: :controller do @@ -51,11 +52,15 @@ describe SettingsController, type: :controller do end it 'should post edit notifications' do - post :edit, settings: { mail_from: 'functional@test.foo', - bcc_recipients: '0', - notified_events: %w(work_package_added work_package_updated news_added), - emails_footer: 'Test footer' - } + post :edit, + params: { + settings: { + mail_from: 'functional@test.foo', + bcc_recipients: '0', + notified_events: %w(work_package_added work_package_updated news_added), + emails_footer: 'Test footer' + } + } assert_redirected_to '/settings/edit' assert_equal 'functional@test.foo', Setting.mail_from assert !Setting.bcc_recipients? diff --git a/spec_legacy/functional/sys_controller_spec.rb b/spec_legacy/functional/sys_controller_spec.rb index 391a204add8..3abf343693b 100644 --- a/spec_legacy/functional/sys_controller_spec.rb +++ b/spec_legacy/functional/sys_controller_spec.rb @@ -27,7 +27,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'sys_controller' describe SysController, type: :controller do @@ -44,7 +44,7 @@ describe SysController, type: :controller do get :projects assert_response :success assert_equal 'application/xml', response.content_type - assert_select 'projects', children: { count: Project.active.has_module(:repository).count } + assert_select 'projects', children: { count: Project.active.has_module(:repository).count } end it 'should fetch changesets' do @@ -55,23 +55,23 @@ describe SysController, type: :controller do it 'should fetch changesets one project' do expect_any_instance_of(Repository::Subversion).to receive(:fetch_changesets).and_return(true) - get :fetch_changesets, id: 'ecookbook' + get :fetch_changesets, params: { id: 'ecookbook' } assert_response :success end it 'should fetch changesets unknown project' do - get :fetch_changesets, id: 'unknown' + get :fetch_changesets, params: { id: 'unknown' } assert_response 404 end describe 'api key', with_settings: { sys_api_key: 'my_secret_key' } do it 'should api key' do - get :projects, key: 'my_secret_key' + get :projects, params: { key: 'my_secret_key' } assert_response :success end it 'should wrong key should respond with 403 error' do - get :projects, key: 'wrong_key' + get :projects, params: { key: 'wrong_key' } assert_response 403 end end diff --git a/spec_legacy/functional/time_entries/reports_controller_spec.rb b/spec_legacy/functional/time_entries/reports_controller_spec.rb index 1907256579b..b36b219f016 100644 --- a/spec_legacy/functional/time_entries/reports_controller_spec.rb +++ b/spec_legacy/functional/time_entries/reports_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../legacy_spec_helper' describe TimeEntries::ReportsController, type: :controller do render_views @@ -35,11 +36,11 @@ describe TimeEntries::ReportsController, type: :controller do fixtures :all it 'should report at project level' do - get :show, project_id: 'ecookbook' + get :show, params: { project_id: 'ecookbook' } assert_response :success assert_template 'time_entries/reports/show' assert_select 'form', - attributes: { action: '/projects/ecookbook/time_entries/report', id: 'query_form' } + attributes: { action: '/projects/ecookbook/time_entries/report', id: 'query_form' } end it 'should report all projects' do @@ -47,7 +48,7 @@ describe TimeEntries::ReportsController, type: :controller do assert_response :success assert_template 'time_entries/reports/show' assert_select 'form', - attributes: { action: '/time_entries/report', id: 'query_form' } + attributes: { action: '/time_entries/report', id: 'query_form' } end it 'should report all projects denied' do @@ -59,7 +60,7 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report all projects one criteria' do - get :show, columns: 'week', from: '2007-04-01', to: '2007-04-30', criterias: ['project'] + get :show, params: { columns: 'week', from: '2007-04-01', to: '2007-04-30', criterias: ['project'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -67,7 +68,7 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report all time' do - get :show, project_id: 1, criterias: ['project', 'issue'] + get :show, params: { project_id: 1, criterias: ['project', 'issue'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -75,7 +76,7 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report all time by day' do - get :show, project_id: 1, criterias: ['project', 'issue'], columns: 'day' + get :show, params: { project_id: 1, criterias: ['project', 'issue'], columns: 'day' } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -84,7 +85,7 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report one criteria' do - get :show, project_id: 1, columns: 'week', from: '2007-04-01', to: '2007-04-30', criterias: ['project'] + get :show, params: { project_id: 1, columns: 'week', from: '2007-04-01', to: '2007-04-30', criterias: ['project'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -92,7 +93,11 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report two criterias' do - get :show, project_id: 1, columns: 'month', from: '2007-01-01', to: '2007-12-31', criterias: ['member', 'activity'] + get :show, params: { project_id: 1, + columns: 'month', + from: '2007-01-01', + to: '2007-12-31', + criterias: ['member', 'activity'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -100,7 +105,7 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report one day' do - get :show, project_id: 1, columns: 'day', from: '2007-03-23', to: '2007-03-23', criterias: ['member', 'activity'] + get :show, params: { project_id: 1, columns: 'day', from: '2007-03-23', to: '2007-03-23', criterias: ['member', 'activity'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -108,17 +113,22 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report at issue level' do - get :show, project_id: 1, work_package_id: 1, columns: 'month', from: '2007-01-01', to: '2007-12-31', criterias: ['member', 'activity'] + get :show, params: { project_id: 1, + work_package_id: 1, + columns: 'month', + from: '2007-01-01', + to: '2007-12-31', + criterias: ['member', 'activity'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) assert_equal '154.25', '%.2f' % assigns(:total_hours) assert_select 'form', - attributes: { action: work_package_time_entries_report_path(1), id: 'query_form' } + attributes: { action: work_package_time_entries_report_path(1), id: 'query_form' } end it 'should report custom field criteria' do - get :show, project_id: 1, criterias: ['project', 'cf_1', 'cf_7'] + get :show, params: { project_id: 1, criterias: ['project', 'cf_1', 'cf_7'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -128,16 +138,17 @@ describe TimeEntries::ReportsController, type: :controller do # Custom field column assert_select 'th', descendant: { content: /\s*Database\s*/ } # Custom field row - assert_select 'td', content: 'MySQL', - sibling: { tag: 'td', attributes: { class: 'hours' }, - child: { tag: 'span', attributes: { class: 'hours hours-int' }, - content: '1' } } + assert_select 'td', + content: 'MySQL', + sibling: { tag: 'td', attributes: { class: 'hours' }, + child: { tag: 'span', attributes: { class: 'hours hours-int' }, + content: '1' } } # Second custom field column assert_select 'th', descendant: { content: /\s*Billable\s*/ } end it 'should report one criteria no result' do - get :show, project_id: 1, columns: 'week', from: '1998-04-01', to: '1998-04-30', criterias: ['project'] + get :show, params: { project_id: 1, columns: 'week', from: '1998-04-01', to: '1998-04-30', criterias: ['project'] } assert_response :success assert_template 'time_entries/reports/show' refute_nil assigns(:total_hours) @@ -145,7 +156,11 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report all projects csv export' do - get :show, columns: 'month', from: '2007-01-01', to: '2007-06-30', criterias: ['project', 'member', 'activity'], format: 'csv' + get :show, params: { columns: 'month', + from: '2007-01-01', + to: '2007-06-30', + criterias: ['project', 'member', 'activity'], + format: 'csv' } assert_response :success assert_match(/text\/csv/, response.content_type) lines = response.body.chomp.split("\n") @@ -156,7 +171,12 @@ describe TimeEntries::ReportsController, type: :controller do end it 'should report csv export' do - get :show, project_id: 1, columns: 'month', from: '2007-01-01', to: '2007-06-30', criterias: ['project', 'member', 'activity'], format: 'csv' + get :show, params: { project_id: 1, + columns: 'month', + from: '2007-01-01', + to: '2007-06-30', + criterias: ['project', 'member', 'activity'], + format: 'csv' } assert_response :success assert_match(/text\/csv/, response.content_type) lines = response.body.chomp.split("\n") diff --git a/spec_legacy/functional/timelog_controller_spec.rb b/spec_legacy/functional/timelog_controller_spec.rb index 0d2abed3b03..9e20a1028bb 100644 --- a/spec_legacy/functional/timelog_controller_spec.rb +++ b/spec_legacy/functional/timelog_controller_spec.rb @@ -27,7 +27,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'timelog_controller' describe TimelogController, type: :controller do @@ -37,25 +37,26 @@ describe TimelogController, type: :controller do it 'should get new' do session[:user_id] = 3 - get :new, project_id: 1 + get :new, params: { project_id: 1 } assert_response :success assert_template 'edit' # Default activity selected - assert_select 'option', attributes: { selected: 'selected' }, - content: 'Development' + assert_select 'option', + attributes: { selected: 'selected' }, + content: 'Development' end it 'should get new should only show active time entry activities' do session[:user_id] = 3 - get :new, project_id: 1 + get :new, params: { project_id: 1 } assert_response :success assert_template 'edit' - assert_select('option', {content: 'Inactive Activity'}, false) + assert_select('option', { content: 'Inactive Activity' }, false) end it 'should get edit existing time' do session[:user_id] = 2 - get :edit, id: 2, project_id: nil + get :edit, params: { id: 2, project_id: nil } assert_response :success assert_template 'edit' # Default activity selected @@ -68,7 +69,7 @@ describe TimelogController, type: :controller do te.save! session[:user_id] = 1 - get :edit, project_id: 1, id: 1 + get :edit, params: { project_id: 1, id: 1 } assert_response :success assert_template 'edit' # Blank option since nothing is pre-selected @@ -79,13 +80,13 @@ describe TimelogController, type: :controller do # TODO: should POST to issues’ time log instead of project. change form # and routing session[:user_id] = 3 - post :create, project_id: 1, - time_entry: { comments: 'Some work on TimelogControllerTest', - # Not the default activity - activity_id: '11', - spent_on: '2008-03-14', - work_package_id: '1', - hours: '7.3' } + post :create, params: { project_id: 1, + time_entry: { comments: 'Some work on TimelogControllerTest', + # Not the default activity + activity_id: '11', + spent_on: '2008-03-14', + work_package_id: '1', + hours: '7.3' } } assert_redirected_to action: 'index', project_id: 'ecookbook' i = WorkPackage.find(1) @@ -102,13 +103,13 @@ describe TimelogController, type: :controller do # TODO: should POST to issues’ time log instead of project. change form # and routing session[:user_id] = 3 - post :create, project_id: 1, - time_entry: { comments: 'Some work on TimelogControllerTest', - # Not the default activity - activity_id: '11', - work_package_id: '', - spent_on: '2008-03-14', - hours: '7.3' } + post :create, params: { project_id: 1, + time_entry: { comments: 'Some work on TimelogControllerTest', + # Not the default activity + activity_id: '11', + work_package_id: '', + spent_on: '2008-03-14', + hours: '7.3' } } assert_redirected_to action: 'index', project_id: 'ecookbook' t = TimeEntry.find_by(comments: 'Some work on TimelogControllerTest') @@ -124,9 +125,9 @@ describe TimelogController, type: :controller do assert_equal 2, entry.user_id session[:user_id] = 1 - put :update, id: 1, - time_entry: { work_package_id: '2', - hours: '8' } + put :update, params: { id: 1, + time_entry: { work_package_id: '2', + hours: '8' } } assert_redirected_to action: 'index', project_id: 'ecookbook' entry.reload @@ -137,7 +138,7 @@ describe TimelogController, type: :controller do it 'should destroy' do session[:user_id] = 2 - delete :destroy, id: 1 + delete :destroy, params: { id: 1 } assert_redirected_to action: 'index', project_id: 'ecookbook' assert_equal I18n.t(:notice_successful_delete), flash[:notice] assert_nil TimeEntry.find_by(id: 1) @@ -151,7 +152,7 @@ describe TimelogController, type: :controller do end session[:user_id] = 2 - delete :destroy, id: 1 + delete :destroy, params: { id: 1 } assert_redirected_to action: 'index', project_id: 'ecookbook' assert_equal I18n.t(:notice_unable_delete_time_entry), flash[:error] refute_nil TimeEntry.find_by(id: 1) @@ -171,7 +172,7 @@ describe TimelogController, type: :controller do end it 'should index at project level' do - get :index, project_id: 'ecookbook' + get :index, params: { project_id: 'ecookbook' } assert_response :success assert_template 'index' refute_nil assigns(:entries) @@ -188,7 +189,7 @@ describe TimelogController, type: :controller do end it 'should index at project level with date range' do - get :index, project_id: 'ecookbook', from: '2007-03-20', to: '2007-04-30' + get :index, params: { project_id: 'ecookbook', from: '2007-03-20', to: '2007-04-30' } assert_response :success assert_template 'index' refute_nil assigns(:entries) @@ -202,7 +203,7 @@ describe TimelogController, type: :controller do end it 'should index at project level with period' do - get :index, project_id: 'ecookbook', period: '7_days' + get :index, params: { project_id: 'ecookbook', period: '7_days' } assert_response :success assert_template 'index' refute_nil assigns(:entries) @@ -214,7 +215,7 @@ describe TimelogController, type: :controller do end it 'should index one day' do - get :index, project_id: 'ecookbook', from: '2007-03-23', to: '2007-03-23' + get :index, params: { project_id: 'ecookbook', from: '2007-03-23', to: '2007-03-23' } assert_response :success assert_template 'index' refute_nil assigns(:total_hours) @@ -224,7 +225,7 @@ describe TimelogController, type: :controller do end it 'should index at issue level' do - get :index, work_package_id: 1 + get :index, params: { work_package_id: 1 } assert_response :success assert_template 'index' refute_nil assigns(:entries) @@ -241,7 +242,7 @@ describe TimelogController, type: :controller do it 'should index atom feed' do TimeEntry.all.each(&:recreate_initial_journal!) - get :index, project_id: 1, format: 'atom' + get :index, params: { project_id: 1, format: 'atom' } assert_response :success assert_equal 'application/atom+xml', response.content_type refute_nil assigns(:items) diff --git a/spec_legacy/functional/types_controller_spec.rb b/spec_legacy/functional/types_controller_spec.rb index 0a131a31633..ea178c703c3 100644 --- a/spec_legacy/functional/types_controller_spec.rb +++ b/spec_legacy/functional/types_controller_spec.rb @@ -54,16 +54,14 @@ describe TypesController, type: :controller do end it 'should post create' do - post :create, tab: "settings", type: { - name: 'New type' - } + post :create, params: { tab: "settings", type: { name: 'New type' } } type = ::Type.find_by(name: 'New type') assert_redirected_to action: 'edit', tab: 'settings', id: type.id assert_equal 0, type.workflows.count end it 'should post create with workflow copy' do - post :create, type: { name: 'New type' }, copy_workflow_from: 1 + post :create, params: { type: { name: 'New type' }, copy_workflow_from: 1 } type = ::Type.find_by(name: 'New type') assert_redirected_to action: 'edit', tab: 'settings', id: type.id assert_equal 0, type.projects.count @@ -73,7 +71,7 @@ describe TypesController, type: :controller do it 'should get edit' do ::Type.find(1).project_ids = [1, 3] - get :edit, id: 1, tab: 'settings' + get :edit, params: { id: 1, tab: 'settings' } assert_response :success assert_template 'edit' assert_template 'types/form/_settings' @@ -92,33 +90,33 @@ describe TypesController, type: :controller do end it 'should post update name' do - post :update, id: 1, tab: "settings", type: { name: 'Renamed' } + post :update, params: { id: 1, tab: "settings", type: { name: 'Renamed' } } assert_equal "Renamed", ::Type.find(1).name assert_redirected_to action: 'edit' end it 'should post update projects' do - post :update, id: 1, tab: "projects", type: { project_ids: ['1', '2', ''] } + post :update, params: { id: 1, tab: "projects", type: { project_ids: ['1', '2', ''] } } assert_redirected_to action: 'edit' assert_equal [1, 2], ::Type.find(1).project_ids.sort end it 'should post update without projects' do - post :update, id: 1, tab: "projects", type: { project_ids: [''] } + post :update, params: { id: 1, tab: "projects", type: { project_ids: [''] } } assert_redirected_to action: 'edit' assert ::Type.find(1).project_ids.empty? end it 'should move lower' do type = ::Type.find_by(position: 1) - post :move, id: 1, type: { move_to: 'lower' } + post :move, params: { id: 1, type: { move_to: 'lower' } } assert_equal 2, type.reload.position end it 'should destroy' do type = ::Type.create!(name: 'Destroyable') assert_difference '::Type.count', -1 do - post :destroy, id: type.id + post :destroy, params: { id: type.id } end assert_redirected_to action: 'index' assert_nil flash[:error] @@ -126,7 +124,7 @@ describe TypesController, type: :controller do it 'should destroy type in use' do assert_no_difference '::Type.count' do - post :destroy, id: 1 + post :destroy, params: { id: 1 } end assert_redirected_to action: 'index' refute_nil flash[:error] diff --git a/spec_legacy/functional/user_mailer_spec.rb b/spec_legacy/functional/user_mailer_spec.rb index 21ad6b1ce7d..2ced655b0ae 100644 --- a/spec_legacy/functional/user_mailer_spec.rb +++ b/spec_legacy/functional/user_mailer_spec.rb @@ -26,7 +26,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' describe UserMailer, type: :mailer do include ::Rails::Dom::Testing::Assertions::SelectorAssertions diff --git a/spec_legacy/functional/users_controller_spec.rb b/spec_legacy/functional/users_controller_spec.rb index b6649bde80a..04a8ea20829 100644 --- a/spec_legacy/functional/users_controller_spec.rb +++ b/spec_legacy/functional/users_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'users_controller' describe UsersController, type: :controller do @@ -52,11 +53,11 @@ describe UsersController, type: :controller do assert_template 'index' refute_nil assigns(:users) # active users only - assert_nil assigns(:users).detect { |u| !u.active? } + assert_nil(assigns(:users).detect { |u| !u.active? }) end it 'should index with name filter' do - get :index, name: 'john' + get :index, params: { name: 'john' } assert_response :success assert_template 'index' users = assigns(:users) @@ -66,7 +67,7 @@ describe UsersController, type: :controller do end it 'should index with group filter' do - get :index, group_id: '10' + get :index, params: { group_id: '10' } assert_response :success assert_template 'index' users = assigns(:users) @@ -77,7 +78,7 @@ describe UsersController, type: :controller do it 'should show should not display hidden custom fields' do session[:user_id] = nil UserCustomField.find_by(name: 'Phone number').update_attribute :visible, false - get :show, id: 2 + get :show, params: { id: 2 } assert_response :success assert_template 'show' refute_nil assigns(:user) @@ -93,34 +94,34 @@ describe UsersController, type: :controller do # Create a custom field to illustrate the issue custom_field = CustomField.create!(name: 'Testing', field_format: 'text') - custom_value = user.custom_values.build(custom_field: custom_field).save! + user.custom_values.build(custom_field: custom_field).save! - get :show, id: 2 + get :show, params: { id: 2 } assert_response :success end it 'should show inactive' do session[:user_id] = nil - get :show, id: 5 + get :show, params: { id: 5 } assert_response 404 end it 'should show should not reveal users with no visible activity or project' do session[:user_id] = nil - get :show, id: 9 + get :show, params: { id: 9 } assert_response 404 end it 'should show inactive by admin' do session[:user_id] = 1 - get :show, id: 5 + get :show, params: { id: 5 } assert_response 200 refute_nil assigns(:user) end it 'should show displays memberships based on project visibility' do session[:user_id] = 1 - get :show, id: 2 + get :show, params: { id: 2 } assert_response :success memberships = assigns(:memberships) refute_nil memberships @@ -130,13 +131,13 @@ describe UsersController, type: :controller do it 'should show current should require authentication' do session[:user_id] = nil - get :show, id: 'current' + get :show, params: { id: 'current' } assert_response 302 end it 'should show current' do session[:user_id] = 2 - get :show, id: 'current' + get :show, params: { id: 'current' } assert_response :success assert_template 'show' assert_equal User.find(2), assigns(:user) @@ -156,16 +157,18 @@ describe UsersController, type: :controller do assert_difference 'User.count' do assert_difference 'ActionMailer::Base.deliveries.size' do post :create, - user: { - firstname: 'John', - lastname: 'Doe', - login: 'jdoe', - password: 'adminADMIN!', - password_confirmation: 'adminADMIN!', - mail: 'jdoe@gmail.com', - mail_notification: 'none' - }, - pref: { } + params: { + user: { + firstname: 'John', + lastname: 'Doe', + login: 'jdoe', + password: 'adminADMIN!', + password_confirmation: 'adminADMIN!', + mail: 'jdoe@gmail.com', + mail_notification: 'none' + }, + pref: {} + } end end @@ -185,7 +188,8 @@ describe UsersController, type: :controller do activation_link = Regexp.new( "http://#{Setting.host_name}/account/activate\\?token=[a-f0-9]+", - Regexp::MULTILINE) + Regexp::MULTILINE + ) assert(mail.body.encoded =~ activation_link) end @@ -195,7 +199,7 @@ describe UsersController, type: :controller do # Provide at least one user field, otherwise strong_parameters regards the user parameter # as non-existent and raises ActionController::ParameterMissing, which in turn # results in a 400. - post :create, user: { login: 'jdoe' } + post :create, params: { user: { login: 'jdoe' } } end assert_response :success @@ -203,7 +207,7 @@ describe UsersController, type: :controller do end it 'should edit' do - get :edit, id: 2 + get :edit, params: { id: 2 } assert_response :success assert_template 'edit' @@ -212,7 +216,7 @@ describe UsersController, type: :controller do it 'should update with failure' do assert_no_difference 'User.count' do - put :update, id: 2, user: { firstname: '' } + put :update, params: { id: 2, user: { firstname: '' } } end assert_response :success @@ -220,7 +224,7 @@ describe UsersController, type: :controller do end it 'should update with group ids should assign groups' do - put :update, id: 2, user: { group_ids: ['10'] } + put :update, params: { id: 2, user: { group_ids: ['10'] } } user = User.find(2) assert_equal [10], user.group_ids @@ -229,7 +233,10 @@ describe UsersController, type: :controller do it 'should update with password change should send a notification' do Setting.bcc_recipients = '1' - put :update, id: 2, user: { password: 'newpassPASS!', password_confirmation: 'newpassPASS!' }, send_information: '1' + put :update, params: { id: 2, + user: { password: 'newpassPASS!', + password_confirmation: 'newpassPASS!' }, + send_information: '1' } u = User.find(2) assert u.check_password?('newpassPASS!') diff --git a/spec_legacy/functional/wiki_controller_spec.rb b/spec_legacy/functional/wiki_controller_spec.rb index d6dc0c440b9..b0028a813a5 100644 --- a/spec_legacy/functional/wiki_controller_spec.rb +++ b/spec_legacy/functional/wiki_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'wiki_controller' describe WikiController, type: :controller do @@ -47,7 +48,7 @@ describe WikiController, type: :controller do end it 'should show start page' do - get :show, project_id: 'ecookbook' + get :show, params: { project_id: 'ecookbook' } assert_response :success assert_template 'show' assert_select 'h1', content: /CookBook documentation/ @@ -60,7 +61,7 @@ describe WikiController, type: :controller do end it 'should show page with name' do - get :show, project_id: 1, id: 'Another page' + get :show, params: { project_id: 1, id: 'Another page' } assert_response :success assert_template 'show' assert_select 'h1', content: /Another page/ @@ -75,30 +76,30 @@ describe WikiController, type: :controller do page.content = WikiContent.new(text: 'Side bar content for test_show_with_sidebar') page.save! - get :show, project_id: 1, id: 'Another page' + get :show, params: { project_id: 1, id: 'Another page' } assert_response :success assert_select 'div', attributes: { id: 'sidebar' }, content: /Side bar content for test_show_with_sidebar/ end it 'should show unexistent page without edit right' do - get :show, project_id: 1, id: 'Unexistent page' + get :show, params: { project_id: 1, id: 'Unexistent page' } assert_response 404 end it 'should show unexistent page with edit right' do session[:user_id] = 2 - get :show, project_id: 1, id: 'Unexistent page' + get :show, params: { project_id: 1, id: 'Unexistent page' } assert_response :success assert_template 'edit' end it 'should create page' do session[:user_id] = 2 - put :update, project_id: 1, - id: 'New page', - content: { comments: 'Created the page', - text: "h1. New page\n\nThis is a new page" } + put :update, params: { project_id: 1, + id: 'New page', + content: { comments: 'Created the page', + text: "h1. New page\n\nThis is a new page" } } assert_redirected_to action: 'show', project_id: 'ecookbook', id: 'new-page' page = wiki.find_page('New page') assert !page.new_record? @@ -110,12 +111,12 @@ describe WikiController, type: :controller do session[:user_id] = 2 assert_difference 'WikiPage.count' do assert_difference 'Attachment.count' do - put :update, project_id: 1, - id: 'New page', - content: { comments: 'Created the page', - text: "h1. New page\n\nThis is a new page", - lock_version: 0 }, - attachments: { '1' => { 'file' => uploaded_test_file('testfile.txt', 'text/plain') } } + put :update, params: { project_id: 1, + id: 'New page', + content: { comments: 'Created the page', + text: "h1. New page\n\nThis is a new page", + lock_version: 0 }, + attachments: { '1' => { 'file' => uploaded_test_file('testfile.txt', 'text/plain') } } } end end page = wiki.find_page('New page') @@ -131,13 +132,13 @@ describe WikiController, type: :controller do assert_no_difference 'WikiPage.count' do assert_no_difference 'WikiContent.count' do assert_difference 'Journal.count' do - put :update, project_id: 1, - id: 'Another page', - content: { - comments: 'my comments', - text: 'edited', - lock_version: 1 - } + put :update, params: { project_id: 1, + id: 'Another page', + content: { + comments: 'my comments', + text: 'edited', + lock_version: 1 + } } end end end @@ -154,13 +155,13 @@ describe WikiController, type: :controller do assert_no_difference 'WikiPage.count' do assert_no_difference 'WikiContent.count' do assert_no_difference 'Journal.count' do - put :update, project_id: 1, - id: 'Another page', - content: { - comments: 'a' * 300, # failure here, comment is too long - text: 'edited', - lock_version: 1 - } + put :update, params: { project_id: 1, + id: 'Another page', + content: { + comments: 'a' * 300, # failure here, comment is too long + text: 'edited', + lock_version: 1 + } } end end end @@ -190,26 +191,26 @@ describe WikiController, type: :controller do assert_no_difference 'WikiPage.count' do assert_no_difference 'WikiContent.count' do assert_no_difference 'Journal.count' do - put :update, project_id: 1, - id: 'Another page', - content: { - comments: 'My comments', - text: 'Text should not be lost', - lock_version: 1 - } + put :update, params: { project_id: 1, + id: 'Another page', + content: { + comments: 'My comments', + text: 'Text should not be lost', + lock_version: 1 + } } end end end assert_response :success assert_template 'edit' assert_select 'div', - attributes: { class: /error/ }, - content: /Information has been updated by at least one other user in the meantime/ + attributes: { class: /error/ }, + content: /Information has been updated by at least one other user in the meantime/ assert_select 'textarea', - attributes: { name: 'content[text]' }, - content: /Text should not be lost/ + attributes: { name: 'content[text]' }, + content: /Text should not be lost/ assert_select 'input', - attributes: { name: 'content[comments]', value: 'My comments' } + attributes: { name: 'content[comments]', value: 'My comments' } c.reload assert_equal 'Previous text', c.text @@ -230,7 +231,7 @@ describe WikiController, type: :controller do data: FactoryGirl.build(:journal_wiki_content_journal, text: "h1. CookBook documentation\nSome updated [[documentation]] here...") - get :history, project_id: 1, id: 'CookBook documentation' + get :history, params: { project_id: 1, id: 'CookBook documentation' } assert_response :success assert_template 'history' refute_nil assigns(:versions) @@ -243,7 +244,7 @@ describe WikiController, type: :controller do journable_id: 2, data: FactoryGirl.build(:journal_wiki_content_journal, text: "h1. Another page\n\n\nthis is a link to ticket: #2") - get :history, project_id: 1, id: 'Another page' + get :history, params: { project_id: 1, id: 'Another page' } assert_response :success assert_template 'history' refute_nil assigns(:versions) @@ -261,7 +262,7 @@ describe WikiController, type: :controller do data: FactoryGirl.build(:journal_wiki_content_journal, text: "h1. CookBook documentation\n\n\nSome updated [[documentation]] here...") - get :diff, project_id: 1, id: 'CookBook documentation', version: journal_to.version, version_from: journal_from.version + get :diff, params: { project_id: 1, id: 'CookBook documentation', version: journal_to.version, version_from: journal_from.version } assert_response :success assert_template 'diff' assert_select 'ins', attributes: { class: 'diffins' }, @@ -278,7 +279,7 @@ describe WikiController, type: :controller do data: FactoryGirl.build(:journal_wiki_content_journal, text: "h1. CookBook documentation\n\n\nSome [[documentation]] here...") - get :annotate, project_id: 1, id: 'CookBook documentation', version: journal_to.version + get :annotate, params: { project_id: 1, id: 'CookBook documentation', version: journal_to.version } assert_response :success assert_template 'annotate' # Line 1 @@ -293,23 +294,23 @@ describe WikiController, type: :controller do it 'should get rename' do session[:user_id] = 2 - get :rename, project_id: 1, id: 'Another page' + get :rename, params: { project_id: 1, id: 'Another page' } assert_response :success assert_template 'rename' end it 'should get rename child page' do session[:user_id] = 2 - get :rename, project_id: 1, id: 'Child 1' + get :rename, params: { project_id: 1, id: 'Child 1' } assert_response :success assert_template 'rename' end it 'should rename with redirect' do session[:user_id] = 2 - patch :rename, project_id: 1, id: 'Another page', - page: { title: 'Another renamed page', - redirect_existing_links: 1 } + patch :rename, params: { project_id: 1, id: 'Another page', + page: { title: 'Another renamed page', + redirect_existing_links: 1 } } assert_redirected_to action: 'show', project_id: 'ecookbook', id: 'another-renamed-page' # Check redirects refute_nil wiki.find_page('Another page') @@ -318,9 +319,9 @@ describe WikiController, type: :controller do it 'should rename without redirect' do session[:user_id] = 2 - patch :rename, project_id: 1, id: 'another-page', - page: { title: 'Another renamed page', - redirect_existing_links: '0' } + patch :rename, params: { project_id: 1, id: 'another-page', + page: { title: 'Another renamed page', + redirect_existing_links: '0' } } assert_redirected_to action: 'show', project_id: 'ecookbook', id: 'another-renamed-page' # Check that there's no redirects assert_nil wiki.find_page('Another page') @@ -328,14 +329,14 @@ describe WikiController, type: :controller do it 'should destroy child' do session[:user_id] = 2 - delete :destroy, project_id: 1, id: 'Child 1' + delete :destroy, params: { project_id: 1, id: 'Child 1' } assert_redirected_to action: 'index', project_id: 'ecookbook', id: redirect_page end it 'should destroy parent' do session[:user_id] = 2 assert_no_difference('WikiPage.count') do - delete :destroy, project_id: 1, id: 'Another page' + delete :destroy, params: { project_id: 1, id: 'Another page' } end assert_response :success assert_template 'destroy' @@ -344,7 +345,7 @@ describe WikiController, type: :controller do it 'should destroy parent with nullify' do session[:user_id] = 2 assert_difference('WikiPage.count', -1) do - delete :destroy, project_id: 1, id: 'Another page', todo: 'nullify' + delete :destroy, params: { project_id: 1, id: 'Another page', todo: 'nullify' } end assert_redirected_to action: 'index', project_id: 'ecookbook', id: redirect_page assert_nil WikiPage.find_by(id: 2) @@ -353,7 +354,7 @@ describe WikiController, type: :controller do it 'should destroy parent with cascade' do session[:user_id] = 2 assert_difference('WikiPage.count', -3) do - delete :destroy, project_id: 1, id: 'Another page', todo: 'destroy' + delete :destroy, params: { project_id: 1, id: 'Another page', todo: 'destroy' } end assert_redirected_to action: 'index', project_id: 'ecookbook', id: redirect_page assert_nil WikiPage.find_by(id: 2) @@ -363,7 +364,7 @@ describe WikiController, type: :controller do it 'should destroy parent with reassign' do session[:user_id] = 2 assert_difference('WikiPage.count', -1) do - delete :destroy, project_id: 1, id: 'Another page', todo: 'reassign', reassign_to_id: 1 + delete :destroy, params: { project_id: 1, id: 'Another page', todo: 'reassign', reassign_to_id: 1 } end assert_redirected_to action: 'index', project_id: 'ecookbook', id: redirect_page assert_nil WikiPage.find_by(id: 2) @@ -371,7 +372,7 @@ describe WikiController, type: :controller do end it 'should index' do - get :index, project_id: 'ecookbook' + get :index, params: { project_id: 'ecookbook' } assert_response :success assert_template 'index' pages = assigns(:pages) @@ -391,7 +392,7 @@ describe WikiController, type: :controller do end it 'should index should include atom link' do - get :index, project_id: 'ecookbook' + get :index, params: { project_id: 'ecookbook' } assert_select 'a', attributes: { href: '/projects/ecookbook/activity.atom?show_wiki_edits=1' } end @@ -399,7 +400,7 @@ describe WikiController, type: :controller do context 'with an authorized user to export the wiki' do before do session[:user_id] = 2 - get :export, project_id: 'ecookbook' + get :export, params: { project_id: 'ecookbook' } end it { is_expected.to respond_with :success } @@ -414,7 +415,7 @@ describe WikiController, type: :controller do context 'with an unauthorized user' do before do - get :export, project_id: 'ecookbook' + get :export, params: { project_id: 'ecookbook' } it { is_expected.to respond_with :redirect } it { is_expected.to redirect_to('wiki index') { { action: 'show', project_id: @project, id: nil } } } @@ -424,7 +425,7 @@ describe WikiController, type: :controller do context 'GET :date_index' do before do - get :date_index, project_id: 'ecookbook' + get :date_index, params: { project_id: 'ecookbook' } end it { is_expected.to respond_with :success } @@ -438,7 +439,7 @@ describe WikiController, type: :controller do end it 'should not found' do - get :show, project_id: 999 + get :show, params: { project_id: 999 } assert_response 404 end @@ -446,7 +447,7 @@ describe WikiController, type: :controller do page = WikiPage.find_by(wiki_id: 1, title: 'Another page') assert !page.protected? session[:user_id] = 2 - post :protect, project_id: 1, id: page.title, protected: '1' + post :protect, params: { project_id: 1, id: page.title, protected: '1' } assert_redirected_to action: 'show', project_id: 'ecookbook', id: 'another-page' assert page.reload.protected? end @@ -455,14 +456,14 @@ describe WikiController, type: :controller do page = WikiPage.find_by(wiki_id: 1, title: 'CookBook documentation') assert page.protected? session[:user_id] = 2 - post :protect, project_id: 1, id: page.title, protected: '0' + post :protect, params: { project_id: 1, id: page.title, protected: '0' } assert_redirected_to action: 'show', project_id: 'ecookbook', id: 'cookbook-documentation' assert !page.reload.protected? end it 'should show page with edit link' do session[:user_id] = 2 - get :show, project_id: 1 + get :show, params: { project_id: 1 } assert_response :success assert_template 'show' assert_select 'a', attributes: { href: '/projects/1/wiki/CookBook+documentation/edit' } @@ -470,16 +471,16 @@ describe WikiController, type: :controller do it 'should show page without edit link' do session[:user_id] = 4 - get :show, project_id: 1 + get :show, params: { project_id: 1 } assert_response :success assert_template 'show' - assert_select('a', {attributes: { href: '/projects/1/wiki/CookBook+documentation/edit' }}, false) + assert_select('a', { attributes: { href: '/projects/1/wiki/CookBook+documentation/edit' } }, false) end it 'should edit unprotected page' do # Non members can edit unprotected wiki pages session[:user_id] = 4 - get :edit, project_id: 1, id: 'Another page' + get :edit, params: { project_id: 1, id: 'Another page' } assert_response :success assert_template 'edit' end @@ -487,19 +488,19 @@ describe WikiController, type: :controller do it 'should edit protected page by nonmember' do # Non members can't edit protected wiki pages session[:user_id] = 4 - get :edit, project_id: 1, id: 'CookBook documentation' + get :edit, params: { project_id: 1, id: 'CookBook documentation' } assert_response 403 end it 'should edit protected page by member' do session[:user_id] = 2 - get :edit, project_id: 1, id: 'CookBook documentation' + get :edit, params: { project_id: 1, id: 'CookBook documentation' } assert_response :success assert_template 'edit' end it 'should history of non existing page should return 404' do - get :history, project_id: 1, id: 'Unknown page' + get :history, params: { project_id: 1, id: 'Unknown page' } assert_response 404 end end diff --git a/spec_legacy/functional/workflows_controller_spec.rb b/spec_legacy/functional/workflows_controller_spec.rb index 5ed5558a25b..1d2801c9509 100644 --- a/spec_legacy/functional/workflows_controller_spec.rb +++ b/spec_legacy/functional/workflows_controller_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' require 'workflows_controller' describe WorkflowsController, type: :controller do @@ -46,7 +47,7 @@ describe WorkflowsController, type: :controller do count = Workflow.where('role_id = 1 AND type_id = 2').count assert_select 'a', content: count.to_s, - attributes: { href: '/workflows/edit?role_id=1&type_id=2' } + attributes: { href: '/workflows/edit?role_id=1&type_id=2' } end it 'should get edit' do @@ -62,7 +63,7 @@ describe WorkflowsController, type: :controller do Workflow.create!(role_id: 1, type_id: 1, old_status_id: 2, new_status_id: 3) Workflow.create!(role_id: 2, type_id: 1, old_status_id: 3, new_status_id: 5) - get :edit, role_id: 2, type_id: 1 + get :edit, params: { role_id: 2, type_id: 1 } assert_response :success assert_template 'edit' @@ -72,23 +73,23 @@ describe WorkflowsController, type: :controller do # allowed transitions assert_select 'input', attributes: { type: 'checkbox', - name: 'status[3][5][]', - value: 'always', - checked: 'checked' } + name: 'status[3][5][]', + value: 'always', + checked: 'checked' } # not allowed assert_select 'input', attributes: { type: 'checkbox', - name: 'status[3][2][]', - value: 'always', - checked: nil } + name: 'status[3][2][]', + value: 'always', + checked: nil } # unused - assert_select('input', {attributes: { type: 'checkbox', - name: 'status[1][1][]' }}, false) + assert_select('input', { attributes: { type: 'checkbox', + name: 'status[1][1][]' } }, false) end it 'should get edit with role and type and all statuses' do Workflow.delete_all - get :edit, role_id: 2, type_id: 1, used_statuses_only: '0' + get :edit, params: { role_id: 2, type_id: 1, used_statuses_only: '0' } assert_response :success assert_template 'edit' @@ -96,17 +97,17 @@ describe WorkflowsController, type: :controller do assert_equal Status.count, assigns(:statuses).size assert_select 'input', attributes: { type: 'checkbox', - name: 'status[1][1][]', - value: 'always', - checked: nil } + name: 'status[1][1][]', + value: 'always', + checked: nil } end it 'should post edit' do - post :edit, role_id: 2, type_id: 1, - status: { - '4' => { '5' => ['always'] }, - '3' => { '1' => ['always'], '2' => ['always'] } - } + post :edit, params: { role_id: 2, type_id: 1, + status: { + '4' => { '5' => ['always'] }, + '3' => { '1' => ['always'], '2' => ['always'] } + } } assert_redirected_to '/workflows/edit?role_id=2&type_id=1' assert_equal 3, Workflow.where(type_id: 1, role_id: 2).count @@ -115,11 +116,11 @@ describe WorkflowsController, type: :controller do end it 'should post edit with additional transitions' do - post :edit, role_id: 2, type_id: 1, - status: { - '4' => { '5' => ['always'] }, - '3' => { '1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee'] } - } + post :edit, params: { role_id: 2, type_id: 1, + status: { + '4' => { '5' => ['always'] }, + '3' => { '1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee'] } + } } assert_redirected_to '/workflows/edit?role_id=2&type_id=1' assert_equal 4, Workflow.where(type_id: 1, role_id: 2).count @@ -141,7 +142,7 @@ describe WorkflowsController, type: :controller do it 'should clear workflow' do assert Workflow.where(type_id: 1, role_id: 2).count > 0 - post :edit, role_id: 2, type_id: 1 + post :edit, params: { role_id: 2, type_id: 1 } assert_equal 0, Workflow.where(type_id: 1, role_id: 2).count end @@ -154,8 +155,8 @@ describe WorkflowsController, type: :controller do it 'should post copy one to one' do source_transitions = status_transitions(type_id: 1, role_id: 2) - post :copy, source_type_id: '1', source_role_id: '2', - target_type_ids: ['3'], target_role_ids: ['1'] + post :copy, params: { source_type_id: '1', source_role_id: '2', + target_type_ids: ['3'], target_role_ids: ['1'] } assert_response 302 assert_equal source_transitions, status_transitions(type_id: 3, role_id: 1) end @@ -163,8 +164,8 @@ describe WorkflowsController, type: :controller do it 'should post copy one to many' do source_transitions = status_transitions(type_id: 1, role_id: 2) - post :copy, source_type_id: '1', source_role_id: '2', - target_type_ids: ['2', '3'], target_role_ids: ['1', '3'] + post :copy, params: { source_type_id: '1', source_role_id: '2', + target_type_ids: ['2', '3'], target_role_ids: ['1', '3'] } assert_response 302 assert_equal source_transitions, status_transitions(type_id: 2, role_id: 1) assert_equal source_transitions, status_transitions(type_id: 3, role_id: 1) @@ -176,8 +177,8 @@ describe WorkflowsController, type: :controller do source_t2 = status_transitions(type_id: 2, role_id: 2) source_t3 = status_transitions(type_id: 3, role_id: 2) - post :copy, source_type_id: 'any', source_role_id: '2', - target_type_ids: ['2', '3'], target_role_ids: ['1', '3'] + post :copy, params: { source_type_id: 'any', source_role_id: '2', + target_type_ids: ['2', '3'], target_role_ids: ['1', '3'] } assert_response 302 assert_equal source_t2, status_transitions(type_id: 2, role_id: 1) assert_equal source_t3, status_transitions(type_id: 3, role_id: 1) @@ -187,7 +188,8 @@ describe WorkflowsController, type: :controller do # Returns an array of status transitions that can be compared def status_transitions(conditions) - Workflow.where(conditions) + Workflow + .where(conditions) .order('type_id, role_id, old_status_id, new_status_id') .map { |w| [w.old_status, w.new_status_id] } end diff --git a/spec_legacy/integration/api_spec/disabled_rest_api_spec.rb b/spec_legacy/integration/api_spec/disabled_rest_api_spec.rb index ddcbf3f76c5..7f595868ab7 100644 --- a/spec_legacy/integration/api_spec/disabled_rest_api_spec.rb +++ b/spec_legacy/integration/api_spec/disabled_rest_api_spec.rb @@ -27,7 +27,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../legacy_spec_helper' describe 'ApiTest: DisabledRestApiTest', type: :request do fixtures :all @@ -62,7 +62,7 @@ describe 'ApiTest: DisabledRestApiTest', type: :request do before do @user = FactoryGirl.create(:user, password: 'adminADMIN!', password_confirmation: 'adminADMIN!') @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, 'adminADMIN!') - get '/api/v2/projects.xml', nil, authorization: @authorization + get '/api/v2/projects.xml', params: { authorization: @authorization } end it { is_expected.to respond_with :unauthorized } @@ -77,7 +77,7 @@ describe 'ApiTest: DisabledRestApiTest', type: :request do @user = FactoryGirl.create(:user) @token = FactoryGirl.create(:token, user: @user, action: 'api') @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@token.value, 'X') - get '/api/v2/projects.xml', nil, authorization: @authorization + get '/api/v2/projects.xml', params: { authorization: @authorization } end it { is_expected.to respond_with :unauthorized } @@ -107,7 +107,7 @@ describe 'ApiTest: DisabledRestApiTest', type: :request do before do @user = FactoryGirl.create(:user, password: 'adminADMIN!', password_confirmation: 'adminADMIN!') @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, 'adminADMIN!') - get '/api/v2/projects.json', nil, authorization: @authorization + get '/api/v2/projects.json', params: { authorization: @authorization } end it { is_expected.to respond_with :unauthorized } @@ -122,7 +122,7 @@ describe 'ApiTest: DisabledRestApiTest', type: :request do @user = FactoryGirl.create(:user) @token = FactoryGirl.create(:token, user: @user, action: 'api') @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@token.value, 'DoesNotMatter') - get '/api/v2/projects.json', nil, authorization: @authorization + get '/api/v2/projects.json', params: { authorization: @authorization } end it { is_expected.to respond_with :unauthorized } diff --git a/spec_legacy/integration/api_spec/http_accept_auth_spec.rb b/spec_legacy/integration/api_spec/http_accept_auth_spec.rb index 4a69fc019eb..e12d343bbc0 100644 --- a/spec_legacy/integration/api_spec/http_accept_auth_spec.rb +++ b/spec_legacy/integration/api_spec/http_accept_auth_spec.rb @@ -27,7 +27,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../legacy_spec_helper' describe 'ApiTest: HttpAcceptAuthTest', type: :request do fixtures :all diff --git a/spec_legacy/integration/api_spec/http_basic_login_spec.rb b/spec_legacy/integration/api_spec/http_basic_login_spec.rb index 239ba3014e6..52a227822f7 100644 --- a/spec_legacy/integration/api_spec/http_basic_login_spec.rb +++ b/spec_legacy/integration/api_spec/http_basic_login_spec.rb @@ -27,7 +27,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../legacy_spec_helper' describe 'ApiTest: HttpBasicLoginTest', type: :request do fixtures :all diff --git a/spec_legacy/integration/api_spec/http_basic_login_with_api_token_spec.rb b/spec_legacy/integration/api_spec/http_basic_login_with_api_token_spec.rb index 30d02e3fd1f..fc42c3e1c65 100644 --- a/spec_legacy/integration/api_spec/http_basic_login_with_api_token_spec.rb +++ b/spec_legacy/integration/api_spec/http_basic_login_with_api_token_spec.rb @@ -27,7 +27,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../legacy_spec_helper' describe 'ApiTest: HttpBasicLoginWithApiToken', type: :request do fixtures :all diff --git a/spec_legacy/integration/api_spec/token_authentication_spec.rb b/spec_legacy/integration/api_spec/token_authentication_spec.rb index a691062078d..dbe55e0a0ae 100644 --- a/spec_legacy/integration/api_spec/token_authentication_spec.rb +++ b/spec_legacy/integration/api_spec/token_authentication_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -27,7 +28,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../legacy_spec_helper' describe 'ApiTest: TokenAuthentication', type: :request do fixtures :all diff --git a/spec_legacy/integration/application_spec.rb b/spec_legacy/integration/application_spec.rb index 886be0c781e..d337e2af629 100644 --- a/spec_legacy/integration/application_spec.rb +++ b/spec_legacy/integration/application_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -42,13 +43,13 @@ describe 'Application', with_settings: { login_required?: false } do allow(Setting).to receive(:default_language).and_return 'en' # a french user - get '/projects', {}, 'HTTP_ACCEPT_LANGUAGE' => 'de,de-de;q=0.8,en-us;q=0.5,en;q=0.3' + get '/projects', params: {}, headers: { 'HTTP_ACCEPT_LANGUAGE' => 'de,de-de;q=0.8,en-us;q=0.5,en;q=0.3' } assert_response :success assert_select 'h2', content: 'Projekte' assert_equal :de, current_language # not a supported language: default language should be used - get '/projects', {}, 'HTTP_ACCEPT_LANGUAGE' => 'zz' + get '/projects', params: {}, headers: { 'HTTP_ACCEPT_LANGUAGE' => 'zz' } assert_response :success assert_select 'h2', content: 'Projects' end diff --git a/spec_legacy/integration/layout_spec.rb b/spec_legacy/integration/layout_spec.rb index 7de1e1656fc..04b0dd07b5a 100644 --- a/spec_legacy/integration/layout_spec.rb +++ b/spec_legacy/integration/layout_spec.rb @@ -27,7 +27,7 @@ # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' describe 'Layout' do fixtures :all diff --git a/spec_legacy/integration/lib/redmine/menu_manager_spec.rb b/spec_legacy/integration/lib/redmine/menu_manager_spec.rb index f9de609219e..f47bfe560ed 100644 --- a/spec_legacy/integration/lib/redmine/menu_manager_spec.rb +++ b/spec_legacy/integration/lib/redmine/menu_manager_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../../legacy_spec_helper' describe 'MenuManager', with_settings: { login_required: 0 } do include Redmine::I18n @@ -39,7 +40,7 @@ describe 'MenuManager', with_settings: { login_required: 0 } do it 'project menu with specific locale' do Setting.available_languages = [:de, :en] - get '/projects/ecookbook', {}, 'HTTP_ACCEPT_LANGUAGE' => 'de,de-de;q=0.8,en-us;q=0.5,en;q=0.3' + get '/projects/ecookbook', params: {}, headers: { 'HTTP_ACCEPT_LANGUAGE' => 'de,de-de;q=0.8,en-us;q=0.5,en;q=0.3' } assert_select 'div', attributes: { id: 'main-menu' }, descendant: { tag: 'li', child: { tag: 'a', content: ll('de', :label_activity), diff --git a/spec_legacy/integration/routing_spec.rb b/spec_legacy/integration/routing_spec.rb index 0930bdda045..8e06e173fc9 100644 --- a/spec_legacy/integration/routing_spec.rb +++ b/spec_legacy/integration/routing_spec.rb @@ -26,7 +26,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../legacy_spec_helper' describe 'routing', type: :routing do before do diff --git a/spec_legacy/legacy_spec_helper.rb b/spec_legacy/legacy_spec_helper.rb index 55e3de0f152..eee3d696e4b 100644 --- a/spec_legacy/legacy_spec_helper.rb +++ b/spec_legacy/legacy_spec_helper.rb @@ -86,15 +86,6 @@ RSpec.configure do |config| I18n.locale = 'en' end - if ENV['CI'] - $stderr.puts <<-EOS - WARNING - - Silencing all ActiveSupport::Deprecation message output due to CI=true. - EOS - ActiveSupport::Deprecation.behavior = :silence - end - # colorized rspec output config.color = true config.formatter = 'progress' diff --git a/spec_legacy/support/legacy_assertions.rb b/spec_legacy/support/legacy_assertions.rb index 85342c2ac35..1cb7048a865 100644 --- a/spec_legacy/support/legacy_assertions.rb +++ b/spec_legacy/support/legacy_assertions.rb @@ -262,7 +262,7 @@ module LegacyAssertionsAndHelpers context "should not send www authenticate when header accept auth is session #{http_method} #{url}" do context 'without credentials' do before do - send(http_method, url, parameters, 'HTTP_X_AUTHENTICATION_SCHEME' => 'Session') + send(http_method, url, params: parameters, headers: { 'HTTP_X_AUTHENTICATION_SCHEME' => 'Session' }) end it { should respond_with failure_code } it { should_respond_with_content_type_based_on_url(url) } @@ -291,7 +291,7 @@ module LegacyAssertionsAndHelpers before do @user = FactoryGirl.create(:user, password: 'adminADMIN!', password_confirmation: 'adminADMIN!', admin: true) # Admin so they can access the project - send(http_method, url, parameters, credentials(@user.login, 'adminADMIN!')) + send(http_method, url, params: parameters, headers: credentials(@user.login, 'adminADMIN!')) end it { should respond_with success_code } it { should_respond_with_content_type_based_on_url(url) } @@ -304,7 +304,7 @@ module LegacyAssertionsAndHelpers before do @user = FactoryGirl.create(:user) - send(http_method, url, parameters, credentials(@user.login, 'wrong_password')) + send(http_method, url, params: parameters, headers: credentials(@user.login, 'wrong_password')) end it { should respond_with failure_code } it { should_respond_with_content_type_based_on_url(url) } @@ -315,7 +315,7 @@ module LegacyAssertionsAndHelpers context 'without credentials' do before do - send(http_method, url, parameters) + send(http_method, url, params: parameters) end it { should respond_with failure_code } it { should_respond_with_content_type_based_on_url(url) } @@ -344,7 +344,7 @@ module LegacyAssertionsAndHelpers @user = FactoryGirl.create(:user, admin: true) @token = FactoryGirl.create(:token, user: @user, action: 'api') - send(http_method, url, parameters, credentials(@token.value, 'X')) + send(http_method, url, params: parameters, headers: credentials(@token.value, 'X')) end it { should respond_with success_code } it { should_respond_with_content_type_based_on_url(url) } @@ -359,7 +359,7 @@ module LegacyAssertionsAndHelpers @user = FactoryGirl.create(:user) @token = FactoryGirl.create(:token, user: @user, action: 'feeds') - send(http_method, url, parameters, credentials(@token.value, 'X')) + send(http_method, url, params: parameters, headers: credentials(@token.value, 'X')) end it { should respond_with failure_code } it { should_respond_with_content_type_based_on_url(url) } @@ -393,7 +393,7 @@ module LegacyAssertionsAndHelpers else url + "?key=#{@token.value}" end - send(http_method, request_url, parameters) + send(http_method, request_url, params: parameters) end it { should respond_with success_code } it { should_respond_with_content_type_based_on_url(url) } @@ -413,7 +413,7 @@ module LegacyAssertionsAndHelpers else url + "?key=#{@token.value}" end - send(http_method, request_url, parameters) + send(http_method, request_url, params: parameters) end it { should respond_with failure_code } it { should_respond_with_content_type_based_on_url(url) } @@ -427,7 +427,7 @@ module LegacyAssertionsAndHelpers before do @user = FactoryGirl.create(:user, admin: true) @token = FactoryGirl.create(:token, user: @user, action: 'api') - send(http_method, url, {}, {'X-OpenProject-API-Key' => @token.value.to_s}) + send(http_method, url, params: {}, headers: { 'X-OpenProject-API-Key' => @token.value.to_s }) end it { should respond_with success_code } it { should_respond_with_content_type_based_on_url(url) } diff --git a/spec_legacy/unit/lib/redmine/hook_spec.rb b/spec_legacy/unit/lib/redmine/hook_spec.rb index bdb8e9bdf75..10a338b308d 100644 --- a/spec_legacy/unit/lib/redmine/hook_spec.rb +++ b/spec_legacy/unit/lib/redmine/hook_spec.rb @@ -26,7 +26,7 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' +require_relative '../../../legacy_spec_helper' describe 'Redmine::Hook::Manager' do # FIXME: naming (RSpec-port) fixtures :all diff --git a/spec_legacy/unit/search_spec.rb b/spec_legacy/unit/search_spec.rb index 904c7f5bda4..2fe67fad41c 100644 --- a/spec_legacy/unit/search_spec.rb +++ b/spec_legacy/unit/search_spec.rb @@ -128,7 +128,7 @@ describe 'Search' do # FIXME: naming (RSpec-port) it 'should search_issue_with_multiple_hits_in_journals' do i = WorkPackage.find(1) - Journal.delete_all journable_id: i.id + Journal.where(journable_id: i.id).delete_all i.add_journal User.current, 'Journal notes' i.save! i.add_journal User.current, 'Some notes with Redmine links: #2, r2.' diff --git a/spec_legacy/unit/status_spec.rb b/spec_legacy/unit/status_spec.rb index 8cf3226152a..223072f5d3b 100644 --- a/spec_legacy/unit/status_spec.rb +++ b/spec_legacy/unit/status_spec.rb @@ -1,4 +1,5 @@ #-- encoding: UTF-8 + #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2017 the OpenProject Foundation (OPF) @@ -26,7 +27,8 @@ # # See doc/COPYRIGHT.rdoc for more details. #++ -require 'legacy_spec_helper' + +require_relative '../legacy_spec_helper' describe Status, type: :model do fixtures :all diff --git a/spec_legacy/unit/wiki_page_spec.rb b/spec_legacy/unit/wiki_page_spec.rb index 1c2c90c4576..fac318ce38b 100644 --- a/spec_legacy/unit/wiki_page_spec.rb +++ b/spec_legacy/unit/wiki_page_spec.rb @@ -114,7 +114,7 @@ describe WikiPage, type: :model do # make sure that page content and its history are deleted assert WikiContent.where(page_id: 1).empty? content_ids.each do |wiki_content_id| - assert Journal.where(journable_type: WikiContent, + assert Journal.where(journable_type: 'WikiContent', journable_id: wiki_content_id) end end