Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

企業に所属しているアドバイザーのトップ画面に同じ企業の研修生リストを表示する #5438

Merged
merged 12 commits into from
Sep 5, 2022

Conversation

yuma-matsui
Copy link
Contributor

@yuma-matsui yuma-matsui commented Aug 27, 2022

Issue

Description

企業に所属しているアドバイザーのトップページに同じ企業の研修生のリストを表示。

確認方法

  1. feature/add-training-subordinate-lists-at-adviser-pageブランチをローカルに取り込む
  2. rails sで立ち上げる
  3. senpaiでログインする
  4. http://localhost:3000 にアクセスする

変更点

変更前

image

変更後

image

Comment on lines 1 to 21
.card-list-item
.card-list-item__inner
.card-list-item__user
= render 'users/icon', user: user, image_class: 'card-list-item__user-icon'
.card-list-item__rows
.card-list-item__row
header.card-list-item-title
h2.card-list-item-title__title(itemprop='name')
= link_to user, itemprop: 'url', class: 'card-list-item-title__link a-text-link' do
| #{user.login_name} (#{user.name})
.card-list-item__row
.card-list-item-meta
.card-list-item-meta__items
- if user.reports.present?
.card-list-item-meta__item
= link_to user_reports_path(user), class: 'card-list-item-meta__item-link a-text-link' do
| 日報一覧(#{user.reports.count})
- if user.products.present?
.card-list-item-meta__item
= link_to user_products_path(user), class: 'card-list-item-meta__item-link a-text-link' do
| 提出物一覧(#{user.products.count})
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

app/views/home/_jobseeking_users.html.slimの8~31行目と同じ内容を書いてしまっていますが、

#5215 (comment)

ひとまずデータを引っ張って来れればOKということでしたのでそのままにしております。

.a-card
header.card-header.is-sm
h2.card-header__title
| 研修生
Copy link
Contributor Author

@yuma-matsui yuma-matsui Aug 27, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テストを書くために仮でh2のコンテントを「研修生」にしてあります。
machidaさんに確認していただいた後で変更が必要な場合はテストと合わせて変更します。

@yuma-matsui yuma-matsui marked this pull request as ready for review August 27, 2022 00:55
@yuma-matsui yuma-matsui self-assigned this Aug 27, 2022
@yuma-matsui
Copy link
Contributor Author

@keiz1213
お疲れ様です!水曜日からチーム開発に加わったyumです。
よろしくお願いいたします😌

こちらのレビューをお願いいたします🙏

Copy link
Contributor

@keiz1213 keiz1213 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yuma-matsui
お疲れさまです!レビュー依頼ありがとうございます😄
動作確認できました!コードも問題ないと思います!

ただ今回書いていただいたテストではカバー率が高くてテストが重くなってしうのかなと思いました。

先日自分のissueでシステムテストについて質問したのですが次のようなコメントを頂きました。

特にsystem testはすごく遅いのでsystem testでは重要度の低いテストはやりたくない感じです。
もしどうしてもやるのであればviewだけのテストなどでできればいいな〜という感じです。

#5239 (comment)

bootcampでは見た目上の変更は重要度が低いためテストはあまり追加しないほうがいいみたいです。
今回のissueは見た目上の変更であり、特別に個人情報などが含まれているわけでもないので重要度が低いように感じられました。
なので提案として、

  • 企業に所属するアドバイザーのダッシュボードには研修生が表示されている
  • 一般の生徒のダッシュボードには表示されない

これくらいで大丈夫かなと思いましたがどうでしょうか?

@@ -351,4 +351,40 @@ class HomeTest < ApplicationSystemTestCase
assert_text I18n.l products(:product5).updated_at
end
end

test 'show trainee lists for adviser belonging a company' do
assert users(:senpai).adviser?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bootcampのシステムテストを全体的に確認してみたのですが、bootcampではこのようなユーザーのロールを確認するアサーションは不要のようです。以下のテストについても同様です。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご指摘ありがとうございます。
他のテストを見よう見まねで書いてしましたが、おっしゃる通り不要そうですね。
上記ご指摘もあるのでテストケース自体を削除しようと思います。

@yuma-matsui
Copy link
Contributor Author

@keiz1213
ご確認いただきありがとうございます!

ただ今回書いていただいたテストではカバー率が高くてテストが重くなってしうのかなと思いました。

確かにテスト回していてかなり遅いなと思いました😅
テストを書くか否かの判断ができなかったので大変参考になりました。

今回はご提案の通り下記2点のテストのみ残して他は削除しようと思います。

  • 企業に所属するアドバイザーのダッシュボードには研修生が表示されている
  • 一般の生徒のダッシュボードには表示されない

また、モデルのテストを書くことをすっかり忘れていたので上記修正と合わせて追加します。

@yuma-matsui
Copy link
Contributor Author

@keiz1213
ご指摘いただいた箇所の修正とUserモデルのテストを追加したので再度ご確認をお願いします🙏

test 'not show trainee lists for adviser' do
visit_with_auth '/', 'advijirou'
assert_no_selector 'h2.card-header__title', text: '研修生'
end
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

今回はご提案の通り下記2点のテストのみ残して他は削除しようと思います。

  • 企業に所属するアドバイザーのダッシュボードには研修生が表示されている
  • 一般の生徒のダッシュボードには表示されない

アドバイザーだけど所属企業が無い場合についてはテストを残した方が良いと思ったのですがいかがでしょうか🤔
所属企業がある && アドバイザー 以外は全ユーザー非表示という仕様だとやはり不要そうな気もしますが....
ご意見をいただければと思います🙇🏻‍♂️

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yuma-matsui

アドバイザーだけど所属企業が無い場合についてはテストを残した方が良いと思ったのですがいかがでしょうか🤔

確かに少し不安定かな?と僕も思いました🤔ですがモデルのテストでbelongs_company_and_adviser?をしっかり追加されていて、所属企業有りのアドバイザー所属企業無しのアドバイザー、が振り分けられていることをテストできているのでその点のシステムテストは不要かな?と思いました🤔

まだ僕もはっきり「どのテストが必要で、どのテストが不要か?」という明確な基準を理解していないくて自信がないので間違ってたらすみません😅

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@keiz1213

ご確認いただきありがとうございます!!

モデルのテストでbelongs_company_and_adviser?をしっかり追加されていて、所属企業有りのアドバイザーと所属企業無しのアドバイザー、が振り分けられていることをテストできているのでその点のシステムテストは不要かな?と思いました🤔

こちらおっしゃる通りですね💡
僕もご指摘いただいてすごい納得できたのでadvijirouのテストケースは削除する方向でいこうと思います!

Copy link
Contributor

@keiz1213 keiz1213 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修正いただきありがとうございます!😄一点コメントさせていただきました!🙏

@yuma-matsui
Copy link
Contributor Author

@keiz1213
ありがとうございます!!
修正コミットを追加しましたのでご確認をお願いします🙏

Copy link
Contributor

@keiz1213 keiz1213 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yuma-matsui

確認させていただきました!僕の方からはapproveさせていただきます!😄

@yuma-matsui
Copy link
Contributor Author

@komagata
お疲れ様です!
メンバーのレビューが済みましたのでご確認をお願いします。

scope :same_company, lambda { |user|
where(company_id: user.company_id)
}
scope :my_subordinates, lambda { |user|
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my_subordinatesだと私の部下的な意味になって意味合いが違っちゃうかもなのと、ちょっと直訳っぽいので、colleague_traineeとかfellow_traineeとかの方がいいかも?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

アドバイザーと研修生の関係に上限関係があると勘違いしていました。というより決めつけていました。
今回はcollegue_traineeでいこうと思います!

@yuma-matsui
Copy link
Contributor Author

@komagata
ご指摘箇所について修正しましたのでご確認をお願いします🙏

一点確認ですが、修正コミットを作る際にmainブランチをリベースしてしまいコミット履歴を汚染してしまったのですが、
この場合はきれいにしてPRを作り直した方が良いでしょうか。

@komagata
Copy link
Member

@yuma-matsui

はい、PRは必要なmainとの差分のみの状態でお願いします〜(PRを削除しなくても、修正で大丈夫です。)

@yuma-matsui yuma-matsui force-pushed the feature/add-training-subordinate-lists-at-adviser-page branch from 246a348 to fe0a0db Compare August 30, 2022 05:58
@yuma-matsui
Copy link
Contributor Author

@komagata
修正が完了しましたのでご確認をお願いします🙏

OKの場合はmachidaさんにデザインの依頼をさせていただきます!

scope :same_company, lambda { |user|
where(company_id: user.company_id)
}
scope :collegue_trainees, lambda { |user|
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

User.collegue_trainees(user) だったら、user.collegue_traineesという形にできるのではないかと思いました。(引数が不要になった方が自然なAPIなので)

@yuma-matsui yuma-matsui force-pushed the feature/add-training-subordinate-lists-at-adviser-page branch from 7f3b09d to 305d117 Compare August 31, 2022 10:42
@yuma-matsui yuma-matsui force-pushed the feature/add-training-subordinate-lists-at-adviser-page branch from 305d117 to 6912782 Compare August 31, 2022 10:51
@yuma-matsui
Copy link
Contributor Author

@komagata
ご指摘いただいた部分について修正してみました!!
scopeではなくメソッドでcollegue_traineesを取得する方向に転換してみました。

ご確認をお願いします🙏

Comment on lines 663 to 665
def belongs_company?
!company.nil?
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちら、いろんな書き方ができますが、メソッドを作るよりもそのまま書いた方が短いしわかりやすいかもです。(他のプログラマーが独自のメソッドを理解する必要があるため)

company_id?

とかでも一緒かなと思うので。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?が使えるのはデータ型がboolean型のカラムのみと勘違いしていました。
StringであろうとIntegerであろうとnilまたはfalse以外の場合はtrueを返すんですね💡

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yuma-matsui ちょっと話が違うかも?です。

company_id?というのはActiveRecordが自動で作成するメソッドです。
すべてのDBのカラム名?というメソッドを自動で作っています。そのカラムのデータがあるかどうかをbooleanで返すメソッドです。

そのメソッドが最初からあるので、上記のメソッドをわざわざ用意しなくてもいいかな〜と思ったという意味になります。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます!
ActiveRecordが全てのカラムに対してカラム名?を用意してくれるのは知りませんでした。
Boolean型のものだけがカラム名?を用意してくれる対象なのだと思っていました...。

そのメソッドが最初からあるので、上記のメソッドをわざわざ用意しなくてもいいかな〜と思ったという意味になります。

こちらも理解ができました。
ありがとうございます。

@yuma-matsui
Copy link
Contributor Author

@komagata
こちらご指摘の箇所を修正しましたので再度レビューをお願いします。

test '#collegue_trainees' do
target = users(:senpai).collegue_trainees
assert_includes(target, users(:kensyu))

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この空行はなくてもいいかな〜と思いました。

@yuma-matsui
Copy link
Contributor Author

@komagata
ご指摘箇所を修正しましたのでご確認をお願いいたします。

Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させて頂きました。OKです〜🙆‍♂️

@komagata komagata merged commit 9fc80fb into main Sep 5, 2022
@komagata komagata deleted the feature/add-training-subordinate-lists-at-adviser-page branch September 5, 2022 16:59
@github-actions github-actions bot mentioned this pull request Sep 5, 2022
20 tasks
@yuma-matsui
Copy link
Contributor Author

ご確認いただきありがとうございます!!

@machida
こちらのデザインをお願い出来ますでしょうか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants