Maikel Linke
6317fe1b71
Disable RSpec monkey patching
2024-05-09 12:24:41 +10:00
Maikel Linke
3382a62eb5
Simplify BulkInvoiceJob by removing checks
...
The check for invoiceability is already done by the reflex triggering
the job. Let's DRY the code, save time and be more flexible in the
future.
Also checking the order of actually generated PDF pages.
2024-04-10 16:52:56 +10:00
Maikel Linke
91803953fe
Point connect app URL to new n8n server
2024-04-05 15:35:03 +11:00
Feruz Oripov
778ed46d50
cops
2024-03-16 19:14:18 +05:00
Feruz Oripov
9d919938f3
Group Order && OrderCycle related services and specs
2024-03-16 19:07:08 +05:00
Maikel Linke
bd6b0ddbf3
Enforce RSpec expect(..).not_to over to_not
2024-03-07 16:57:54 +11:00
Gaetan Craig-Riou
5fd36e7eed
Fix SubscriptionConfirmJob spec
...
Fix the payment stubbing, payment `process_offline!` was stubbed to
return true and payment `completed?` was also stubbed to return true.
`process_offline!` did not change the payment status in the database,
meaning that any call to 'order.pending_payments' after that would
return the payment which should have been processed offline, and
therefore completed. This created some unwanted side effect, resulting
in the test breaking.
2024-02-07 15:27:51 +11:00
Maikel Linke
1903747c0a
Send semantic id when connecting enterprise to app
...
It allows us to list enterprises from any OFN server, not just ofn-au.
The app could even accept any enterprise on any server providing its
data in the DFC format.
2023-12-21 15:09:09 +11:00
Maikel Linke
12e5a0d1e1
Query webhook to connect app
2023-12-15 11:50:04 +11:00
Maikel Linke
d841b1dae2
DRY feature activation in specs
...
It's simple this way and we have one place to add logic to when needed
(see next commit).
2023-11-17 13:17:27 +11:00
Maikel Linke
9f00817852
Use source of truth of url_options for report URLs
...
The ActionController options were not set in testing nor Sidekiq jobs.
The now used config is always set in config/application.rb.
2023-11-15 10:29:05 +01:00
Maikel Linke
ff6bcb113f
Create report file where the content is generated
...
In the past, we needed the report blob to know when the report has been
finished and uploaded. But not we use cable_ready to notify when the
report is done and we don't need the blob in the controller.
2023-11-15 10:29:05 +01:00
Mohamed ABDELLANI
c513eb5d9d
fix existing test
2023-10-30 19:43:57 +01:00
Maikel Linke
f61a2fa2bf
Rescue errors in report generation
...
So we can report them to Bugsnag and the job isn't marked as failed and
therefore won't repeat.
2023-10-12 16:01:52 +11:00
Neal Chambers
29df80945d
Fix Style/HashSyntax
2023-09-20 23:46:26 +09:00
Maikel Linke
eb204c9e5b
Style HashSyntax and reduce line length
2023-08-20 12:33:43 +09:00
Maikel Linke
e0acc25808
Fix subscription spec and add more coverage
...
One spec was only passing due to a bug. The setup wasn't complete and
despite the variant being unavailable in the order cycle it was reported
as being available. The order cycle has now been set up correctly.
Another spec was added to cover an edge case lead to a bug before this
pull request. When all subscription items where unavailable, all were
marked as available.
2023-08-20 12:33:43 +09:00
Rachel Arnould
1b1279aa56
Merge pull request #11192 from abdellani/bulk-invoice-printing
...
fix Bulk invoice printing/sending
2023-08-04 12:02:43 +02:00
Mohamed ABDELLANI
2fb112aecd
import BulkInvoiceJob#perform spec
...
1. remove the mocks
2. test the content of the generated pdf
3. remove the test of private methods
2023-08-03 14:53:40 +01:00
Mohamed ABDELLANI
687760046b
update the bulk invoice job to print invoiceable orders
...
the invoices feature is enabled:
1. we filter non-invoiceable order
2. for each invoiceable order, we check if we need to generate a new invoice or update the latest invoice
2023-08-03 14:52:45 +01:00
Neal Chambers
f47f6efcd0
Safely autocorrect Rails/DurationArithmetic
...
Inspecting 1481 files
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.C.................................................................................................................................................................................................................................................................................C..............C..........................................................C...............................C....C..........CC................................................................
Offenses:
app/services/create_order_cycle.rb:41:24: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
orders_close_at: Time.zone.now + 1.month
^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_closing_job_spec.rb:7:74: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
create(:order_cycle, automatic_notifications: true, orders_close_at: Time.zone.now - 1.minute)
^^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_closing_job_spec.rb:10:74: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
create(:order_cycle, automatic_notifications: true, orders_close_at: Time.zone.now + 1.minute)
^^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_closing_job_spec.rb:13:75: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
create(:order_cycle, automatic_notifications: false, orders_close_at: Time.zone.now - 1.minute)
^^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_opened_job_spec.rb:7:42: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
create(:order_cycle, orders_open_at: Time.zone.now - 1.hour)
^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_opened_job_spec.rb:13:42: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
create(:order_cycle, orders_open_at: Time.zone.now + 1.minute)
^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/permissions/order_spec.rb:26:58: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
completed_at: Time.zone.now - 1.year)
^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:21:71: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
allow(customer).to receive(:terms_and_conditions_accepted_at) { Time.zone.now - 1.week }
^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:22:59: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
allow(TermsOfServiceFile).to receive(:updated_at) { Time.zone.now - 2.weeks }
^^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:36:71: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
allow(customer).to receive(:terms_and_conditions_accepted_at) { Time.zone.now - 1.week }
^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:38:45: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
ActiveStorage::Blob.new(created_at: Time.zone.now - 2.weeks)
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:647:57: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
completed_at: Time.zone.now + 1.week,
^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:652:57: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
completed_at: Time.zone.now + 2.weeks,
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:661:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
oc3.update!(orders_close_at: Time.zone.now + 2.weeks)
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:662:39: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
oc3.update!(orders_open_at: Time.zone.now + 1.week)
^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/list_spec.rb:128:18: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
oc_open_at = Time.zone.now - 2.weeks
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/list_spec.rb:129:19: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
oc_close_at = Time.zone.now + 2.weeks
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:289:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
order2.update!(completed_at: Time.zone.now - 2.weeks)
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:290:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
order3.update!(completed_at: Time.zone.now - 3.weeks)
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:291:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
order4.update!(completed_at: Time.zone.now - 4.weeks)
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:292:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
order5.update!(completed_at: Time.zone.now - 5.weeks)
^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:113:31: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
let(:completed_at1) { Time.zone.now - 1500.hours } # 1500 hours in the past
^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:114:31: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
let(:completed_at2) { Time.zone.now - 1700.hours } # 1700 hours in the past
^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:115:33: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
let(:datetime_start1) { Time.zone.now - 1600.hours } # 1600 hours in the past
^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:116:33: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
let(:datetime_start2) { Time.zone.now - 1800.hours } # 1600 hours in the past
^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:117:30: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
let(:datetime_end) { Time.zone.now - 1400.hours } # 1400 hours in the past
^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/packing_report_spec.rb:13:26: C: [Corrected] Style/RedundantParentheses: Don't use parentheses around a method call.
let!(:open_datetime) { (1.month.ago).strftime("%Y-%m-%d 00:00") }
^^^^^^^^^^^^^
spec/system/admin/reports/packing_report_spec.rb:13:27: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
let!(:open_datetime) { (Time.zone.now - 1.month).strftime("%Y-%m-%d 00:00") }
^^^^^^^^^^^^^^^^^^^^^^^
1481 files inspected, 28 offenses detected, 28 offenses corrected
2023-08-01 22:50:21 +09:00
Neal Chambers
5b6f45931c
Fix Layout/LineLength
2023-06-26 13:06:56 +09:00
Maikel Linke
828b2f6f44
Replace too long list of arguments with keywords
...
Rubocop was complaining about too many arguments. But
`ApplicationJob#perform` needs all arguments handled in one call. While
we could allow the `perform` method generally to have more arguments,
there could be other methods called `perform` which should still be
scrutinised. Instead, it seems acceptable to me to have more arguments
as long as they are clearly named as keyword arguments. Rails uses this
a lot to document all options including their default values, for
example in Active Storage. It's better then bundling several arguments
in an undocumented hash just to reduce the number of given arguments.
And once we upgraded to Ruby 3.1, we can clean the method calls up as
well. `call(user: user)` becomes `call(user:)` without repetition.
2023-06-09 14:44:54 +10:00
Maikel Linke
3fa62ceccf
Simplify background report spec after rspec fix
...
The rspec-rails gem had an issue which was fixed in the last release.
Now we can remove my workaround and simplify the spec.
2023-05-29 13:25:44 +10:00
Maikel Linke
860fe85af9
Add report download link to email notification
...
I added a system spec to verify that the download link can be generated
within the mailer in a background job. ActiveStorage is a bit particular
when it comes to genererating URLs and depending on the situation it may
generate a redirect URL, a proxy URL or link directly to the storage.
But we want a redirect URL here.
2023-05-15 19:41:45 +02:00
Maikel Linke
cf5a8a26ce
Notify only about slow reports
...
It would be annoying to get an email for reports which display on the
screen immediately.
2023-05-15 19:41:45 +02:00
Maikel Linke
1f4af7f990
Send (dummy) email when background report is done
...
I'll fill it out in future commits.
2023-05-15 19:41:45 +02:00
Maikel Linke
915bd19d7b
Remove useless email test setup
...
We always deliver emails these days.
2023-04-20 12:18:04 +10:00
Maikel Linke
9998025687
Remove useless test header setup for emails
...
Once upon a time we needed a helper to set the `from` header of emails.
This is now set in the ApplicationMailer and not necessary any more.
2023-04-20 12:15:34 +10:00
Maikel Linke
ebb15781d5
Store report's filename within the blob
...
For future downloads outside the ReportsController.
2023-04-14 11:29:35 +10:00
Maikel Linke
028c4f4281
Simplify ReportJob by extracting model for result
...
This makes the code heaps simpler.
2023-04-14 11:29:35 +10:00
Maikel Linke
ef7dfa3b4f
Store reports with Active Storage
...
This will enable us to offer download links and clean them up
automatically.
2023-04-14 11:29:35 +10:00
Maikel Linke
12848acf21
Fix typo
2023-04-14 11:29:35 +10:00
Maikel Linke
4f751c2711
Leverage test helpers for enqueued jobs
...
The production code calls `perform_later` and it's better to do the same
in specs. Handy test helper allow us to control the execution.
Credit to https://github.com/cyrillefr .
2023-04-14 11:29:35 +10:00
Neal Chambers
940f806e5f
Fix Rubocop Layout/LineLength
2023-04-04 09:44:15 +09:00
David Cook
9d5ca2255b
Apply suggestions from code review
...
Co-authored-by: Maikel <maikel@email.org.au >
2023-03-07 15:38:50 +11:00
David Cook
3d81a6e280
Prevent creating duplicate webhook notifications [migration]
...
Using the clever concurrency testing borrowed from SubscriptionPlacementJob, but I thought a shorter pause time (just 100ms) would be sufficient.
I considered doing this with a new 'state' field (upcoming/open/close), but decided to keep it simple.
2023-03-07 15:38:50 +11:00
David Cook
739df4be01
4. OrderCycleOpenedJob triggers webhook
2023-03-07 15:38:50 +11:00
David Cook
de9546587a
Prevent webhooks to private addresses (SSRF) [add gem]
...
Best reviewed with whitespace hidden.
Unfortunately the spec isn't allowed in CI. But it worked on my environment, I promise.
I chose `xit` so that it doesn't run unnecessarily. Perhaps we could use `pending` instead, which would execute, and notify us if it suddenly started working one day. But I doubt it.
2023-03-07 15:38:50 +11:00
David Cook
9741935955
Raise error on server error
...
And thus retry later.
I tried to test that it actually retries, or ensuring the job remained in the queue to be retried, but couldn't get it to work.
2023-03-07 15:38:50 +11:00
David Cook
9d19f37fec
1. Add WebhookDeliveryJob
...
This job is responsible for delivering a payload for one webhook event only. It allows the action to run asynchronously (and not slow down the calling process).
2023-03-07 15:38:50 +11:00
Maikel Linke
a177f4c066
Add feature to render reports in the background
...
This is supposed to lower the memory footprint of all Puma workers. The
reports code will occupy needed memory in one Sidekiq worker instead of
in several Puma processes.
The current code doesn't limit the execution time yet. We either need a
way to terminate the report rendering after a while or send an email
with a link to access a rendered report.
2023-01-18 23:12:26 +00:00
Matt-Yorkley
54e1a8807a
Use mails_sent flag for tracking mails
2022-01-12 11:44:21 +00:00
Filipe
da703b2d95
Merge pull request #8615 from jibees/8559-enable-sort-orders-by-order-full-name
...
Enable sorting orders by order full name
2022-01-11 11:27:36 +00:00
Filipe
13d04c367d
Merge pull request #8636 from Matt-Yorkley/stripe-auth-emails
...
Stripe auth email sending; quick tidy up
2022-01-04 11:01:47 +00:00
Filipe
b256696544
Merge pull request #8549 from mkllnk/deprecate-stripe-connect
...
Hide old "Stripe" (StripeConnect) payment method type, keep new Stripe SCA
2021-12-23 21:33:42 +00:00
Matt-Yorkley
887879f410
Create job for handling of closing order cycles
2021-12-23 20:41:49 +01:00
Maikel Linke
60adaf3646
Disallow StripeConnect in subscriptions
2021-12-20 15:00:14 +11:00
Matt-Yorkley
68af9b6e80
Only email the hub about authorization required when necessary
...
This is needed in subscriptions, but in the backoffice the hub manager gets a notification in the UI, so the email is not needed.
2021-12-17 19:03:23 +00:00
Matt-Yorkley
438c205d87
Add basic test to SubscriptionConfirmJob spec
2021-12-17 12:38:09 +00:00