1
アプリケーションが拒否された場合、denied_applications
は1つ増加し、applications
は-1になり、members
はまったく変更されません。これは良い書面によるテストですか、それとも醜いのですか?
# team.rb
has_many :memberships, dependent: :destroy
has_many :members, -> { where(team_memberships: {state: :confirmed}) }, through: :memberships, source: :user
has_many :ex_members, -> { where(team_memberships: {state: :left}) }, through: :memberships, source: :user
has_many :applications, -> { where(state: :pending) }, class_name: "Membership"
has_many :denied_applications, -> { where(state: :denied) }, class_name: "Membership"
ので、私の質問は、より可能性が高い:は、これは良いで書かテストであるか、あなただけの一部の人々は私見差アサーションが異なるテストであるべきだと主張、しかしでしょう
team.denied_applications.reload.count.must_equal(1)
team.applications.reload.count.must_equal(0)
team.members.reload.count.must_equal(0)
私はfactory_girlを使用します。「Team.last」はseeds.rbからのものです。プロジェクト全体が大きく、テストのための種が必要です。ユーザーがチームを作成します。チームはさまざまなプロジェクトを作成し、そのチームの一部のユーザーはプロジェクトで何かを行うことができます。私は、工場員といっしょにこれらのことをするのは実用的ではないと感じています。チームはまず承認を必要とし、プロジェクトの承認が必要です。 1つのテスト小さなテストを実行するには、テストシナリオを持つために少なくとも20行のルビコードを実行する必要があります。 –
私はあなたがどこから来ているのか確かに見ています。おそらく、 'factory_girl'特性があなたにそれを手伝ってくれるかもしれないので、何らかの' create(:team、:approved) 'のようなものがあるかもしれませんか? – jfornoff