diff --git a/lib/tasks/orders/import_orders_from_email.rake b/lib/tasks/orders/import_orders_from_email.rake index 2558836..1deb19e 100644 --- a/lib/tasks/orders/import_orders_from_email.rake +++ b/lib/tasks/orders/import_orders_from_email.rake @@ -16,7 +16,10 @@ namespace :orders do emails.each_with_index do |email,i| failed_orders = [] - Rails.logger.info("Processing email #{i}") + Rails.logger.info("Processing email #{i}") + + # We need this instantiated before we loop over emails + csv_source = nil email.message.attachments.each do |a| Rails.logger.info("Reading attachments") @@ -35,12 +38,12 @@ namespace :orders do Rails.logger.debug("Checking headers for determine csv source: #{headers}") if source_check_headers.eql?(uncommon_goods_headers) - @csv_source = 'uncommon_goods' + csv_source = 'uncommon_goods' elsif source_check_headers.eql?(generic_csv_headers) - @csv_source = 'generic' + csv_source = 'generic' end - raise UnknownOrderHeaders.new(source_check_headers) if @csv_source.nil? + raise UnknownOrderHeaders.new(source_check_headers) if csv_source.nil? # For each row in the csv, map to TPR params and create order while handling input errors csv.each do |row| @@ -48,7 +51,7 @@ namespace :orders do order = map_order_row(headers, row) Rails.logger.debug("Mapped csv rows: #{order}") begin - case @csv_source + case csv_source when 'uncommon_goods' order_params = parse_ucg_row(order) when 'generic' @@ -89,10 +92,9 @@ namespace :orders do end end email.read! - end - - if ENV['SEND_IMPORT_NOTIFICATION_EMAILS'] == true || emails.count != 0 - TaskHelper.notify_of_import(@csv_source, all_failed_orders) + if ENV['SEND_IMPORT_NOTIFICATION_EMAILS'] == true || emails.count != 0 + TaskHelper.notify_of_import(csv_source, all_failed_orders) + end end end diff --git a/lib/tasks/shipments/shipments_tasks.rake b/lib/tasks/shipments/shipments_tasks.rake index 47a9f0d..d82a132 100644 --- a/lib/tasks/shipments/shipments_tasks.rake +++ b/lib/tasks/shipments/shipments_tasks.rake @@ -20,7 +20,7 @@ namespace :shipments do if shippo_response['tracking_status'].nil? Rails.logger.error("Tracking status is nil") else - tracking_status = Shippo::Track.get(shipment.tracking_number, 'usps')['tracking_status']['status'] + tracking_status = shippo_response['tracking_status']['status'] # Update shipment status status_whitelist = %w{DELIVERED TRANSIT FAILURE RETURNED} if status_whitelist.include?(tracking_status) diff --git a/spec/fixtures/unknown_orders.csv b/spec/fixtures/unknown_orders.csv index f566648..ba9840b 100644 --- a/spec/fixtures/unknown_orders.csv +++ b/spec/fixtures/unknown_orders.csv @@ -1,3 +1,3 @@ -date_created,expected_ship_date,order_id,quantity,sku,vendor_name,item_name,customer_name,st_address_line1,st_address_line2,city,state,postal_code,shipping_upgrade,shipment_id,external_order_id,bill_last_name,bill_address1,bill_address2,bill_city,bill_zip,bill_phonenum,bill_code,giftmessage,radio +dat_created,expected_ship_date,order_id,quantity,sku,vendor_name,item_name,customer_name,st_address_line1,st_address_line2,city,state,postal_code,shipping_upgrade,shipment_id,external_order_id,bill_last_name,bill_address1,bill_address2,bill_city,bill_zip,bill_phonenum,bill_code,giftmessage,radio 07/25/2017 00:00:00,2017-11-15 00:00:00.0,7875723,1,468810000000,Centerline Labs LLC,The Public Radio  ,mar medrd,238 Fairview Rd,,Raleigh,NC,27608,Economy 3-8 Business Days
(Final delivery likely to be by US Postal Service),8581381,0,mtha,meford,2308 Fairview Road,,Raleigh,27608,919-781-5957,,NC,,Choose a station- FM Frequency (US only):/^91.5 07/25/2017 00:00:00,2017-11-15 00:00:00.0,7875751,1,468810000000,Centerline Labs LLC,The Public Radio  ,cathy mulvney,43 Green Valley Rd,,Wallingford,PA,19086-6050,Economy 3-8 Business Days
(Final delivery likely to be by US Postal Service),8581411,mulaney,43 Green Vally Rd,,Wallingford,19086-6050,610-608-7120,,PA,,Choose a station- FM Frequency (US only):/^100.1 \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index ce2747a..08365df 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -36,6 +36,7 @@ ENV['UNCOMMON_GOODS_INVOICING_EMAILS'] = 'orders@ucg.com,foo@bar.com' ENV['INVOICE_FROM_EMAIL_ADDRESS'] = 'billing@foo.com' ENV['EMAILS_TO_NOTIFY_OF_IMPORT'] = 'testnotify@foo.com' +ENV['EMAILS_TO_NOTIFY_OF_ORDERS'] = 'testnotify@foo.com' ENV['SQUARESPACE_API_KEY'] = 'test-key' ENV['SQUARESPACE_APP_NAME'] = 'test-app' ENV['TPR_ORDER_SOURCES'] = 'squarespace,kickstarter,uncommon_goods,other,WBEZ,warranty,KUER,LGA,WFAE,KERA,KXT' diff --git a/spec/tasks/orders/import_orders_from_email_spec.rb b/spec/tasks/orders/import_orders_from_email_spec.rb index b5ed9c7..91a99b7 100644 --- a/spec/tasks/orders/import_orders_from_email_spec.rb +++ b/spec/tasks/orders/import_orders_from_email_spec.rb @@ -24,7 +24,7 @@ let(:ucg_message) { double('message', attachments: [ucg_attachment]) } let(:ucg_email) { double('ucg_email', message: ucg_message) } - # UCG order fixture + # Unknown order fixture let(:unknown_fixture) { load_order_fixture('unknown_orders') } let(:unknown_attachment) { double('attachment', decoded: unknown_fixture) } let(:unknown_message) { double('message', attachments: [unknown_attachment]) } @@ -110,27 +110,14 @@ it 'raises a error when no order source can be matched' do expect_any_instance_of(TaskHelper).to receive(:find_unread_emails).and_return([unknown_email]) - expect_any_instance_of(TaskHelper).to receive(:create_order) expect(unknown_email).to receive(:message).and_return(unknown_message) expect(unknown_message).to receive(:attachments).and_return([unknown_attachment]) - expect(unknown_attachment).to receive(:decoded).and_return(unknown_fixture) - expect(unknown_email).to receive(:read!) + expect(unknown_attachment).to receive(:decoded).and_return(unknown_fixture) expect{ task.execute }.to raise_error(UnknownOrderHeaders) end context 'cleans up any stray orders, shipments, and radios when the order' do - # error_email_params = { - # body: "There were 3 orders with errors. See 'error' collumn of attached csv for details." - # add_file: 'some/error/csv' - # } - - # error_order_csv = CSV.parse(error_fixture) - # bad_address_params = error_order_csv[1] - # bad_frequency_params = error_order_csv[2] - # order_already_imported_params = error_order_csv[4] - # expect_any_instance_of(TaskHelper).to receive(:send_reply).with(error_email_params) - before(:each) do expect_any_instance_of(TaskHelper).to receive(:find_unread_emails).and_return([error_email]) expect_any_instance_of(TaskHelper).to receive(:send_email) diff --git a/spec/tasks/orders/import_orders_from_squarespace_spec.rb b/spec/tasks/orders/import_orders_from_squarespace_spec.rb index 53c094b..4b8305f 100644 --- a/spec/tasks/orders/import_orders_from_squarespace_spec.rb +++ b/spec/tasks/orders/import_orders_from_squarespace_spec.rb @@ -9,6 +9,7 @@ context 'from squarespace' do it 'import all pendings orders' do + ENV['SEND_IMPORT_NOTIFICATION_EMAILS_SQUARESPACE'] = 'true' api_key = ENV['SQUARESPACE_API_KEY'] app_name = ENV['SQUARESPACE_APP_NAME'] @@ -21,7 +22,6 @@ .and_return(stub_client) expect(stub_client).to receive(:get_orders).with('pending').and_return(stub_orders) - expect_any_instance_of(TaskHelper).to receive(:notify_of_import).with('squarespace', []) squarespace_order_fixture['result'].each do |test_order| shipping_address = test_order['shippingAddress'] diff --git a/spec/tasks/radios/send_radios_created_today_email_spec.rb b/spec/tasks/radios/send_radios_created_today_email_spec.rb index ae719e9..1dba33f 100644 --- a/spec/tasks/radios/send_radios_created_today_email_spec.rb +++ b/spec/tasks/radios/send_radios_created_today_email_spec.rb @@ -6,7 +6,7 @@ expect(task.prerequisites).to include "environment" end - it 'notifies ops@tpr of how many orders were imported that day' do + it 'notifies of how many orders were imported that day' do radio_count = 4 create(:radio_boxed) create_list(:radio_inital_order, 3) diff --git a/spec/tasks/shipments/shipments_task_spec.rb b/spec/tasks/shipments/shipments_task_spec.rb index 00e5803..411841e 100644 --- a/spec/tasks/shipments/shipments_task_spec.rb +++ b/spec/tasks/shipments/shipments_task_spec.rb @@ -25,7 +25,7 @@ shippo_response['tracking_status']['status'] = k # Mock the shippo call - expect(Shippo::Track).to receive(:get).with(shipments[0].tracking_number, 'usps').and_return(shippo_response).exactly(3).times + expect(Shippo::Track).to receive(:get).with(shipments[0].tracking_number, 'usps').and_return(shippo_response).exactly(6).times expect(Shippo::Track).to receive(:get).with(shipments[1].tracking_number, 'usps').and_return(shippo_response) task.execute