質問するログイン新規登録

質問編集履歴

1

テストコード全体および、バリデーションuser.rbを追加しました。

2023/11/23 01:45

投稿

onsa0129onsa
onsa0129onsa

スコア3

title CHANGED
File without changes
body CHANGED
@@ -34,6 +34,8 @@
34
34
  end
35
35
  end
36
36
  ```
37
+
38
+ テストコード全体
37
39
  ```
38
40
  require 'rails_helper'
39
41
 
@@ -43,9 +45,52 @@
43
45
  end
44
46
 
45
47
  describe 'ユーザー新規登録' do
48
+ context '新規登録できる場合' do
49
+ it "nicknameとemail、passwordとpassword_confirmation、family_nameとfirst_name、family_name_kanaとfirst_name_kana、birthdayが存在すれば登録できる" do
50
+ expect(@user).to be_valid
46
- (略)
51
+ end
52
+ end
47
53
  context '新規登録できない場合' do
54
+ it "nicknameが空では登録できない" do
55
+ @user.nickname = ''
56
+ @user.valid?
57
+ expect(@user.errors.full_messages).to include("Nickname can't be blank")
48
- (略)
58
+ end
59
+ it "emailが空では登録できない" do
60
+ @user.email = ''
61
+ @user.valid?
62
+ expect(@user.errors.full_messages).to include("Email can't be blank")
63
+ end
64
+ it "passwordが空では登録できない" do
65
+ @user.password = ''
66
+ @user.valid?
67
+ expect(@user.errors.full_messages).to include("Password can't be blank")
68
+ end
69
+ it "family_nameが空では登録できない" do
70
+ @user.family_name = ''
71
+ @user.valid?
72
+ expect(@user.errors.full_messages).to include("Family name can't be blank")
73
+ end
74
+ it "first_nameが空では登録できない" do
75
+ @user.first_name = ''
76
+ @user.valid?
77
+ expect(@user.errors.full_messages).to include("First name can't be blank")
78
+ end
79
+ it "family_name_kanaが空では登録できない" do
80
+ @user.family_name_kana = ''
81
+ @user.valid?
82
+ expect(@user.errors.full_messages).to include("Family name kana can't be blank")
83
+ end
84
+ it "first_name_kanaが空では登録できない" do
85
+ @user.first_name_kana = ''
86
+ @user.valid?
87
+ expect(@user.errors.full_messages).to include("First name kana can't be blank")
88
+ end
89
+ it "birthdayが空では登録できない" do
90
+ @user.birthday = ''
91
+ @user.valid?
92
+ expect(@user.errors.full_messages).to include("Birthday can't be blank")
93
+ end
49
94
  it '重複したメールアドレスは登録できない' do
50
95
  @user.save
51
96
  another_user = FactoryBot.build(:user)
@@ -53,11 +98,87 @@
53
98
  another_user.valid?
54
99
  expect(another_user.errors.full_messages).to include('Email has already been taken')
55
100
  end
101
+ it 'メールアドレスに@を含まない場合は登録できない' do
102
+ @user.email = 'testmail'
103
+ @user.valid?
104
+ expect(@user.errors.full_messages).to include('Email is invalid')
56
- (略)
105
+ end
106
+ it 'パスワードが6文字未満では登録できない' do
107
+ @user.password = '00000'
108
+ @user.password_confirmation = '00000'
109
+ @user.valid?
110
+ expect(@user.errors.full_messages).to include('Password is too short (minimum is 6 characters)')
111
+ end
112
+ it '英字のみのパスワードでは登録できない' do
113
+ @user.password = 'aaaaaa'
114
+ @user.password_confirmation = 'aaaaaa'
115
+ @user.valid?
116
+ expect(@user.errors.full_messages).to include('Password パスワードは英数字混合の6文字以上です。')
117
+ end
118
+ it '数字のみのパスワードでは登録できない' do
119
+ @user.password = '000000'
120
+ @user.password_confirmation = '000000'
121
+ @user.valid?
122
+ expect(@user.errors.full_messages).to include('Password パスワードは英数字混合の6文字以上です。')
123
+ end
124
+ it '全角文字を含むパスワードでは登録できない' do
125
+ @user.password = 'aaa 111'
126
+ @user.password_confirmation = 'aaa 111'
127
+ @user.valid?
128
+ expect(@user.errors.full_messages).to include('Password パスワードは英数字混合の6文字以上です。')
129
+ end
130
+ it 'パスワードとパスワード(確認用)が不一致だと登録できない' do
131
+ @user.password = '123456'
132
+ @user.password_confirmation = '1234567'
133
+ @user.valid?
134
+ expect(@user.errors.full_messages).to include("Password confirmation doesn't match Password")
135
+ end
136
+ it '姓(全角)に半角文字が含まれていると登録できない' do
137
+ @user.family_name = 'ヤマダ'
138
+ @user.valid?
139
+ expect(@user.errors.full_messages).to include('Family name 氏名は全角でお願いします。')
140
+ end
141
+ it '名(全角)に半角文字が含まれていると登録できない' do
142
+ @user.first_name = 'タロウ'
143
+ @user.valid?
144
+ expect(@user.errors.full_messages).to include('First name 氏名は全角でお願いします。')
145
+ end
146
+ it '姓(カナ)にカタカナ以外の文字(平仮名・漢字・英数字・記号)が含まれていると登録できない' do
147
+ @user.family_name_kana = 'ヤマダ'
148
+ @user.valid?
149
+ expect(@user.errors.full_messages).to include ('Family name kana カナは全角カタカナでお願いします。')
150
+ end
151
+ it '名(カナ)にカタカナ以外の文字(平仮名・漢字・英数字・記号)が含まれていると登録できない' do
152
+ @user.first_name_kana = 'タロウ'
153
+ @user.valid?
154
+ expect(@user.errors.full_messages).to include('First name kana カナは全角カタカナでお願いします。')
155
+ end
57
156
  end
58
157
  end
59
158
  end
60
159
  ```
160
+ user.rb
161
+ バリデーション全体
162
+ ```
163
+ class User < ApplicationRecord
164
+ devise :database_authenticatable, :registerable,
165
+ :recoverable, :rememberable, :validatable
166
+ has_many :items
167
+ with_options presence: true do
168
+ validates :nickname
169
+ validates :birthday
170
+ end
171
+ with_options presence: true, format: { with: /\A[ぁ-んァ-ヶ一-龥々ー]+\z/u, message: "氏名は全角でお願いします。" } do
172
+ validates :family_name
173
+ validates :first_name
174
+ end
175
+ with_options presence: true, format: { with: /\A[ァ-ヴー]+\z/u, message: "カナは全角カタカナでお願いします。" } do
176
+ validates :family_name_kana
177
+ validates :first_name_kana
178
+ end
179
+ validates :password, format: { with:/\A(?=.*[a-z])(?=.*\d)[a-z\d]\z/i,message:"パスワードは英数字混合の6文字以上です。"}
180
+ end
181
+ ```
61
182
  ### 試したこと
62
183
 
63
184
  @user.save