Fix Plantings > CSV output (#3616)

* Fix crash

* Add test coverage and index more

* Fix test
This commit is contained in:
Daniel O'Connor authored and GitHub committed 2024-02-04 15:09:30 +10:30
1 parent 49284eb169
commit 50ba0f08b1
4 files changed
+66 -15

No files matched your search

+4 -1
View File
@@ -30,6 +30,8 @@ module SearchPlantings
quantity:,
sunniness:,
garden_id:,
garden_name: garden&.name,
description:,
first_harvest_predicted_at:,
finish_predicted_at:,
@@ -53,7 +55,8 @@ module SearchPlantings
harvests_count:,
# timestamps
created_at: created_at.to_i
created_at: created_at.to_i,
updated_at: updated_at.to_i
}
end
+2 -2
View File
@@ -58,10 +58,10 @@ csv.headers *all_headers
end
csv.cell :plantings_count, c.plantings_count || 0
csv.cell :seeds_count, c.seeds.size
csv.cell :seeds_count, c.seeds.size[]
csv.cell :harvests_count, c.harvests.size
# Sunniness
# Sunniness
sunniness = c.sunniness
sunniness_rec = sunniness.max_by{|k,v| v}
+13 -12
View File
@@ -18,31 +18,32 @@ csv.headers :id,
:license
@plantings.each do |p|
puts p.inspect
csv.row p do |csv, planting|
csv.cell :id
csv.cell :growstuff_url, planting_url(p)
csv.cell :growstuff_url, planting_url(p.slug)
csv.cell :owner_id, p.owner.id
csv.cell :owner_name, p.owner.to_s
csv.cell :owner_id, p.owner_id
csv.cell :owner_name, p.owner_login_name
csv.cell :garden_id, p.garden.id
csv.cell :garden_name, p.garden.to_s
csv.cell :garden_id, p.garden_id
csv.cell :garden_name, p.garden_name
csv.cell :crop_id, p.crop.id
csv.cell :crop_name, p.crop.to_s
csv.cell :crop_id, p.crop_id
csv.cell :crop_name, p.crop_name
csv.cells :quantity, :planted_from, :sunniness
csv.cell :date_planted, p.planted_at ? p.planted_at.to_fs(:db) : ''
csv.cell :date_planted, p.planted_at ? p.planted_at : ''
csv.cell :finished
csv.cell :date_finished, p.finished_at ? p.finished_at.to_fs(:db) : ''
csv.cell :date_finished, p.finished_at ? p.finished_at : ''
csv.cell :description
csv.cell :description, p.description
csv.cell :date_added, p.created_at.to_fs(:db)
csv.cell :last_modified, p.updated_at.to_fs(:db)
csv.cell :date_added, Time.at(p.created_at).to_fs(:db)
csv.cell :last_modified, Time.at(p.updated_at).to_fs(:db)
csv.cell :license, "CC-BY-SA Growstuff http://growstuff.org/"
+47
View File
@@ -50,5 +50,52 @@ describe "Plantings" do
response.status.should be(200)
end
end
describe "GET /members/x/plantings.csv" do
let(:expected_headers) do
[
"Id",
"Growstuff url",
"Owner",
"Owner name",
"Garden",
"Garden name",
"Crop",
"Crop name",
"Quantity",
"Planted from",
"Sunniness",
"Date planted",
"Finished",
"Date finished",
"Description",
"Date added",
"Last modified",
"License"
]
end
it "works!" do
get member_plantings_path(@member, format: "csv")
response.status.should be(200)
data = CSV.parse(response.body, headers: true)
expect(data.headers).to eq expected_headers
expect(data[1]["Crop name"]).to eq @predictable_planting.crop.name
expect(data[1]["Owner name"]).to eq @member.to_s
expect(data[1]["Garden name"]).to eq @predictable_planting.garden.to_s
expect(data[1]["Description"]).to eq @predictable_planting.description
expect(data[1]["Date planted"]).to eq @predictable_planting.planted_at.to_fs(:db)
expect(data[1]["Quantity"].to_i).to eq @predictable_planting.quantity
expect(data[1]["Sunniness"]).to eq @predictable_planting.sunniness
expect(data[1]["Planted from"]).to eq @predictable_planting.planted_from
expect(data[1]["Date added"]).to eq @predictable_planting.created_at.to_fs(:db)
expect(data[1]["License"]).to eq "CC-BY-SA Growstuff http://growstuff.org/"
expect(data.count).to eq 6
end
end
end
end