Merge pull request #3780 from consul/bang_save

Apply `Rails/SaveBang` rubocop rule
This commit is contained in:
Javier Martín
2019-10-23 15:40:03 +02:00
committed by GitHub
179 changed files with 728 additions and 707 deletions

View File

@@ -51,9 +51,6 @@ Rails/OutputSafety:
Rails/ReversibleMigration:
Enabled: true
Rails/SaveBang:
Enabled: true
Rails/SkipsModelValidations:
Enabled: true

View File

@@ -181,6 +181,10 @@ Rails/SafeNavigation:
Enabled: true
ConvertTry: true
Rails/SaveBang:
Enabled: true
Severity: refactor
Rails/TimeZone:
Enabled: true

View File

@@ -41,7 +41,7 @@ class Admin::AdminNotificationsController < Admin::BaseController
def destroy
@admin_notification = AdminNotification.find(params[:id])
@admin_notification.destroy
@admin_notification.destroy!
notice = t("admin.admin_notifications.delete_success")
redirect_to admin_admin_notifications_path, notice: notice

View File

@@ -14,7 +14,7 @@ class Admin::AdministratorsController < Admin::BaseController
def create
@administrator.user_id = params[:user_id]
@administrator.save
@administrator.save!
redirect_to admin_administrators_path
end

View File

@@ -31,7 +31,7 @@ class Admin::BannersController < Admin::BaseController
end
def destroy
@banner.destroy
@banner.destroy!
redirect_to admin_banners_path
end

View File

@@ -38,7 +38,7 @@ class Admin::BudgetGroupsController < Admin::BaseController
if @group.headings.any?
redirect_to groups_index, alert: t("admin.budget_groups.destroy.unable_notice")
else
@group.destroy
@group.destroy!
redirect_to groups_index, notice: t("admin.budget_groups.destroy.success_notice")
end
end

View File

@@ -37,7 +37,7 @@ class Admin::BudgetHeadingsController < Admin::BaseController
def destroy
if @heading.can_be_deleted?
@heading.destroy
@heading.destroy!
redirect_to headings_index, notice: t("admin.budget_headings.destroy.success_notice")
else
redirect_to headings_index, alert: t("admin.budget_headings.destroy.unable_notice")

View File

@@ -62,7 +62,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
def toggle_selection
@investment.toggle :selected
@investment.save
@investment.save!
load_investments
end
@@ -127,7 +127,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
def load_ballot
query = Budget::Ballot.where(user: current_user, budget: @budget)
@ballot = @budget.balloting? ? query.first_or_create : query.first_or_initialize
@ballot = @budget.balloting? ? query.first_or_create! : query.first_or_initialize
end
def parse_valuation_filters

View File

@@ -66,7 +66,7 @@ class Admin::BudgetsController < Admin::BaseController
elsif @budget.poll.present?
redirect_to admin_budgets_path, alert: t("admin.budgets.destroy.unable_notice_polls")
else
@budget.destroy
@budget.destroy!
redirect_to admin_budgets_path, notice: t("admin.budgets.destroy.success_notice")
end
end

View File

@@ -15,7 +15,7 @@ class Admin::Dashboard::AdministratorTasksController < Admin::Dashboard::BaseCon
def update
authorize! :update, administrator_task
administrator_task.update(user: current_user, executed_at: Time.current)
administrator_task.update!(user: current_user, executed_at: Time.current)
redirect_to admin_dashboard_administrator_tasks_path,
{ flash: { notice: t("admin.dashboard.administrator_tasks.update.success") }}
end

View File

@@ -34,7 +34,7 @@ class Admin::GeozonesController < Admin::BaseController
def destroy
if @geozone.safe_to_destroy?
@geozone.destroy
@geozone.destroy!
redirect_to admin_geozones_path, notice: t("admin.geozones.delete.success")
else
redirect_to admin_geozones_path, flash: { error: t("admin.geozones.delete.error") }

View File

@@ -32,7 +32,7 @@ class Admin::Legislation::DraftVersionsController < Admin::Legislation::BaseCont
end
def destroy
@draft_version.destroy
@draft_version.destroy!
notice = t("admin.legislation.draft_versions.destroy.notice")
redirect_to admin_legislation_process_draft_versions_path, notice: notice
end

View File

@@ -46,7 +46,7 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
end
def destroy
@process.destroy
@process.destroy!
notice = t("admin.legislation.processes.destroy.notice")
redirect_to admin_legislation_processes_path, notice: notice
end
@@ -93,7 +93,7 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
def set_tag_list
@process.set_tag_list_on(:customs, process_params[:custom_list])
@process.save
@process.save!
end
def resource

View File

@@ -33,7 +33,7 @@ class Admin::Legislation::QuestionsController < Admin::Legislation::BaseControll
end
def destroy
@question.destroy
@question.destroy!
notice = t("admin.legislation.questions.destroy.notice")
redirect_to admin_legislation_process_questions_path, notice: notice
end

View File

@@ -26,7 +26,7 @@ class Admin::LocalCensusRecordsController < Admin::BaseController
end
def destroy
@local_census_record.destroy
@local_census_record.destroy!
redirect_to admin_local_census_records_path,
notice: t("admin.local_census_records.destroy.notice")
end

View File

@@ -14,13 +14,13 @@ class Admin::ManagersController < Admin::BaseController
def create
@manager.user_id = params[:user_id]
@manager.save
@manager.save!
redirect_to admin_managers_path
end
def destroy
@manager.destroy
@manager.destroy!
redirect_to admin_managers_path
end
end

View File

@@ -34,7 +34,7 @@ class Admin::MilestoneStatusesController < Admin::BaseController
end
def destroy
@status.destroy
@status.destroy!
redirect_to admin_milestone_statuses_path,
notice: t("admin.statuses.delete.notice")
end

View File

@@ -14,13 +14,13 @@ class Admin::ModeratorsController < Admin::BaseController
def create
@moderator.user_id = params[:user_id]
@moderator.save
@moderator.save!
redirect_to admin_moderators_path
end
def destroy
@moderator.destroy
@moderator.destroy!
redirect_to admin_moderators_path
end
end

View File

@@ -39,7 +39,7 @@ class Admin::NewslettersController < Admin::BaseController
def destroy
@newsletter = Newsletter.find(params[:id])
@newsletter.destroy
@newsletter.destroy!
redirect_to admin_newsletters_path, notice: t("admin.newsletters.delete_success")
end
@@ -49,7 +49,7 @@ class Admin::NewslettersController < Admin::BaseController
if @newsletter.valid?
@newsletter.delay.deliver
@newsletter.update(sent_at: Time.current)
@newsletter.update!(sent_at: Time.current)
flash[:notice] = t("admin.newsletters.send_success")
else
flash[:error] = t("admin.segment_recipient.invalid_recipients_segment")

View File

@@ -14,7 +14,7 @@ class Admin::OfficialsController < Admin::BaseController
def update
@user = User.find(params[:id])
@user.update(user_params)
@user.update!(user_params)
redirect_to admin_officials_path, notice: t("admin.officials.flash.official_updated")
end

View File

@@ -29,7 +29,7 @@ class Admin::Poll::BoothAssignmentsController < Admin::Poll::BaseController
@booth_assignment = ::Poll::BoothAssignment.new(poll: @poll,
booth: @booth)
@booth_assignment.save
@booth_assignment.save!
respond_to do |format|
format.js { render layout: false }
@@ -41,7 +41,7 @@ class Admin::Poll::BoothAssignmentsController < Admin::Poll::BaseController
@booth = Poll::Booth.find(booth_assignment_params[:booth_id])
@booth_assignment = ::Poll::BoothAssignment.find(params[:id])
@booth_assignment.destroy
@booth_assignment.destroy!
respond_to do |format|
format.js { render layout: false }

View File

@@ -20,13 +20,13 @@ class Admin::Poll::OfficersController < Admin::Poll::BaseController
def create
@officer.user_id = params[:user_id]
@officer.save
@officer.save!
redirect_to admin_officers_path
end
def destroy
@officer.destroy
@officer.destroy!
redirect_to admin_officers_path
end

View File

@@ -63,7 +63,7 @@ class Admin::Poll::PollsController < Admin::Poll::BaseController
if ::Poll::Voter.where(poll: @poll).any?
redirect_to admin_poll_path(@poll), alert: t("admin.polls.destroy.unable_notice")
else
@poll.destroy
@poll.destroy!
redirect_to admin_polls_path, notice: t("admin.polls.destroy.success_notice")
end

View File

@@ -22,7 +22,7 @@ class Admin::Poll::Questions::Answers::ImagesController < Admin::Poll::BaseContr
def destroy
@image = ::Image.find(params[:id])
@image.destroy
@image.destroy!
respond_to do |format|
format.js { render layout: false }

View File

@@ -30,7 +30,7 @@ class Admin::Poll::ShiftsController < Admin::Poll::BaseController
alert = t("admin.poll_shifts.flash.unable_to_destroy")
redirect_to new_admin_booth_shift_path(@booth), alert: alert
else
@shift.destroy
@shift.destroy!
notice = t("admin.poll_shifts.flash.destroy")
redirect_to new_admin_booth_shift_path(@booth), notice: notice
end

View File

@@ -22,7 +22,7 @@ class Admin::SettingsController < Admin::BaseController
def update
@setting = Setting.find(params[:id])
@setting.update(settings_params)
@setting.update!(settings_params)
redirect_to request_referer, notice: t("admin.settings.flash.updated")
end
@@ -39,7 +39,7 @@ class Admin::SettingsController < Admin::BaseController
mime_type_values = content_type_params.keys.map do |content_type|
Setting.mime_types[group][content_type]
end
setting.update value: mime_type_values.join(" ")
setting.update! value: mime_type_values.join(" ")
redirect_to admin_settings_path, notice: t("admin.settings.flash.updated")
end

View File

@@ -44,7 +44,7 @@ class Admin::SiteCustomization::ContentBlocksController < Admin::SiteCustomizati
if is_heading_content_block?(params[:site_customization_content_block][:name])
heading_content_block = new_heading_content_block
if heading_content_block.save
@content_block.destroy
@content_block.destroy!
notice = t("admin.site_customization.content_blocks.create.notice")
redirect_to admin_site_customization_content_blocks_path, notice: notice
else
@@ -61,13 +61,13 @@ class Admin::SiteCustomization::ContentBlocksController < Admin::SiteCustomizati
end
def destroy
@content_block.destroy
@content_block.destroy!
notice = t("admin.site_customization.content_blocks.destroy.notice")
redirect_to admin_site_customization_content_blocks_path, notice: notice
end
def delete_heading_content_block
Budget::ContentBlock.find(params[:id]).destroy
Budget::ContentBlock.find(params[:id]).destroy!
notice = t("admin.site_customization.content_blocks.destroy.notice")
redirect_to admin_site_customization_content_blocks_path, notice: notice
end
@@ -101,7 +101,7 @@ class Admin::SiteCustomization::ContentBlocksController < Admin::SiteCustomizati
@content_block.locale = params[:locale]
@content_block.body = params[:body]
if @content_block.save
heading_content_block.destroy
heading_content_block.destroy!
notice = t("admin.site_customization.content_blocks.update.notice")
redirect_to admin_site_customization_content_blocks_path, notice: notice
else

View File

@@ -21,7 +21,7 @@ class Admin::SiteCustomization::DocumentsController < Admin::SiteCustomization::
def destroy
@document = Document.find(params[:id])
@document.destroy
@document.destroy!
notice = t("admin.documents.destroy.success_notice")
redirect_to admin_site_customization_documents_path, notice: notice

View File

@@ -17,9 +17,9 @@ class Admin::SiteCustomization::InformationTextsController < Admin::SiteCustomiz
if value == t(content[:id], locale: locale) || value.match(/translation missing/)
next
else
text = I18nContent.find_or_create_by(key: content[:id])
text = I18nContent.find_or_create_by!(key: content[:id])
Globalize.locale = locale
text.update(value: value)
text.update!(value: value)
end
end
end

View File

@@ -27,7 +27,7 @@ class Admin::SiteCustomization::PagesController < Admin::SiteCustomization::Base
end
def destroy
@page.destroy
@page.destroy!
notice = t("admin.site_customization.pages.destroy.notice")
redirect_to admin_site_customization_pages_path, notice: notice
end

View File

@@ -9,12 +9,12 @@ class Admin::TagsController < Admin::BaseController
end
def create
Tag.category.create(tag_params)
Tag.category.create!(tag_params)
redirect_to admin_tags_path
end
def destroy
@tag.destroy
@tag.destroy!
redirect_to admin_tags_path
end

View File

@@ -20,7 +20,7 @@ class Admin::TrackersController < Admin::BaseController
def create
@tracker = Tracker.new(tracker_params)
@tracker.save
@tracker.save!
redirect_to admin_trackers_path
end
@@ -40,7 +40,7 @@ class Admin::TrackersController < Admin::BaseController
end
def destroy
@tracker.destroy
@tracker.destroy!
redirect_to admin_trackers_path
end

View File

@@ -38,7 +38,7 @@ class Admin::ValuatorGroupsController < Admin::BaseController
def destroy
@group = ValuatorGroup.find(params[:id])
@group.destroy
@group.destroy!
notice = t("flash.actions.destroy.valuator_group")
redirect_to [:admin, :valuator_groups], notice: notice
end

View File

@@ -18,7 +18,7 @@ class Admin::ValuatorsController < Admin::BaseController
def create
@valuator = Valuator.new(valuator_params)
@valuator.save
@valuator.save!
redirect_to admin_valuators_path
end
@@ -39,7 +39,7 @@ class Admin::ValuatorsController < Admin::BaseController
end
def destroy
@valuator.destroy
@valuator.destroy!
redirect_to admin_valuators_path
end

View File

@@ -34,7 +34,7 @@ class Admin::Widget::CardsController < Admin::BaseController
def destroy
@card = ::Widget::Card.find(params[:id])
@card.destroy
@card.destroy!
redirect_to_customization_page_cards_or_homepage
end

View File

@@ -2,7 +2,7 @@ class Admin::Widget::FeedsController < Admin::BaseController
def update
@feed = ::Widget::Feed.find(params[:id])
@feed.update(feed_params)
@feed.update!(feed_params)
head :ok
end

View File

@@ -26,7 +26,7 @@ module Budgets
load_heading
load_map
@line.destroy
@line.destroy!
load_investments
end
@@ -41,7 +41,7 @@ module Budgets
end
def load_ballot
@ballot = Budget::Ballot.where(user: current_user, budget: @budget).first_or_create
@ballot = Budget::Ballot.where(user: current_user, budget: @budget).first_or_create!
end
def load_investment

View File

@@ -20,7 +20,7 @@ module Budgets
def load_ballot
query = Budget::Ballot.where(user: current_user, budget: @budget)
@ballot = @budget.balloting? ? query.first_or_create : query.first_or_initialize
@ballot = @budget.balloting? ? query.first_or_create! : query.first_or_initialize
end
def store_referer

View File

@@ -86,7 +86,7 @@ module Budgets
end
def destroy
@investment.destroy
@investment.destroy!
redirect_to user_path(current_user, filter: "budget_investments"), notice: t("flash.actions.destroy.budget_investment")
end
@@ -143,7 +143,7 @@ module Budgets
def load_ballot
query = Budget::Ballot.where(user: current_user, budget: @budget)
@ballot = @budget.balloting? ? query.first_or_create : query.first_or_initialize
@ballot = @budget.balloting? ? query.first_or_create! : query.first_or_initialize
end
def load_heading

View File

@@ -17,7 +17,7 @@ class Dashboard::ActionsController < Dashboard::BaseController
@dashboard_executed_action = Dashboard::ExecutedAction.new(source_params)
if @dashboard_executed_action.save
Dashboard::AdministratorTask.create(source: @dashboard_executed_action)
Dashboard::AdministratorTask.create!(source: @dashboard_executed_action)
redirect_to progress_proposal_dashboard_path(proposal.to_param),
{ flash: { info: t("dashboard.create_request.success") }}
@@ -38,7 +38,7 @@ class Dashboard::ActionsController < Dashboard::BaseController
def unexecute
authorize! :dashboard, proposal
Dashboard::ExecutedAction.where(proposal: proposal, action: dashboard_action).first.destroy
Dashboard::ExecutedAction.where(proposal: proposal, action: dashboard_action).first.destroy!
redirect_to request.referer
end

View File

@@ -42,7 +42,7 @@ class Dashboard::PollsController < Dashboard::BaseController
if ::Poll::Voter.where(poll: poll).any?
redirect_to proposal_dashboard_polls_path(proposal), alert: t("dashboard.polls.poll.unable_notice")
else
poll.destroy
poll.destroy!
redirect_to proposal_dashboard_polls_path(proposal), notice: t("dashboard.polls.poll.success_notice")
end

View File

@@ -3,14 +3,14 @@ class FollowsController < ApplicationController
load_and_authorize_resource
def create
@follow = Follow.create(user: current_user, followable: find_followable)
@follow = Follow.create!(user: current_user, followable: find_followable)
flash.now[:notice] = t("shared.followable.#{followable_translation_key(@follow.followable)}.create.notice")
render :refresh_follow_button
end
def destroy
@follow = Follow.find(params[:id])
@follow.destroy
@follow.destroy!
flash.now[:notice] = t("shared.followable.#{followable_translation_key(@follow.followable)}.destroy.notice")
render :refresh_follow_button
end

View File

@@ -11,7 +11,7 @@ class Legislation::AnswersController < Legislation::BaseController
def create
if @process.debate_phase.open?
@answer.user = current_user
@answer.save
@answer.save!
track_event
respond_to do |format|
format.js

View File

@@ -7,7 +7,7 @@ class Polls::AnswersController < ApplicationController
def create
@question = Poll::Question.find_by(id: params[:id])
if @question.votation_type.open? && !check_question_answer_exist
@question.question_answers.create(
@question.question_answers.create!(
title: params[:answer],
given_order: @question.question_answers.maximum(:given_order).to_i + 1,
hidden: false

View File

@@ -7,7 +7,7 @@ class RelatedContentsController < ApplicationController
if relationable_object && related_object
if relationable_object.url != related_object.url
RelatedContent.create(parent_relationable: @relationable, child_relationable: @related, author: current_user)
RelatedContent.create!(parent_relationable: @relationable, child_relationable: @related, author: current_user)
flash[:success] = t("related_content.success")
else

View File

@@ -6,7 +6,7 @@ class RemoteTranslationsController < ApplicationController
def create
@remote_translations.each do |remote_translation|
RemoteTranslation.create(remote_translation) unless translations_enqueued?(remote_translation)
RemoteTranslation.create!(remote_translation) unless translations_enqueued?(remote_translation)
end
redirect_to request.referer, notice: t("remote_translations.create.enqueue_remote_translation")
end

View File

@@ -40,7 +40,7 @@ class TopicsController < ApplicationController
end
def destroy
@topic.destroy
@topic.destroy!
redirect_to community_path(@community), notice: I18n.t("flash.actions.destroy.topic")
end

View File

@@ -35,7 +35,7 @@ class Tracking::MilestonesController < Tracking::BaseController
end
def destroy
@milestone.destroy
@milestone.destroy!
redirect_to milestoneable_path, notice: t("tracking.milestones.delete.notice")
end

View File

@@ -33,7 +33,7 @@ class Tracking::ProgressBarsController < Tracking::BaseController
end
def destroy
@progress_bar.destroy
@progress_bar.destroy!
redirect_to progress_bars_index, notice: t("tracking.progress_bars.delete.notice")
end

View File

@@ -9,7 +9,7 @@ class Users::ConfirmationsController < Devise::ConfirmationsController
resource.assign_attributes(resource_params)
if resource.valid? # password is set correctly
resource.save
resource.save!
set_official_position if resource.has_official_email?
resource.confirm
set_flash_message(:notice, :confirmed) if is_flashing_format?

View File

@@ -31,7 +31,7 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
@user = current_user || identity.user || User.first_or_initialize_for_oauth(auth)
if save_user
identity.update(user: @user)
identity.update!(user: @user)
sign_in_and_redirect @user, event: :authentication
set_flash_message(:notice, :success, kind: provider.to_s.capitalize) if is_navigational_format?
else

View File

@@ -6,7 +6,7 @@ class Verification::EmailController < ApplicationController
def show
if Verification::Email.find(current_user, params[:email_verification_token])
current_user.update(verified_at: Time.current)
current_user.update!(verified_at: Time.current)
redirect_to account_path, notice: t("verification.email.show.flash.success")
else
redirect_to verified_user_path, alert: t("verification.email.show.alert.failure")

View File

@@ -15,7 +15,7 @@ class Verification::LetterController < ApplicationController
def create
@letter = Verification::Letter.new(user: current_user)
@letter.save
@letter.save!
redirect_to letter_path
end
@@ -29,7 +29,7 @@ class Verification::LetterController < ApplicationController
def update
@letter = Verification::Letter.new(letter_params.merge(user: current_user, verify: true))
if @letter.valid?
current_user.update(verified_at: Time.current)
current_user.update!(verified_at: Time.current)
redirect_to account_path, notice: t("verification.letter.update.flash.success")
else
Lock.increase_tries(@letter.user) if @letter.user

View File

@@ -27,7 +27,7 @@ class Verification::SmsController < ApplicationController
def update
@sms = Verification::Sms.new(sms_params.merge(user: current_user))
if @sms.verified?
current_user.update(confirmed_phone: current_user.unconfirmed_phone)
current_user.update!(confirmed_phone: current_user.unconfirmed_phone)
ahoy.track(:level_2_user, user_id: current_user.id) rescue nil
if VerifiedUser.phone?(current_user)

View File

@@ -15,7 +15,7 @@ class Activity < ApplicationRecord
scope :for_render, -> { includes(user: [:moderator, :administrator]).includes(:actionable) }
def self.log(user, action, actionable)
create(user: user, action: action.to_s, actionable: actionable)
create!(user: user, action: action.to_s, actionable: actionable)
end
def self.on(actionable)

View File

@@ -30,7 +30,7 @@ class AdminNotification < ApplicationRecord
def deliver
list_of_recipients.each { |user| Notification.add(user, self) }
self.update(sent_at: Time.current, recipients_count: list_of_recipients.count)
update!(sent_at: Time.current, recipients_count: list_of_recipients.count)
end
private

View File

@@ -256,7 +256,7 @@ class Budget
def send_unfeasible_email
Mailer.budget_investment_unfeasible(self).deliver_later
update(unfeasible_email_sent_at: Time.current)
update!(unfeasible_email_sent_at: Time.current)
end
def reason_for_not_being_selectable_by(user)

View File

@@ -42,7 +42,7 @@ class Budget
def set_winner
@money_spent += @current_investment.price
@current_investment.update(winner: true)
@current_investment.update!(winner: true)
end
def winners

View File

@@ -7,7 +7,7 @@ module Communitable
end
def associate_community
community = Community.create
community = Community.create!
self.community_id = community.id
end

View File

@@ -7,10 +7,10 @@ class DownloadSetting < ApplicationRecord
name_field: field_name,
config: config)
if download_setting.nil?
download_setting = DownloadSetting.create(downloadable: false,
name_model: model.name,
name_field: field_name,
config: config)
download_setting = DownloadSetting.create!(downloadable: false,
name_model: model.name,
name_field: field_name,
config: config)
end
download_setting
end

View File

@@ -12,7 +12,7 @@ class Flag < ApplicationRecord
def self.flag(user, flaggable)
return false if flagged?(user, flaggable)
create(user: user, flaggable: flaggable)
create!(user: user, flaggable: flaggable)
end
def self.unflag(user, flaggable)

View File

@@ -5,6 +5,6 @@ class Identity < ApplicationRecord
validates :uid, presence: true, uniqueness: { scope: :provider }
def self.first_or_create_from_oauth(auth)
where(uid: auth.uid, provider: auth.provider).first_or_create
where(uid: auth.uid, provider: auth.provider).first_or_create!
end
end

View File

@@ -33,6 +33,10 @@ class LocalCensusRecords::Import
true
end
def save!
validate! && save
end
private
def process_row(row)
@@ -41,7 +45,7 @@ class LocalCensusRecords::Import
if local_census_record.invalid?
invalid_records << local_census_record
else
local_census_record.save
local_census_record.save!
created_records << local_census_record
end
end

View File

@@ -21,7 +21,7 @@ class Lock < ApplicationRecord
end
def self.increase_tries(user)
Lock.find_or_create_by(user: user).increment!(:tries).save
find_or_create_by!(user: user).increment!(:tries).save!
end
def self.max_tries

View File

@@ -29,7 +29,7 @@ class Officing::Residence
if user_exists?
self.user = find_user_by_document
user.update(verified_at: Time.current)
user.update!(verified_at: Time.current)
else
user_params = {
document_number: document_number,
@@ -48,6 +48,10 @@ class Officing::Residence
end
end
def save!
validate! && save
end
def store_failed_census_call
FailedCensusCall.create(
user: user,

View File

@@ -27,7 +27,7 @@ class Poll::BallotSheet < ApplicationRecord
def create_ballots(investment_ids, index)
poll_ballot = Poll::Ballot.where(ballot_sheet: self,
data: investment_ids,
external_id: index).first_or_create
external_id: index).first_or_create!
create_ballot(poll_ballot)
poll_ballot
end
@@ -36,7 +36,7 @@ class Poll::BallotSheet < ApplicationRecord
Budget::Ballot.where(physical: true,
user: nil,
poll_ballot: poll_ballot,
budget: poll.budget).first_or_create
budget: poll.budget).first_or_create!
end
end

View File

@@ -73,12 +73,12 @@ class Poll::Question::Answer < ApplicationRecord
answers = question.question_answers.visibles
.map { |a| count_positive_negative(a, true) - count_positive_negative(a, false) }
is_most_voted = answers.none? { |a| a > total_votes_positive_negative }
update(most_voted: is_most_voted)
update!(most_voted: is_most_voted)
when "prioritized"
answers = question.question_answers.visibles
.map { |a| Poll::Answer.where(question_id: a.question, answer: a.title).sum(:value) }
is_most_voted = answers.none? { |a| a > total_votes_prioritized }
update(most_voted: is_most_voted)
update!(most_voted: is_most_voted)
else
for_only_votes
end
@@ -95,7 +95,7 @@ class Poll::Question::Answer < ApplicationRecord
answers = question.question_answers.visibles
.map { |a| Poll::Answer.where(question_id: a.question, answer: a.title).count }
is_most_voted = answers.none? { |a| a > total_votes }
update(most_voted: is_most_voted)
update!(most_voted: is_most_voted)
end
end

View File

@@ -96,7 +96,7 @@ class Proposal < ApplicationRecord
end
def publish
update(published_at: Time.current)
update!(published_at: Time.current)
send_new_actions_notification_on_published
end

View File

@@ -37,7 +37,7 @@ class Signature < ApplicationRecord
def assign_signature_to_vote
vote = Vote.where(votable: signable, voter: user).first
vote&.update(signature: self)
vote&.update!(signature: self)
end
def user_exists?

View File

@@ -28,10 +28,10 @@ class SignatureSheet < ApplicationRecord
signature = signatures.where(document_number: document_number,
date_of_birth: date_of_birth,
postal_code: postal_code).first_or_create
postal_code: postal_code).first_or_create!
signature.verify
end
update(processed: true)
update!(processed: true)
end
def parsed_required_fields_to_verify_groups

View File

@@ -181,11 +181,11 @@ class User < ApplicationRecord
def add_official_position!(position, level)
return if position.blank? || level.blank?
update official_position: position, official_level: level.to_i
update! official_position: position, official_level: level.to_i
end
def remove_official_position!
update official_position: nil, official_level: 0
update! official_position: nil, official_level: 0
end
def has_official_email?
@@ -215,7 +215,7 @@ class User < ApplicationRecord
end
def erase(erase_reason = nil)
update(
update!(
erased_at: Time.current,
erase_reason: erase_reason,
username: nil,
@@ -241,7 +241,7 @@ class User < ApplicationRecord
.where(document_type: document_type).first
if erased_user.present?
take_votes_from(erased_user)
erased_user.update(document_number: nil, document_type: nil)
erased_user.update!(document_number: nil, document_type: nil)
end
end
@@ -251,11 +251,11 @@ class User < ApplicationRecord
Budget::Ballot.where(user_id: other_user.id).update_all(user_id: id)
Vote.where("voter_id = ? AND voter_type = ?", other_user.id, "User").update_all(voter_id: id)
data_log = "id: #{other_user.id} - #{Time.current.strftime("%Y-%m-%d %H:%M:%S")}"
update(former_users_data_log: "#{former_users_data_log} | #{data_log}")
update!(former_users_data_log: "#{former_users_data_log} | #{data_log}")
end
def locked?
Lock.find_or_create_by(user: self).locked?
Lock.find_or_create_by!(user: self).locked?
end
def self.search(term)
@@ -315,11 +315,11 @@ class User < ApplicationRecord
def save_requiring_finish_signup
begin
self.registering_with_oauth = true
save(validate: false)
save!(validate: false)
# Devise puts unique constraints for the email the db, so we must detect & handle that
rescue ActiveRecord::RecordNotUnique
self.email = nil
save(validate: false)
save!(validate: false)
end
true
end

View File

@@ -15,7 +15,7 @@ class Verification::Email
return false unless valid?
generate_token
user.update(email_verification_token: @plain_token)
user.update!(email_verification_token: @plain_token)
end
def user

View File

@@ -16,6 +16,10 @@ class Verification::Letter
letter_requested!
end
def save!
validate! && save
end
def letter_requested!
user.update(letter_requested_at: Time.current, letter_verification_code: generate_verification_code)
end

View File

@@ -25,16 +25,20 @@ class Verification::Management::Email
plain_token, encrypted_token = Devise.token_generator.generate(User, :email_verification_token)
user.update(document_type: document_type,
document_number: document_number,
residence_verified_at: Time.current,
level_two_verified_at: Time.current,
email_verification_token: plain_token)
user.update!(document_type: document_type,
document_number: document_number,
residence_verified_at: Time.current,
level_two_verified_at: Time.current,
email_verification_token: plain_token)
Mailer.email_verification(user, email, encrypted_token, document_type, document_number).deliver_later
true
end
def save!
validate! && save
end
private
def validate_user

View File

@@ -37,6 +37,10 @@ class Verification::Residence
residence_verified_at: Time.current)
end
def save!
validate! && save
end
def allowed_age
return if errors[:date_of_birth].any? || Age.in_years(date_of_birth) >= User.minimum_required_age
errors.add(:date_of_birth, I18n.t("verification.residence.new.error_not_allowed_age"))

View File

@@ -81,9 +81,9 @@ class VotationType < ApplicationRecord
result = votes.by_author(user.id).find_by(answer: answer)
if result.nil?
if check_max_votes(user, votes)
result = votes.create(author: user,
answer: answer,
positive: options[:positive])
result = votes.create!(author: user,
answer: answer,
positive: options[:positive])
end
else
!result.update(positive: options[:positive])
@@ -91,7 +91,7 @@ class VotationType < ApplicationRecord
when "answer_couples_closed", "answer_couples_open"
if check_max_votes(user, votes)
result = votes.create(
result = votes.create!(
answer: answer,
author: user,
positive: true,
@@ -114,7 +114,7 @@ class VotationType < ApplicationRecord
return if questionable.question_answers.where(title: answer).any?
questionable.question_answers
.create(
.create!(
title: answer,
given_order: questionable.question_answers.maximum(:given_order).to_i + 1,
hidden: hidden
@@ -140,7 +140,7 @@ class VotationType < ApplicationRecord
def self.create_by_type(questionable, params)
votation_type = build_by_type(questionable, params)
votation_type.save
votation_type.save!
end
def update_priorized_values(user)

View File

@@ -13,7 +13,7 @@ class Widget::Feed < ApplicationRecord
def self.active
KINDS.collect do |kind|
feed = find_or_create_by(kind: kind)
feed = find_or_create_by!(kind: kind)
feed if feed.active?
end.compact
end

View File

@@ -0,0 +1 @@
ActiveSupport.halt_callback_chains_on_return_false = false

View File

@@ -20,9 +20,9 @@ section "Creating banners" do
end
section "Creating web sections" do
WebSection.create(name: "homepage")
WebSection.create(name: "debates")
WebSection.create(name: "proposals")
WebSection.create(name: "budgets")
WebSection.create(name: "help_page")
WebSection.create!(name: "homepage")
WebSection.create!(name: "debates")
WebSection.create!(name: "proposals")
WebSection.create!(name: "budgets")
WebSection.create!(name: "help_page")
end

View File

@@ -21,18 +21,18 @@ def add_image_to(imageable)
attachment: INVESTMENT_IMAGE_FILES.sample,
user: imageable.author
})
imageable.save
imageable.save!
end
section "Creating Budgets" do
Budget.create(
Budget.create!(
name_en: "#{I18n.t("seeds.budgets.budget", locale: :en)} #{Date.current.year - 1}",
name_es: "#{I18n.t("seeds.budgets.budget", locale: :es)} #{Date.current.year - 1}",
currency_symbol: I18n.t("seeds.budgets.currency"),
phase: "finished"
)
Budget.create(
Budget.create!(
name_en: "#{I18n.t("seeds.budgets.budget", locale: :en)} #{Date.current.year}",
name_es: "#{I18n.t("seeds.budgets.budget", locale: :es)} #{Date.current.year}",
currency_symbol: I18n.t("seeds.budgets.currency"),

View File

@@ -1,24 +1,24 @@
section "Creating Geozones" do
Geozone.create(name: I18n.t("seeds.geozones.north_district"),
external_code: "001", census_code: "01",
html_map_coordinates: "30,139,45,153,77,148,107,165,138,201,146,218,186,198,216,"\
"196,233,203,240,215,283,194,329,185,377,184,388,165,369,126,333,113,334,84,320,"\
"66,286,73,258,65,265,57,249,47,207,58,159,84,108,85,72,101,51,114")
Geozone.create(name: I18n.t("seeds.geozones.west_district"),
external_code: "002", census_code: "02",
html_map_coordinates: "42,153,31,176,24,202,20,221,44,235,59,249,55,320,30,354,"\
"31,372,52,396,64,432,89,453,116,432,149,419,162,412,165,377,172,357,189,352,228,"\
"327,246,313,262,297,234,291,210,284,193,284,176,294,158,303,154,310,146,289,140,"\
"268,138,246,135,236,139,222,151,214,136,197,120,179,99,159,85,149,65,149,56,149")
Geozone.create(name: I18n.t("seeds.geozones.east_district"),
external_code: "003", census_code: "03",
html_map_coordinates: "175,353,162,378,161,407,153,416,167,432,184,447,225,426,"\
"250,409,283,390,298,369,344,363,351,334,356,296,361,267,376,245,378,185,327,188,"\
"281,195,239,216,245,221,245,232,261,244,281,238,300,242,304,251,285,262,278,277,"\
"267,294,249,312,219,333,198,346,184,353")
Geozone.create(name: I18n.t("seeds.geozones.central_district"),
external_code: "004", census_code: "04",
html_map_coordinates: "152,308,137,258,133,235,147,216,152,214,186,194,210,196,"\
"228,202,240,216,241,232,263,243,293,241,301,245,302,254,286,265,274,278,267,296,"\
"243,293,226,289,209,285,195,283,177,297")
Geozone.create!(name: I18n.t("seeds.geozones.north_district"),
external_code: "001", census_code: "01",
html_map_coordinates: "30,139,45,153,77,148,107,165,138,201,146,218,186,198,216,"\
"196,233,203,240,215,283,194,329,185,377,184,388,165,369,126,333,113,334,84,320,"\
"66,286,73,258,65,265,57,249,47,207,58,159,84,108,85,72,101,51,114")
Geozone.create!(name: I18n.t("seeds.geozones.west_district"),
external_code: "002", census_code: "02",
html_map_coordinates: "42,153,31,176,24,202,20,221,44,235,59,249,55,320,30,354,"\
"31,372,52,396,64,432,89,453,116,432,149,419,162,412,165,377,172,357,189,352,228,"\
"327,246,313,262,297,234,291,210,284,193,284,176,294,158,303,154,310,146,289,140,"\
"268,138,246,135,236,139,222,151,214,136,197,120,179,99,159,85,149,65,149,56,149")
Geozone.create!(name: I18n.t("seeds.geozones.east_district"),
external_code: "003", census_code: "03",
html_map_coordinates: "175,353,162,378,161,407,153,416,167,432,184,447,225,426,"\
"250,409,283,390,298,369,344,363,351,334,356,296,361,267,376,245,378,185,327,188,"\
"281,195,239,216,245,221,245,232,261,244,281,238,300,242,304,251,285,262,278,277,"\
"267,294,249,312,219,333,198,346,184,353")
Geozone.create!(name: I18n.t("seeds.geozones.central_district"),
external_code: "004", census_code: "04",
html_map_coordinates: "152,308,137,258,133,235,147,216,152,214,186,194,210,196,"\
"228,202,240,216,241,232,263,243,293,241,301,245,302,254,286,265,274,278,267,296,"\
"243,293,226,289,209,285,195,283,177,297")
end

View File

@@ -1,8 +1,8 @@
section "Creating default Milestone Statuses" do
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.studying_project"))
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.bidding"))
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.executing_project"))
Milestone::Status.create(name: I18n.t("seeds.budgets.statuses.executed"))
Milestone::Status.create!(name: I18n.t("seeds.budgets.statuses.studying_project"))
Milestone::Status.create!(name: I18n.t("seeds.budgets.statuses.bidding"))
Milestone::Status.create!(name: I18n.t("seeds.budgets.statuses.executing_project"))
Milestone::Status.create!(name: I18n.t("seeds.budgets.statuses.executed"))
end
section "Creating investment milestones" do

View File

@@ -3,36 +3,35 @@ require_dependency "poll/question/answer"
section "Creating polls" do
Poll.create(name: I18n.t("seeds.polls.current_poll"),
slug: I18n.t("seeds.polls.current_poll").parameterize,
starts_at: 7.days.ago,
ends_at: 7.days.from_now,
geozone_restricted: false)
Poll.create!(name: I18n.t("seeds.polls.current_poll"),
slug: I18n.t("seeds.polls.current_poll").parameterize,
starts_at: 7.days.ago,
ends_at: 7.days.from_now,
geozone_restricted: false)
Poll.create(name: I18n.t("seeds.polls.current_poll_geozone_restricted"),
slug: I18n.t("seeds.polls.current_poll_geozone_restricted").parameterize,
starts_at: 5.days.ago,
ends_at: 5.days.from_now,
geozone_restricted: true,
geozones: Geozone.reorder("RANDOM()").limit(3))
Poll.create!(name: I18n.t("seeds.polls.current_poll_geozone_restricted"),
slug: I18n.t("seeds.polls.current_poll_geozone_restricted").parameterize,
starts_at: 5.days.ago,
ends_at: 5.days.from_now,
geozone_restricted: true,
geozones: Geozone.reorder("RANDOM()").limit(3))
Poll.create(name: I18n.t("seeds.polls.recounting_poll"),
slug: I18n.t("seeds.polls.recounting_poll").parameterize,
starts_at: 15.days.ago,
ends_at: 2.days.ago)
Poll.create!(name: I18n.t("seeds.polls.recounting_poll"),
slug: I18n.t("seeds.polls.recounting_poll").parameterize,
starts_at: 15.days.ago,
ends_at: 2.days.ago)
Poll.create(name: I18n.t("seeds.polls.expired_poll_without_stats"),
slug: I18n.t("seeds.polls.expired_poll_without_stats").parameterize,
Poll.create!(name: I18n.t("seeds.polls.expired_poll_without_stats"),
slug: I18n.t("seeds.polls.expired_poll_without_stats").parameterize,
starts_at: 2.months.ago,
ends_at: 1.month.ago)
starts_at: 2.months.ago,
ends_at: 1.month.ago)
Poll.create(name: I18n.t("seeds.polls.expired_poll_with_stats"),
slug: I18n.t("seeds.polls.expired_poll_with_stats").parameterize,
starts_at: 2.months.ago,
ends_at: 1.month.ago,
results_enabled: true,
stats_enabled: true)
Poll.create!(name: I18n.t("seeds.polls.expired_poll_with_stats"),
slug: I18n.t("seeds.polls.expired_poll_with_stats").parameterize,
starts_at: 2.months.ago,
ends_at: 1.month.ago,
results_enabled: true,
stats_enabled: true)
Poll.find_each do |poll|
name = poll.name

View File

@@ -18,7 +18,7 @@ def add_image_to(imageable)
attachment: IMAGE_FILES.sample,
user: imageable.author
})
imageable.save
imageable.save!
end
section "Creating Proposals" do

View File

@@ -22,49 +22,49 @@ section "Creating Users" do
admin = create_user("admin@consul.dev", "admin")
admin.create_administrator
admin.update(residence_verified_at: Time.current,
admin.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
moderator = create_user("mod@consul.dev", "moderator")
moderator.create_moderator
moderator.update(residence_verified_at: Time.current,
moderator.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
manager = create_user("manager@consul.dev", "manager")
manager.create_manager
manager.update(residence_verified_at: Time.current,
manager.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
valuator = create_user("valuator@consul.dev", "valuator")
valuator.create_valuator
valuator.update(residence_verified_at: Time.current,
valuator.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
poll_officer = create_user("poll_officer@consul.dev", "Paul O. Fisher")
poll_officer.create_poll_officer
poll_officer.update(residence_verified_at: Time.current,
poll_officer.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
poll_officer2 = create_user("poll_officer2@consul.dev", "Pauline M. Espinosa")
poll_officer2.create_poll_officer
poll_officer2.update(residence_verified_at: Time.current,
poll_officer2.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
create_user("unverified@consul.dev", "unverified")
level_2 = create_user("leveltwo@consul.dev", "level 2")
level_2.update(residence_verified_at: Time.current,
level_2.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number,
document_number: unique_document_number, document_type: "1")
verified = create_user("verified@consul.dev", "verified")
verified.update(residence_verified_at: Time.current,
verified.update!(residence_verified_at: Time.current,
confirmed_phone: Faker::PhoneNumber.phone_number, document_type: "1",
verified_at: Time.current, document_number: unique_document_number)
@@ -80,7 +80,7 @@ section "Creating Users" do
5.times do |i|
official = create_user("official#{i}@consul.dev", "Official #{i}")
official.update(official_level: i, official_position: "Official position #{i}")
official.update!(official_level: i, official_position: "Official position #{i}")
end
30.times do |i|

View File

@@ -9,11 +9,11 @@ end
Setting.reset_defaults
WebSection.where(name: "homepage").first_or_create
WebSection.where(name: "debates").first_or_create
WebSection.where(name: "proposals").first_or_create
WebSection.where(name: "budgets").first_or_create
WebSection.where(name: "help_page").first_or_create
WebSection.where(name: "homepage").first_or_create!
WebSection.where(name: "debates").first_or_create!
WebSection.where(name: "proposals").first_or_create!
WebSection.where(name: "budgets").first_or_create!
WebSection.where(name: "help_page").first_or_create!
# Default custom pages
load Rails.root.join("db", "pages.rb")

View File

@@ -23,7 +23,7 @@ class EmailDigest
def mark_as_emailed
notifications.update_all(emailed_at: Time.current)
user.update(failed_email_digests_count: 0)
user.update!(failed_email_digests_count: 0)
end
def valid_email?

View File

@@ -24,10 +24,10 @@ class RemoteTranslations::Caller
def destroy_remote_translation
if resource.valid?
remote_translation.destroy
resource.save!
else
remote_translation.update(error_message: resource.errors.messages)
end
resource.save
end
def resource

View File

@@ -431,6 +431,6 @@ namespace :proposal_actions do
end
Setting["proposals.successful_proposal_id"] = proposal.id
proposal.update(cached_votes_up: cached_votes_up)
proposal.update!(cached_votes_up: cached_votes_up)
end
end

View File

@@ -105,7 +105,7 @@ describe "Admin budget investments" do
expect(page).to have_content("Health")
end
budget_investment3.update(administrator_id: admin.id)
budget_investment3.update!(administrator_id: admin.id)
visit admin_budget_budget_investments_path(budget_id: budget.id)
within("#budget_investment_#{budget_investment3.id}") do
@@ -518,8 +518,8 @@ describe "Admin budget investments" do
investment1.set_tag_list_on(:valuation, "Teachers")
investment2.set_tag_list_on(:valuation, "Hospitals")
investment1.save
investment2.save
investment1.save!
investment2.save!
visit admin_budget_budget_investments_path(budget_id: budget.id)
@@ -534,8 +534,8 @@ describe "Admin budget investments" do
investment1.set_tag_list_on(:valuation, "Roads")
investment2.set_tag_list_on(:valuation, "Accessibility")
investment1.save
investment2.save
investment1.save!
investment2.save!
visit admin_budget_budget_investments_path(budget_id: budget.id)
@@ -544,7 +544,7 @@ describe "Admin budget investments" do
end
scenario "Disable 'Calculate winner' button if incorrect phase" do
budget.update(phase: "reviewing_ballots")
budget.update!(phase: "reviewing_ballots")
visit admin_budget_budget_investments_path(budget)
@@ -558,7 +558,7 @@ describe "Admin budget investments" do
expect(page).to have_link "Calculate Winner Investments"
budget.update(phase: "accepting")
budget.update!(phase: "accepting")
visit admin_budget_budget_investments_path(budget)
@@ -1202,7 +1202,7 @@ describe "Admin budget investments" do
scenario "Adds existing valuation tags", :js do
budget_investment1 = create(:budget_investment)
budget_investment1.set_tag_list_on(:valuation, "Education, Health")
budget_investment1.save
budget_investment1.save!
budget_investment2 = create(:budget_investment)
@@ -1240,7 +1240,7 @@ describe "Admin budget investments" do
scenario "Changes valuation and user generated tags" do
budget_investment = create(:budget_investment, tag_list: "Park")
budget_investment.set_tag_list_on(:valuation, "Education")
budget_investment.save
budget_investment.save!
visit admin_budget_budget_investment_path(budget_investment.budget, budget_investment)
@@ -1480,7 +1480,7 @@ describe "Admin budget investments" do
end
scenario "Show only selected text when budget is finished" do
budget.update(phase: "finished")
budget.update!(phase: "finished")
visit admin_budget_budget_investments_path(budget)
@@ -1582,8 +1582,8 @@ describe "Admin budget investments" do
scenario "Mark as visible to valuator", :js do
investment1.valuators << valuator
investment2.valuators << valuator
investment1.update(administrator: admin)
investment2.update(administrator: admin)
investment1.update!(administrator: admin)
investment2.update!(administrator: admin)
visit admin_budget_budget_investments_path(budget)
click_link "Advanced filters"
@@ -1605,13 +1605,13 @@ describe "Admin budget investments" do
end
scenario "Shows the correct investments to valuators" do
investment1.update(visible_to_valuators: true)
investment2.update(visible_to_valuators: false)
investment1.update!(visible_to_valuators: true)
investment2.update!(visible_to_valuators: false)
investment1.valuators << valuator
investment2.valuators << valuator
investment1.update(administrator: admin)
investment2.update(administrator: admin)
investment1.update!(administrator: admin)
investment2.update!(administrator: admin)
login_as(valuator.user.reload)
visit root_path
@@ -1627,12 +1627,12 @@ describe "Admin budget investments" do
end
scenario "Unmark as visible to valuator", :js do
budget.update(phase: "valuating")
budget.update!(phase: "valuating")
investment1.valuators << valuator
investment2.valuators << valuator
investment1.update(administrator: admin, visible_to_valuators: true)
investment2.update(administrator: admin, visible_to_valuators: true)
investment1.update!(administrator: admin, visible_to_valuators: true)
investment2.update!(administrator: admin, visible_to_valuators: true)
visit admin_budget_budget_investments_path(budget)
@@ -1682,7 +1682,7 @@ describe "Admin budget investments" do
scenario "Keeps the valuation tags", :js do
investment1.set_tag_list_on(:valuation, %w[Possimpible Truthiness])
investment1.save
investment1.save!
visit admin_budget_budget_investments_path(budget)

View File

@@ -185,7 +185,7 @@ describe "Admin budgets" do
let!(:budget) { create(:budget) }
scenario "Show phases table" do
budget.update(phase: "selecting")
budget.update!(phase: "selecting")
visit admin_budgets_path
click_link "Edit budget"
@@ -217,7 +217,7 @@ describe "Admin budgets" do
end
scenario "Changing name for current locale will update the slug if budget is in draft phase", :js do
budget.update(phase: "drafting")
budget.update!(phase: "drafting")
old_slug = budget.slug
visit edit_admin_budget_path(budget)

View File

@@ -48,7 +48,7 @@ describe "Admin change log" do
expect(page).to have_content(budget_investment.heading.name)
expect(page).to have_content("There are not changes logged")
budget_investment.update(title: "test")
budget_investment.update!(title: "test")
visit admin_budget_budget_investments_path(budget_investment.budget)

View File

@@ -158,7 +158,7 @@ describe "Admin legislation questions" do
context "Special translation behaviour" do
before do
question.update_attributes(title_en: "Title in English", title_es: "Título en Español")
question.update!(title_en: "Title in English", title_es: "Título en Español")
end
scenario "Add translation for question option", :js do

View File

@@ -12,7 +12,7 @@ describe "Admin milestone statuses" do
status1 = create(:milestone_status)
status2 = create(:milestone_status)
status1.destroy
status1.destroy!
visit admin_milestone_statuses_path

View File

@@ -244,7 +244,7 @@ describe "Admin shifts" do
officer = create(:poll_officer)
create(:poll_shift, officer: officer, booth: booth)
officer.destroy
officer.destroy!
visit new_admin_booth_shift_path(booth)

View File

@@ -103,7 +103,7 @@ describe "Admin settings" do
describe "Update content types" do
scenario "stores the correct mime types" do
setting = Setting.create(key: "upload.images.content_types", value: "image/png")
setting = Setting.create!(key: "upload.images.content_types", value: "image/png")
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path
@@ -194,7 +194,7 @@ describe "Admin settings" do
end
scenario "On #tab-configuration", :js do
configuration_setting = Setting.create(key: "whatever")
configuration_setting = Setting.create!(key: "whatever")
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path
@@ -216,7 +216,7 @@ describe "Admin settings" do
end
scenario "On #tab-map-configuration", :js do
map_setting = Setting.create(key: "map.whatever")
map_setting = Setting.create!(key: "map.whatever")
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path
@@ -233,7 +233,7 @@ describe "Admin settings" do
end
scenario "On #tab-proposals", :js do
proposal_dashboard_setting = Setting.create(key: "proposals.whatever")
proposal_dashboard_setting = Setting.create!(key: "proposals.whatever")
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path
@@ -249,7 +249,7 @@ describe "Admin settings" do
end
scenario "On #tab-participation-processes", :js do
process_setting = Setting.create(key: "process.whatever")
process_setting = Setting.create!(key: "process.whatever")
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path
@@ -264,7 +264,7 @@ describe "Admin settings" do
end
scenario "On #tab-feature-flags", :js do
feature_setting = Setting.create(key: "feature.whatever")
feature_setting = Setting.create!(key: "feature.whatever")
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path

View File

@@ -55,7 +55,7 @@ describe "Signature sheets" do
scenario "Budget Investment" do
investment = create(:budget_investment)
budget = investment.budget
budget.update(phase: "selecting")
budget.update!(phase: "selecting")
visit new_admin_signature_sheet_path
@@ -108,7 +108,7 @@ describe "Signature sheets" do
scenario "Budget Investment" do
investment = create(:budget_investment)
budget = investment.budget
budget.update(phase: "selecting")
budget.update!(phase: "selecting")
visit new_admin_signature_sheet_path

View File

@@ -285,7 +285,7 @@ describe "Stats" do
scenario "Deleted proposals" do
proposal_notification = create(:proposal_notification)
proposal_notification.proposal.destroy
proposal_notification.proposal.destroy!
visit admin_stats_path
click_link "Proposal notifications"

View File

@@ -2,7 +2,7 @@ require "rails_helper"
describe "Admin edit translatable records" do
before do
translatable.update(attributes)
translatable.update!(attributes)
login_as(create(:administrator).user)
end
@@ -311,7 +311,7 @@ describe "Admin edit translatable records" do
before do
translatable.translations.destroy_all
translatable.translations.create(locale: :fr, title: "Titre en Français")
translatable.translations.create!(locale: :fr, title: "Titre en Français")
end
scenario "Does not add a translation for the current locale" do
@@ -398,7 +398,7 @@ describe "Admin edit translatable records" do
let(:translatable) { create(:admin_notification, segment_recipient: "all_users") }
scenario "Shows first available fallback" do
translatable.update({ title_fr: "Titre en Français", body_fr: "Texte en Français" })
translatable.update!({ title_fr: "Titre en Français", body_fr: "Texte en Français" })
visit edit_admin_admin_notification_path(translatable)
@@ -417,7 +417,7 @@ describe "Admin edit translatable records" do
let(:translatable) { create(:budget).phases.last }
scenario "Shows first available fallback" do
translatable.update({ description_fr: "Phase en Français", summary_fr: "Phase résumé" })
translatable.update!({ description_fr: "Phase en Français", summary_fr: "Phase résumé" })
visit edit_admin_budget_budget_phase_path(translatable.budget, translatable)
@@ -438,7 +438,7 @@ describe "Admin edit translatable records" do
let(:translatable) { create(:active_poll) }
scenario "Shows first available fallback" do
translatable.update({ description_fr: "Sondage en Français" })
translatable.update!({ description_fr: "Sondage en Français" })
visit edit_admin_active_polls_path(translatable)

View File

@@ -96,7 +96,7 @@ describe "Valuator groups" do
end
scenario "Update a valuator's group" do
valuator.update(valuator_group: create(:valuator_group, name: "Economy"))
valuator.update!(valuator_group: create(:valuator_group, name: "Economy"))
create(:valuator_group, name: "Health")
visit edit_admin_valuator_path(valuator)
@@ -108,7 +108,7 @@ describe "Valuator groups" do
end
scenario "Remove a valuator from a group" do
valuator.update(valuator_group: create(:valuator_group, name: "Health"))
valuator.update!(valuator_group: create(:valuator_group, name: "Health"))
visit edit_admin_valuator_path(valuator)
select "", from: "valuator_valuator_group_id"

Some files were not shown because too many files have changed in this diff Show More