Created
July 8, 2019 22:54
-
-
Save akiko-pusu/b71d960d0001a48a3257da40febf25fe to your computer and use it in GitHub Desktop.
deliver_security_notificationの無効(その2)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
require_relative '../spec_helper' | |
require_relative '../support/login_helper' | |
feature 'IssueBadge', js: true do | |
include LoginHelper | |
let(:project) { FactoryBot.create(:project) } | |
let(:tracker) { FactoryBot.create(:tracker, :with_default_status) } | |
let(:role) { FactoryBot.create(:role) } | |
let(:issue_priority) { FactoryBot.create(:priority) } | |
let(:user) { FactoryBot.create(:user, :password_same_login, login: 'badge_user', language: 'en') } | |
let(:issues) do | |
FactoryBot.create_list(:issue, 4, | |
project_id: project.id, | |
tracker_id: tracker.id, | |
priority_id: issue_priority.id, | |
assigned_to_id: user.id) | |
end | |
context 'When Administrator' do | |
background do | |
# Prevent to call User.deliver_security_notification when user is created. | |
# after_saveは有効にしつつ、モック対応の場合はこちら | |
#allow_any_instance_of(User).to receive(:deliver_security_notification).and_return(true) | |
project.trackers << tracker | |
member = Member.new(project: project, user_id: user.id) | |
member.member_roles << MemberRole.new(role: role) | |
member.save | |
issues | |
# after_saveを一時的に無効にする処理に渡す | |
skip_after_save do | |
user.update(admin: true) | |
end | |
log_user(user.login, user.login) | |
visit '/settings/plugin/redmine_issue_badge' | |
end | |
scenario 'Badge is displayed if global settings badge option is activated.' do | |
# Enable Badge | |
check 'settings_activate_for_all_users' | |
click_on 'Apply' | |
expect(page).to have_selector '#content > h2', text: /Redmine Issue Badge plugin/ | |
expect(page).to have_selector('#issue_badge') | |
end | |
scenario 'Badge is not displayed if global settings badge option is dectivated.' do | |
# Enable Badge | |
uncheck 'settings_activate_for_all_users' | |
click_on 'Apply' | |
expect(page).to have_selector '#content >h2', text: /Redmine Issue Badge plugin/ | |
expect(page).not_to have_selector('#issue_badge') | |
end | |
end | |
def wait_for_ajax | |
Timeout.timeout(Capybara.default_max_wait_time) do | |
loop until finished_all_ajax_requests? | |
end | |
end | |
def finished_all_ajax_requests? | |
page.evaluate_script('jQuery.active').zero? | |
end | |
# ブロックを引数に取り、その間だけ Userのafter_saveでのdeliver_security_notificationを無効にする | |
def skip_after_save | |
User.skip_callback(:save, :after, :deliver_security_notification) | |
yield | |
User.set_callback(:save, :after, :deliver_security_notification) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment