Rspec 使用用户 ID 扩展基本用户测试
Rspec expanding upon basic user tests with user id
我正在尝试建立一些现有的测试,但我不确定如何处理我需要的语法。我的用户有诊断信息,这很像帖子的概念。我正在尝试为模型编写一个测试,检查是否存在具有 id 的用户,然后它将被分配,因此它将是一个有效用户。我知道要检查用户是否有效,我需要执行类似于以下操作的操作:
user = FactoryGirl.create(:user)
expect(user).to be_valid
我的困惑是我如何以此为基础并检查是否存在具有 id 的用户将被分配诊断信息。
诊断信息模型:
class DiagnosticInfo
include Mongoid::Document
include Mongoid::Timestamps
default_scope where(completed_at: nil)
belongs_to :user
field :data, type: Hash
field :user_id, type: Integer
field :notes, type: String
field :completed_at, type: DateTime
validates :data, presence: true
before_create :assign_user
index created_at: 1
def complete
touch :completed_at
end
private
def assign_user
if user_id
user = User.where(auth_system_user_id: self.user_id).first
self.user = user
end
end
end
正确的做法是确保 User
模型中的验证确保存在相应的 DiagnosticInfo
.
然后在您的测试中,使用工厂创建 User
。除非创建相应的 DiagnosticInfo
记录,否则确保它无效。
u = create(:user)
expect(u).not_to be_valid
# Some code that creates a diagnostic info
expect(u).to be_valid
我正在尝试建立一些现有的测试,但我不确定如何处理我需要的语法。我的用户有诊断信息,这很像帖子的概念。我正在尝试为模型编写一个测试,检查是否存在具有 id 的用户,然后它将被分配,因此它将是一个有效用户。我知道要检查用户是否有效,我需要执行类似于以下操作的操作:
user = FactoryGirl.create(:user)
expect(user).to be_valid
我的困惑是我如何以此为基础并检查是否存在具有 id 的用户将被分配诊断信息。
诊断信息模型:
class DiagnosticInfo
include Mongoid::Document
include Mongoid::Timestamps
default_scope where(completed_at: nil)
belongs_to :user
field :data, type: Hash
field :user_id, type: Integer
field :notes, type: String
field :completed_at, type: DateTime
validates :data, presence: true
before_create :assign_user
index created_at: 1
def complete
touch :completed_at
end
private
def assign_user
if user_id
user = User.where(auth_system_user_id: self.user_id).first
self.user = user
end
end
end
正确的做法是确保 User
模型中的验证确保存在相应的 DiagnosticInfo
.
然后在您的测试中,使用工厂创建 User
。除非创建相应的 DiagnosticInfo
记录,否则确保它无效。
u = create(:user)
expect(u).not_to be_valid
# Some code that creates a diagnostic info
expect(u).to be_valid