diff --git a/app/models/log.rb b/app/models/log.rb index a657d73f0..807b45c8b 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -137,13 +137,7 @@ class Log < ApplicationRecord end def creation_method - if bulk_upload_id.present? - "bulk upload" - elsif old_id.present? - "migrated" - else - "single log" - end + bulk_upload_id ? "bulk upload" : "single log" end private diff --git a/app/services/csv/sales_log_csv_service.rb b/app/services/csv/sales_log_csv_service.rb index 1f99d9d94..36acf8746 100644 --- a/app/services/csv/sales_log_csv_service.rb +++ b/app/services/csv/sales_log_csv_service.rb @@ -18,6 +18,9 @@ module Csv private ATTRIBUTES_OF_RELATED_OBJECTS = { + day: %i[saledate day], + month: %i[saledate month], + year: %i[saledate year], is_dpo: %i[created_by is_dpo], owning_organisation_name: %i[owning_organisation name], }.freeze @@ -34,6 +37,11 @@ module Csv "owning_organisation_name" => "owning_organisation_id", }.freeze + DATE_FIELDS = %w[ + created_at + updated_at + ] + def value(attribute, log) if ATTRIBUTES_OF_RELATED_OBJECTS.key? attribute.to_sym call_chain = ATTRIBUTES_OF_RELATED_OBJECTS[attribute.to_sym] @@ -44,6 +52,8 @@ module Csv attribute = FIELDS_ALWAYS_EXPORTED_AS_LABELS[attribute] field_value = log.send(attribute) get_label(field_value, attribute, log) + elsif DATE_FIELDS.include? attribute + log.send(attribute)&.iso8601 else value = log.public_send(attribute) case @export_type @@ -68,6 +78,7 @@ module Csv end ATTRIBUTE_MAPPINGS = { + "saledate" => %w[day month year], "exdate" => %w[exday exmonth exyear], "hodate" => %w[hoday homonth hoyear], "postcode_full" => %w[pcode1 pcode2], @@ -80,7 +91,7 @@ module Csv def sales_log_attributes ordered_questions = FormHandler.instance.ordered_sales_questions_for_all_years - ordered_questions.reject! { |q| q.id.match?(/((? [log_to_search.id.to_s]) @@ -555,6 +555,8 @@ RSpec.describe SalesLogsController, type: :request do end context "and export type is codes only" do + let(:codes_only) { true } + it "has a hidden field with the export type" do expect(page).to have_field("codes_only", type: "hidden", with: codes_only) end @@ -573,7 +575,7 @@ RSpec.describe SalesLogsController, type: :request do end end - describe "POST #email-csv", focus: true do + describe "POST #email-csv" do let(:other_organisation) { FactoryBot.create(:organisation) } let(:user) { FactoryBot.create(:user, :support) } let!(:sales_log) do diff --git a/spec/services/csv/sales_log_csv_service_spec.rb b/spec/services/csv/sales_log_csv_service_spec.rb index 851d034c1..31cb38672 100644 --- a/spec/services/csv/sales_log_csv_service_spec.rb +++ b/spec/services/csv/sales_log_csv_service_spec.rb @@ -2,8 +2,8 @@ require "rails_helper" RSpec.describe Csv::SalesLogCsvService do let(:form_handler_mock) { instance_double(FormHandler) } - let(:organisation) { create(:organisation, :id_one) } - let!(:log) { create(:sales_log, :completed, :id_one, owning_organisation: organisation) } + let(:organisation) { create(:organisation) } + let!(:log) { create(:sales_log, :completed, owning_organisation: organisation) } let(:service) { described_class.new(export_type: "labels") } let(:csv) { CSV.parse(service.prepare_csv(SalesLog.all)) }