ほげほげパッチ

有る事無い事 徒然なるままに

テストコード #2

FactoryBot × 中間テーブル

(spec/factories/room_users.rb)
# アソシエーションのみ定義
FactoryBot.define do
  factory :room_user do
    association :user
    association :room
  end
end
(messages_spec.rb)
# userとroomを自動で追加
@room_user = FactoryBot.create(:room_user)
 => <#RoomUser:0x0000000110b662f8
  id: 2,
  room_id: 2,
  user_id: 4,
  created_at: Sat, 02 Sep 2023 09:10:04.633423000 JST +09:00,
  updated_at: Sat, 02 Sep 2023 09:10:04.633423000 JST +09:00>
(コンソール)
pry(main)> Room.find(2)
=> [#<Room:0x0000000110ca1a50
  id: 2,
  name: "New Jersey goblins",
  created_at: Sat, 02 Sep 2023 09:10:04.631154000 JST +09:00,
  updated_at: Sat, 02 Sep 2023 09:10:04.631154000 JST +09:00>,


Rails.root.joinレイルズ ルート ジョイン

# トップ階層〜Railsアプリ のパス
pry(main)> Rails.root
=> #<Pathname:/Users/ユーザー名/projects/sample-app>

# joinで後ろにパスを結合
pry(main)> Rails.root.join('public/images/test_image.png')
=> #<Pathname:/Users/ユーザー名/projects/sample-app/public/images/test_image.png>


attach_fileアタッチ ファイルメソッド

input要素[type: file]に、テスト用の画像を添付(アタッチ)できる。

# 引数(input要素のname属性, ファイルのパス)
attach_file('message[image]', image_path)

# 非表示(display:none;)のinput要素を表示
attach_file('message[image]', image_path, make_visible: true)


create_listクリエイトリスト

# FactoryBotを量産
FactoryBot.create_list(:message, 3, )
# オプションで、カラムの内容を指定できる。
# 外部キーも指定できる。
FactoryBot.create_list(:message, 1, content: 'hoge', room_id: @room_user.room.id)


ドットは3種類

  1. アソシエーションのドット
  2. メソッドのドット
  3. カラムをつなぐドッド