From daffa0ef6b00c00cde1c1d89cfbcf4e226161652 Mon Sep 17 00:00:00 2001 From: Joey Ruzevich Date: Sun, 24 Feb 2019 21:36:22 -0600 Subject: [PATCH 1/7] Draft Pull Request. Changes removed before push --- app/jobs/update_diaper_partner_job.rb | 16 ++++++++++++++-- app/services/diaper_partner_client.rb | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/jobs/update_diaper_partner_job.rb b/app/jobs/update_diaper_partner_job.rb index a822bfe7f3..10e65b7939 100644 --- a/app/jobs/update_diaper_partner_job.rb +++ b/app/jobs/update_diaper_partner_job.rb @@ -5,7 +5,19 @@ class UpdateDiaperPartnerJob def perform(partner_id) @partner = Partner.find(partner_id) + DiaperPartnerClient.post(@partner.attributes) if Flipper.enabled?(:email_active) - @partner.update(status: "Pending") - end + + #one line here that checks the post request to see if successful and if so pass to boolean and use that in the if/else below + #run partner app + #make post request and see what attributes are required for a successful response + #figure out what response looks like (in terms of how to read the body of text returned + #Validate post method throws error when unsuccessful post occurs + #or add something that does and then see where "post" method is being called and adjust accordingly +# if +# {@partner.update(status: "Pending")} +#else +# @partner.updates(status: ) +# +# end end diff --git a/app/services/diaper_partner_client.rb b/app/services/diaper_partner_client.rb index 592822d8fd..4a3f02d9e0 100644 --- a/app/services/diaper_partner_client.rb +++ b/app/services/diaper_partner_client.rb @@ -1,6 +1,6 @@ module DiaperPartnerClient def self.post(attributes) - return if Rails.env != "production" + return if Rails.env != "production" #did ryan change this from development? partner = { partner: { diaper_bank_id: attributes["organization_id"], From 8644c0a906a6f8bb9fffc610ddb019e80a8a5611 Mon Sep 17 00:00:00 2001 From: Joey Ruzevich Date: Thu, 28 Feb 2019 17:42:20 -0600 Subject: [PATCH 2/7] Minimal Changes --- app/jobs/update_diaper_partner_job.rb | 23 +++++++++------------ spec/jobs/update_diaper_partner_job_spec.rb | 18 ++++++++++++++++ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/app/jobs/update_diaper_partner_job.rb b/app/jobs/update_diaper_partner_job.rb index 10e65b7939..60cfae042d 100644 --- a/app/jobs/update_diaper_partner_job.rb +++ b/app/jobs/update_diaper_partner_job.rb @@ -5,19 +5,16 @@ class UpdateDiaperPartnerJob def perform(partner_id) @partner = Partner.find(partner_id) + @response = nil + + @response = DiaperPartnerClient.post(@partner.attributes) if Flipper.enabled?(:email_active) + + + if @response.value == Net::HTTPSuccess + @partner.update(status: "Pending") + else + @partner.updates(status: "Error") + end - DiaperPartnerClient.post(@partner.attributes) if Flipper.enabled?(:email_active) - #one line here that checks the post request to see if successful and if so pass to boolean and use that in the if/else below - #run partner app - #make post request and see what attributes are required for a successful response - #figure out what response looks like (in terms of how to read the body of text returned - #Validate post method throws error when unsuccessful post occurs - #or add something that does and then see where "post" method is being called and adjust accordingly -# if -# {@partner.update(status: "Pending")} -#else -# @partner.updates(status: ) -# -# end end diff --git a/spec/jobs/update_diaper_partner_job_spec.rb b/spec/jobs/update_diaper_partner_job_spec.rb index 8fb17a5e75..3931e4bdb2 100644 --- a/spec/jobs/update_diaper_partner_job_spec.rb +++ b/spec/jobs/update_diaper_partner_job_spec.rb @@ -16,5 +16,23 @@ UpdateDiaperPartnerJob.perform_async(partner.id) end + + it "checks status wasn't updated given unsuccessfull POST" do + expect(response).to eq(NET::HTTPSuccess) + end + + +#expect 2xx response code or NET::HTTPSuccess +#test to see that status WAS updated given post was successfull + + + + +#test to see that status WAS NOT updated given post was UNsuccessfull + +#?test to make sure no info sent to Partner app breaks Partner app? + + + end end From 93fd7f717b49762bb4f42794fd44debaddfd6fe4 Mon Sep 17 00:00:00 2001 From: Joey Ruzevich Date: Sun, 10 Mar 2019 21:28:46 -0500 Subject: [PATCH 3/7] IF to Case and Tests --- app/jobs/update_diaper_partner_job.rb | 22 +++++++++++++++------ spec/jobs/update_diaper_partner_job_spec.rb | 5 +++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/jobs/update_diaper_partner_job.rb b/app/jobs/update_diaper_partner_job.rb index 60cfae042d..4596b7fc60 100644 --- a/app/jobs/update_diaper_partner_job.rb +++ b/app/jobs/update_diaper_partner_job.rb @@ -5,16 +5,26 @@ class UpdateDiaperPartnerJob def perform(partner_id) @partner = Partner.find(partner_id) + ##NEW CODE FROM HERE DOWN @response = nil - + @responseCode = nil @response = DiaperPartnerClient.post(@partner.attributes) if Flipper.enabled?(:email_active) + @responseCode = @response.value - if @response.value == Net::HTTPSuccess - @partner.update(status: "Pending") - else - @partner.updates(status: "Error") - end + case @responseCode + when Net::HTTPSuccess + @partner.update(status: "Pending") + when Net::HTTPUnauthorized + @partner.update(status: "Error: Unauthorized Access") + when Net::HTTPClientError + @partner.update(status: "Error: Client Error") + when Net::HTTPServerError + @partner.update(status: "Error: Server Error") + else + @partner.update(status: "Error: Unkown Error") + end + end end diff --git a/spec/jobs/update_diaper_partner_job_spec.rb b/spec/jobs/update_diaper_partner_job_spec.rb index 3931e4bdb2..5717977ae8 100644 --- a/spec/jobs/update_diaper_partner_job_spec.rb +++ b/spec/jobs/update_diaper_partner_job_spec.rb @@ -17,8 +17,9 @@ UpdateDiaperPartnerJob.perform_async(partner.id) end - it "checks status wasn't updated given unsuccessfull POST" do - expect(response).to eq(NET::HTTPSuccess) +######### NEW CODE FROM HERE DOWN + it "checks status was updated given successfull POST" do + expect(responseCode).to eq(NET::HTTPSuccess) end From 5d1a07eb374dff84be342bcd797446f21e8313c9 Mon Sep 17 00:00:00 2001 From: Joey Ruzevich Date: Tue, 12 Mar 2019 20:19:46 -0500 Subject: [PATCH 4/7] Most Recent --- app/jobs/update_diaper_partner_job.rb | 22 +++---------- spec/jobs/update_diaper_partner_job_spec.rb | 36 ++++++++++++++++----- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/app/jobs/update_diaper_partner_job.rb b/app/jobs/update_diaper_partner_job.rb index 4596b7fc60..0bb02e6b00 100644 --- a/app/jobs/update_diaper_partner_job.rb +++ b/app/jobs/update_diaper_partner_job.rb @@ -6,25 +6,13 @@ class UpdateDiaperPartnerJob def perform(partner_id) @partner = Partner.find(partner_id) ##NEW CODE FROM HERE DOWN - @response = nil - @responseCode = nil @response = DiaperPartnerClient.post(@partner.attributes) if Flipper.enabled?(:email_active) - @responseCode = @response.value - - case @responseCode - when Net::HTTPSuccess - @partner.update(status: "Pending") - when Net::HTTPUnauthorized - @partner.update(status: "Error: Unauthorized Access") - when Net::HTTPClientError - @partner.update(status: "Error: Client Error") - when Net::HTTPServerError - @partner.update(status: "Error: Server Error") - else - @partner.update(status: "Error: Unkown Error") - end - + if @response&.value == Net::HTTPSuccess + @partner.update(status: "Pending") + else + @partner.update(status: "Error") + end end end diff --git a/spec/jobs/update_diaper_partner_job_spec.rb b/spec/jobs/update_diaper_partner_job_spec.rb index 5717977ae8..41f0e61205 100644 --- a/spec/jobs/update_diaper_partner_job_spec.rb +++ b/spec/jobs/update_diaper_partner_job_spec.rb @@ -18,22 +18,42 @@ end ######### NEW CODE FROM HERE DOWN - it "checks status was updated given successfull POST" do - expect(responseCode).to eq(NET::HTTPSuccess) +#test to see that status WAS updated given post was successfull + it "checks status given successfull POST" do + before do + @response&.value = Net::HTTPSuccess + end + expect(@partner.status).to eq("Pending") end +#2 tests to see that status WAS NOT updated given post was UNsuccessfull + it "checks status given unsuccessfull POST(Client Error)" do + before do + @response&.value = Net::HTTPClientError + end + expect(@partner.status).to eq("Error") + end -#expect 2xx response code or NET::HTTPSuccess -#test to see that status WAS updated given post was successfull - + it "checks status given unsuccessfull POST(Server Error)" do + before do + @response&.value = Net::HTTPServerError + end + expect(@partner.status).to eq("Error") + end -#test to see that status WAS NOT updated given post was UNsuccessfull #?test to make sure no info sent to Partner app breaks Partner app? - - end end + + + + + +## 2 tests that mock DiaperPartnerClient and responds with 1)successfull and 2)unsuccessfull +## test the response of the entire job(should be @partner status) + +##factory that creates fake partner which would allow complete controll over both inputs which would make the test more reliable and repeatable From 47b2928b7cb2c337f5a249c02c07ac48bef840b6 Mon Sep 17 00:00:00 2001 From: Joey Ruzevich Date: Tue, 12 Mar 2019 21:12:47 -0500 Subject: [PATCH 5/7] Certifies partner status set to Pending only when successfull post request --- app/jobs/update_diaper_partner_job.rb | 7 ++- app/services/diaper_partner_client.rb | 2 +- spec/jobs/update_diaper_partner_job_spec.rb | 55 ++++++++++----------- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/app/jobs/update_diaper_partner_job.rb b/app/jobs/update_diaper_partner_job.rb index 0bb02e6b00..8c6fdd2a73 100644 --- a/app/jobs/update_diaper_partner_job.rb +++ b/app/jobs/update_diaper_partner_job.rb @@ -5,14 +5,13 @@ class UpdateDiaperPartnerJob def perform(partner_id) @partner = Partner.find(partner_id) - ##NEW CODE FROM HERE DOWN + # #NEW CODE FROM HERE DOWN @response = DiaperPartnerClient.post(@partner.attributes) if Flipper.enabled?(:email_active) if @response&.value == Net::HTTPSuccess - @partner.update(status: "Pending") + @partner.update(status: "Pending") else - @partner.update(status: "Error") + @partner.update(status: "Error") end - end end diff --git a/app/services/diaper_partner_client.rb b/app/services/diaper_partner_client.rb index 4a3f02d9e0..b289a0710a 100644 --- a/app/services/diaper_partner_client.rb +++ b/app/services/diaper_partner_client.rb @@ -1,6 +1,6 @@ module DiaperPartnerClient def self.post(attributes) - return if Rails.env != "production" #did ryan change this from development? + return if Rails.env != "production" # did ryan change this from development? partner = { partner: { diaper_bank_id: attributes["organization_id"], diff --git a/spec/jobs/update_diaper_partner_job_spec.rb b/spec/jobs/update_diaper_partner_job_spec.rb index 41f0e61205..0be4aba665 100644 --- a/spec/jobs/update_diaper_partner_job_spec.rb +++ b/spec/jobs/update_diaper_partner_job_spec.rb @@ -17,43 +17,38 @@ UpdateDiaperPartnerJob.perform_async(partner.id) end -######### NEW CODE FROM HERE DOWN -#test to see that status WAS updated given post was successfull - it "checks status given successfull POST" do + describe "Responses >" do + before do + allow(Flipper).to receive(:enabled?) { true } + @partner = create(:partner) + end + context "with a successful POST response" do before do - @response&.value = Net::HTTPSuccess + response = double("Response", value: Net::HTTPSuccess) + allow(DiaperPartnerClient).to receive(:post).and_return(response) end - expect(@partner.status).to eq("Pending") - end -#2 tests to see that status WAS NOT updated given post was UNsuccessfull - it "checks status given unsuccessfull POST(Client Error)" do - before do - @response&.value = Net::HTTPClientError + it "sets the partner status to pending" do + expect do + UpdateDiaperPartnerJob.perform_async(@partner.id) + @partner.reload + end.to change { @partner.status }.to("Pending") end - expect(@partner.status).to eq("Error") - end + end - it "checks status given unsuccessfull POST(Server Error)" do + context "with a unsuccessful POST response" do before do - @response&.value = Net::HTTPServerError + response = double("Response", value: nil) + allow(DiaperPartnerClient).to receive(:post).and_return(response) end - expect(@partner.status).to eq("Error") - end - - - - -#?test to make sure no info sent to Partner app breaks Partner app? + it "sets the partner status to error" do + expect do + UpdateDiaperPartnerJob.perform_async(@partner.id) + @partner.reload + end.to change { @partner.status }.to("Error") + end + end + end end end - - - - - -## 2 tests that mock DiaperPartnerClient and responds with 1)successfull and 2)unsuccessfull -## test the response of the entire job(should be @partner status) - -##factory that creates fake partner which would allow complete controll over both inputs which would make the test more reliable and repeatable From a5d2d8525950b32c292e31484bb5dcd49b425535 Mon Sep 17 00:00:00 2001 From: Joey Ruzevich Date: Tue, 12 Mar 2019 21:38:04 -0500 Subject: [PATCH 6/7] Removes unnecessary test --- app/jobs/update_diaper_partner_job.rb | 1 - spec/jobs/update_diaper_partner_job_spec.rb | 8 -------- 2 files changed, 9 deletions(-) diff --git a/app/jobs/update_diaper_partner_job.rb b/app/jobs/update_diaper_partner_job.rb index 8c6fdd2a73..5054ca7483 100644 --- a/app/jobs/update_diaper_partner_job.rb +++ b/app/jobs/update_diaper_partner_job.rb @@ -5,7 +5,6 @@ class UpdateDiaperPartnerJob def perform(partner_id) @partner = Partner.find(partner_id) - # #NEW CODE FROM HERE DOWN @response = DiaperPartnerClient.post(@partner.attributes) if Flipper.enabled?(:email_active) if @response&.value == Net::HTTPSuccess diff --git a/spec/jobs/update_diaper_partner_job_spec.rb b/spec/jobs/update_diaper_partner_job_spec.rb index 0be4aba665..8bb9b04482 100644 --- a/spec/jobs/update_diaper_partner_job_spec.rb +++ b/spec/jobs/update_diaper_partner_job_spec.rb @@ -1,13 +1,5 @@ RSpec.describe UpdateDiaperPartnerJob, job: true do describe ".perform_async" do - it "updates partner status to Pending" do - partner = create(:partner) - - UpdateDiaperPartnerJob.perform_async(partner.id) - - expect(partner.reload.status).to eq("Pending") - end - it "posts via DiaperPartnerClient" do partner = create(:partner) allow(Flipper).to receive(:enabled?) { true } From 42a03e56438e858ce3b4feb90391e3bb57792a0b Mon Sep 17 00:00:00 2001 From: Joey Ruzevich Date: Tue, 12 Mar 2019 22:24:25 -0500 Subject: [PATCH 7/7] Rebases against master --- Gemfile.lock | 6 +++--- db/schema.rb | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3e39ec1bf4..55eb5b91ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -234,7 +234,7 @@ GEM mimemagic (0.3.2) mini_magick (4.9.2) mini_mime (1.0.1) - mini_portile2 (2.3.0) + mini_portile2 (2.4.0) minitest (5.11.3) momentjs-rails (2.20.1) railties (>= 3.1) @@ -245,8 +245,8 @@ GEM net-ssh (5.0.2) newrelic_rpm (5.6.0.349) nio4r (2.3.1) - nokogiri (1.8.5) - mini_portile2 (~> 2.3.0) + nokogiri (1.10.1) + mini_portile2 (~> 2.4.0) notiffany (0.1.1) nenv (~> 0.1) shellany (~> 0.0) diff --git a/db/schema.rb b/db/schema.rb index 2b7b01217d..8434d0e340 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -222,7 +222,6 @@ t.string "zipcode" t.float "latitude" t.float "longitude" - t.text "default_email_text" t.index ["latitude", "longitude"], name: "index_organizations_on_latitude_and_longitude" t.index ["short_name"], name: "index_organizations_on_short_name" end