2025-11-22 18:46:44 +01:00
|
|
|
require 'rails_helper'
|
|
|
|
|
|
2026-03-20 18:13:12 +01:00
|
|
|
describe Mood do
|
|
|
|
|
let(:user) { create(:user) }
|
|
|
|
|
let(:mode) { create(:mode, user: user) }
|
|
|
|
|
|
|
|
|
|
subject { build(:mood, user: user, mode: mode, recorded_at: DateTime.parse("2026-01-15 10:00:00")) }
|
|
|
|
|
|
|
|
|
|
it { is_expected.to be_valid }
|
|
|
|
|
|
|
|
|
|
describe "validations" do
|
|
|
|
|
it "is invalid without a user" do
|
|
|
|
|
subject.user = nil
|
|
|
|
|
expect(subject).not_to be_valid
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "is invalid without a mode" do
|
|
|
|
|
subject.mode = nil
|
|
|
|
|
expect(subject).not_to be_valid
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "is invalid without a recorded_at" do
|
|
|
|
|
subject.recorded_at = nil
|
|
|
|
|
expect(subject).not_to be_valid
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "uniqueness per day and user" do
|
|
|
|
|
it "is invalid if a mood already exists for the same day and user" do
|
|
|
|
|
create(:mood, user: user, mode: mode, recorded_at: DateTime.parse("2026-01-15 18:00:00"))
|
|
|
|
|
expect(subject).not_to be_valid
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "is valid if the same day exists but for a different user" do
|
|
|
|
|
other_user = create(:user)
|
|
|
|
|
other_mode = create(:mode, user: other_user)
|
|
|
|
|
create(:mood, user: other_user, mode: other_mode, recorded_at: DateTime.parse("2026-01-15 10:00:00"))
|
|
|
|
|
expect(subject).to be_valid
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "is valid if the same user has a mood on a different day" do
|
|
|
|
|
create(:mood, user: user, mode: mode, recorded_at: DateTime.parse("2026-01-14 10:00:00"))
|
|
|
|
|
expect(subject).to be_valid
|
|
|
|
|
end
|
2025-11-22 18:46:44 +01:00
|
|
|
end
|
|
|
|
|
end
|