add Match model
This commit is contained in:
@@ -97,4 +97,33 @@ RSpec.describe User, type: :model do
|
||||
expect(user.update(nickname: "new_nickname")).to be true
|
||||
end
|
||||
end
|
||||
|
||||
describe "#finished_matches" do
|
||||
let(:user) { User.create!(valid_attributes) }
|
||||
let(:opponent) { User.create!(nickname: "opponent", password: "secret123") }
|
||||
let(:outsider) { User.create!(nickname: "outsider", password: "secret123") }
|
||||
|
||||
def build_match(attrs)
|
||||
Match.create!({
|
||||
player1: user,
|
||||
player2: opponent,
|
||||
status: :ongoing,
|
||||
game_server: "ws://game-server:8080/ws",
|
||||
started_at: Time.current,
|
||||
player1_rating_before: 100,
|
||||
player2_rating_before: 100,
|
||||
player1_rating_change: 0,
|
||||
player2_rating_change: 0
|
||||
}.merge(attrs))
|
||||
end
|
||||
|
||||
it "returns only finished matches of the user ordered by finished_at desc" do
|
||||
older = build_match(status: :player1_won, finished_at: 2.days.ago)
|
||||
newer = build_match(player1: opponent, player2: user, status: :player2_won, finished_at: 1.day.ago)
|
||||
build_match(status: :ongoing, finished_at: nil)
|
||||
build_match(player1: opponent, player2: outsider, status: :player1_won, finished_at: Time.current)
|
||||
|
||||
expect(user.finished_matches.to_a).to eq([ newer, older ])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user