add Match model

This commit is contained in:
2026-11-03 16:14:10 +03:00
parent 1cadf00280
commit f48094cd55
6 changed files with 236 additions and 1 deletions
+29
View File
@@ -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