Skip to content

Commit

Permalink
added test for new_line_item_entries method in client model
Browse files Browse the repository at this point in the history
  • Loading branch information
Aniket Kaushik committed Apr 12, 2022
1 parent ba30b1b commit 4121543
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions spec/models/client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -154,5 +154,61 @@
end
end
end

describe "#new_line_item_entries" do
let(:company) { create(:company) }
let(:user) { create(:user) }
let(:client) { create(:client, company:) }
let(:project) { create(:project, client:) }
let(:project_member) { create(:project_member, project:, user:, hourly_rate: 5000) }

before do
create_list(:timesheet_entry, 5, user:, project:)
end

context "when no entries are selected" do
let(:selected_entries) { [] }

it "returns all the line item entries" do
result =
client.timesheet_entries.where(bill_status: :unbilled)
.joins("INNER JOIN project_members ON timesheet_entries.project_id = project_members.project_id
AND timesheet_entries.user_id = project_members.user_id")
.joins("INNER JOIN users ON project_members.user_id = users.id")
.select(
"timesheet_entries.id as id,
users.first_name as first_name,
users.last_name as last_name,
timesheet_entries.work_date as date,
timesheet_entries.note as description,
project_members.hourly_rate as rate,
timesheet_entries.duration as qty"
).where.not(id: selected_entries)
expect(client.new_line_item_entries(selected_entries)).to eq(result)
end
end

context "when some entries are selected" do
let(:selected_entries) { [ 1, 2 ] }

it "returns all the line item entries except the entries which are selected" do
result =
client.timesheet_entries.where(bill_status: :unbilled)
.joins("INNER JOIN project_members ON timesheet_entries.project_id = project_members.project_id
AND timesheet_entries.user_id = project_members.user_id")
.joins("INNER JOIN users ON project_members.user_id = users.id")
.select(
"timesheet_entries.id as id,
users.first_name as first_name,
users.last_name as last_name,
timesheet_entries.work_date as date,
timesheet_entries.note as description,
project_members.hourly_rate as rate,
timesheet_entries.duration as qty"
).where.not(id: selected_entries)
expect(client.new_line_item_entries(selected_entries)).to eq(result)
end
end
end
end
end

0 comments on commit 4121543

Please sign in to comment.