Skip to content

Commit

Permalink
コンストラクターでエラーが起こらないのと命名の修正
Browse files Browse the repository at this point in the history
  • Loading branch information
yocchan-git committed Mar 30, 2024
1 parent 871bce7 commit 4886626
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 25 deletions.
6 changes: 3 additions & 3 deletions app/controllers/talks/action_uncompleted_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ def index
.order(updated_at: :desc, id: :asc)

if params[:search_word]
search_user = SearchUser.new(search_word: params[:search_word], require_retire_user: true)
@search_word = search_user.search_word
search_user = SearchUser.new(word: params[:search_word], require_retire_user: true)
@validated_search_word = search_user.validate_search_word
end

if @search_word
if @validated_search_word
searched_users = search_user.search
@searched_talks = @talks.merge(searched_users).page(params[:page])
else
Expand Down
6 changes: 3 additions & 3 deletions app/controllers/talks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ def index
users = User.users_role(@target, allowed_targets: ALLOWED_TARGETS, default_target: 'all')

if params[:search_word]
search_user = SearchUser.new(search_word: params[:search_word], users:, target: @target, require_retire_user: true)
@search_word = search_user.search_word
search_user = SearchUser.new(word: params[:search_word], users:, target: @target, require_retire_user: true)
@validated_search_word = search_user.validate_search_word
end

if @search_word
if @validated_search_word
searched_users = search_user.search
@searched_talks = @talks.merge(searched_users).page(params[:page])
else
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def index

@users = @users.unhibernated.unretired unless @target.in? %w[hibernated retired]
if params[:search_word]
search_user = SearchUser.new(search_word: params[:search_word], users: @users, target: @target)
search_user = SearchUser.new(word: params[:search_word], users: @users, target: @target)
@users = search_user.search
end

Expand Down
15 changes: 6 additions & 9 deletions app/models/search_user.rb
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# frozen_string_literal: true

class SearchUser
attr_reader :search_word

def initialize(search_word:, users: nil, target: nil, require_retire_user: false)
def initialize(word:, users: nil, target: nil, require_retire_user: false)
@users = users
@search_word = validate_search_word(search_word)
@word = word
@target = target
@require_retire_user = require_retire_user
end

def search
searched_user = @users ? @users.search_by_keywords(word: @search_word) : User.search_by_keywords({ word: @search_word })
validated_search_word = validate_search_word
searched_user = @users ? @users.search_by_keywords(word: validated_search_word) : User.search_by_keywords({ word: validated_search_word })

if @target == 'retired'
searched_user.unscope(where: :retired_on).retired
Expand All @@ -22,10 +21,8 @@ def search
end
end

private

def validate_search_word(search_word)
stripped_word = search_word.strip
def validate_search_word
stripped_word = @word.strip
if stripped_word.match?(/^[\w-]+$/)
stripped_word if stripped_word.length >= 3
elsif stripped_word.length >= 2
Expand Down
4 changes: 2 additions & 2 deletions app/views/talks/_talks.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
.form-item.is-inline-md-up
= hidden_field_tag :target, params[:target]
= label_tag :search_word, '絞り込み', class: 'a-form-label'
= text_field_tag :search_word, @search_word, class: 'a-text-input',
= text_field_tag :search_word, @validated_search_word, class: 'a-text-input',
placeholder: 'ユーザーID、ユーザー名、読み方、Discord ID など',
onchange: 'this.form.submit()',
id: 'js-talk-search-input'
Expand All @@ -20,7 +20,7 @@
i.fa-regular.fa-smile
p.o-empty-message__text
| 未対応の相談部屋はありません
- elsif @search_word.blank?
- elsif @validated_search_word.blank?
.talk-list
= paginate @talks
.card-list.a-card
Expand Down
34 changes: 27 additions & 7 deletions test/models/search_user_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class SearchUserTest < ActiveSupport::TestCase
test 'ユーザーを指定しない場合' do
kimura = users(:kimura)
komagata = users(:komagata)
search_user = SearchUser.new(search_word: 'kimu')
search_user = SearchUser.new(word: 'kimu')

searched_users = search_user.search
assert_includes searched_users, kimura
Expand All @@ -15,14 +15,14 @@ class SearchUserTest < ActiveSupport::TestCase

test '退会ユーザーを必要としない場合' do
yameo = users(:yameo)
search_user = SearchUser.new(search_word: 'yame', require_retire_user: false)
search_user = SearchUser.new(word: 'yame', require_retire_user: false)

assert_not_includes search_user.search, yameo
end

test '退会ユーザーを必要とした場合' do
yameo = users(:yameo)
search_user = SearchUser.new(search_word: 'yame', require_retire_user: true)
search_user = SearchUser.new(word: 'yame', require_retire_user: true)

assert_includes search_user.search, yameo
end
Expand All @@ -31,10 +31,10 @@ class SearchUserTest < ActiveSupport::TestCase
yameo = users(:yameo)
kimura = users(:kimura)

search_user = SearchUser.new(search_word: 'yame', target: 'retired')
search_user = SearchUser.new(word: 'yame', target: 'retired')
assert_includes search_user.search, yameo

search_user = SearchUser.new(search_word: 'キム', target: 'retired')
search_user = SearchUser.new(word: 'キム', target: 'retired')
assert_not_includes search_user.search, kimura
end

Expand All @@ -45,10 +45,30 @@ class SearchUserTest < ActiveSupport::TestCase
allowed_targets = %w[student_and_trainee followings mentor graduate adviser trainee year_end_party]
users = User.users_role('mentor', allowed_targets:)

search_user = SearchUser.new(search_word: 'kimu', users:)
search_user = SearchUser.new(word: 'kimu', users:)
assert_not_includes search_user.search, kimura

search_user = SearchUser.new(search_word: 'メンター', users:)
search_user = SearchUser.new(word: 'メンター', users:)
assert_includes search_user.search, mentor
end

test '検索文字が半角2文字の場合' do
search_user = SearchUser.new(word: 'ki')
assert_nil search_user.validate_search_word
end

test '検索文字が全角1文字の場合' do
search_user = SearchUser.new(word: 'キ')
assert_nil search_user.validate_search_word
end

test '検索文字が半角3文字の場合' do
search_user = SearchUser.new(word: 'kim')
assert_equal search_user.validate_search_word, 'kim'
end

test '検索文字が全角2文字の場合' do
search_user = SearchUser.new(word: 'キム')
assert_equal search_user.validate_search_word, 'キム'
end
end

0 comments on commit 4886626

Please sign in to comment.