mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-10-31 11:21:06 -04:00
- Implemented event description logic for finished jobs in EventHelper. - Created a new partial for finished job descriptions. - Updated TimelineService to include finished jobs in event queries. - Enhanced specs for event descriptions and timeline service to cover finished jobs.
61 lines
2.1 KiB
Ruby
61 lines
2.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe TimelineService do
|
|
let(:member) { create(:member) }
|
|
let(:friend) { create(:member) }
|
|
|
|
let!(:friend_planting) { create(:planting, owner: friend, planted_at: 1.day.ago) }
|
|
let!(:friend_harvest) { create(:harvest, owner: friend, harvested_at: 2.days.ago) }
|
|
|
|
let!(:my_seeds) { create(:seed, owner: member, created_at: 4.days.ago) }
|
|
let!(:my_post) { create(:post, author: member, created_at: 3.months.ago) }
|
|
|
|
describe 'a friend you followed' do
|
|
subject { TimelineService.followed_query(member) }
|
|
|
|
before { friend.followers << member }
|
|
|
|
it { expect(subject.first.id).to eq friend_planting.id }
|
|
it { expect(subject.first.event_type).to eq 'planting' }
|
|
it { expect(subject.second.id).to eq friend_harvest.id }
|
|
it { expect(subject.second.event_type).to eq 'harvest' }
|
|
end
|
|
|
|
describe 'your own timeline' do
|
|
subject { TimelineService.member_query(member) }
|
|
|
|
it { expect(subject.first.id).to eq my_seeds.id }
|
|
it { expect(subject.first.event_type).to eq 'seed' }
|
|
it { expect(subject.second.id).to eq my_post.id }
|
|
it { expect(subject.second.event_type).to eq 'post' }
|
|
|
|
context 'with a job due later' do
|
|
let!(:my_job) { create(:job, owner: member, due_date: 3.months.from_now, created_at: 5.days.ago) }
|
|
|
|
it { expect(subject.second.id).to eq my_job.id }
|
|
end
|
|
|
|
context 'with a finished job' do
|
|
let!(:my_job) { create(:job, owner: member, finished: true, created_at: 5.days.ago) }
|
|
|
|
it { expect(subject.first.event_type).to eq 'job_finished' }
|
|
end
|
|
end
|
|
|
|
describe "everyone's timeline" do
|
|
subject { TimelineService.query }
|
|
|
|
it { expect(subject[0].id).to eq friend_planting.id }
|
|
it { expect(subject[0].event_type).to eq 'planting' }
|
|
it { expect(subject[1].id).to eq friend_harvest.id }
|
|
it { expect(subject[1].event_type).to eq 'harvest' }
|
|
|
|
it { expect(subject[2].id).to eq my_seeds.id }
|
|
it { expect(subject[2].event_type).to eq 'seed' }
|
|
it { expect(subject[3].id).to eq my_post.id }
|
|
it { expect(subject[3].event_type).to eq 'post' }
|
|
end
|
|
end
|