defra_ruby_mocks 2.4.2 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/defra_ruby_mocks/govpay_controller.rb +33 -3
  3. data/app/services/defra_ruby_mocks/companies_house_service.rb +1 -3
  4. data/app/services/defra_ruby_mocks/govpay_create_payment_service.rb +20 -20
  5. data/app/services/defra_ruby_mocks/govpay_get_payment_service.rb +50 -50
  6. data/app/services/defra_ruby_mocks/govpay_refund_details_service.rb +6 -6
  7. data/app/services/defra_ruby_mocks/govpay_request_refund_service.rb +4 -4
  8. data/config/routes.rb +6 -1
  9. data/lib/defra_ruby_mocks/version.rb +1 -1
  10. data/lib/defra_ruby_mocks.rb +0 -6
  11. metadata +12 -209
  12. data/app/jobs/defra_ruby_mocks/application_job.rb +0 -6
  13. data/app/jobs/defra_ruby_mocks/govpay_payment_callback_job.rb +0 -17
  14. data/spec/defra_ruby_mocks_spec.rb +0 -44
  15. data/spec/dummy/README.rdoc +0 -28
  16. data/spec/dummy/Rakefile +0 -6
  17. data/spec/dummy/app/assets/javascripts/application.js +0 -13
  18. data/spec/dummy/app/assets/stylesheets/application.css +0 -15
  19. data/spec/dummy/app/controllers/application_controller.rb +0 -5
  20. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  21. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  22. data/spec/dummy/bin/bundle +0 -3
  23. data/spec/dummy/bin/rails +0 -4
  24. data/spec/dummy/bin/rake +0 -4
  25. data/spec/dummy/bin/setup +0 -29
  26. data/spec/dummy/config/application.rb +0 -27
  27. data/spec/dummy/config/boot.rb +0 -5
  28. data/spec/dummy/config/environment.rb +0 -5
  29. data/spec/dummy/config/environments/development.rb +0 -38
  30. data/spec/dummy/config/environments/production.rb +0 -76
  31. data/spec/dummy/config/environments/test.rb +0 -42
  32. data/spec/dummy/config/initializers/assets.rb +0 -11
  33. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  34. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -3
  35. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  36. data/spec/dummy/config/initializers/inflections.rb +0 -16
  37. data/spec/dummy/config/initializers/mime_types.rb +0 -4
  38. data/spec/dummy/config/initializers/session_store.rb +0 -3
  39. data/spec/dummy/config/initializers/to_time_preserves_timezone.rb +0 -10
  40. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -9
  41. data/spec/dummy/config/locales/en.yml +0 -23
  42. data/spec/dummy/config/routes.rb +0 -4
  43. data/spec/dummy/config/secrets.yml +0 -22
  44. data/spec/dummy/config.ru +0 -4
  45. data/spec/dummy/log/test.log +0 -2013
  46. data/spec/dummy/public/404.html +0 -67
  47. data/spec/dummy/public/422.html +0 -67
  48. data/spec/dummy/public/500.html +0 -66
  49. data/spec/dummy/public/favicon.ico +0 -0
  50. data/spec/examples.txt +0 -68
  51. data/spec/fixtures/files/govpay/create_payment_created_response.json +0 -24
  52. data/spec/fixtures/files/govpay/create_payment_error_response.json +0 -5
  53. data/spec/fixtures/files/govpay/get_payment_response_cancelled.json +0 -61
  54. data/spec/fixtures/files/govpay/get_payment_response_created.json +0 -73
  55. data/spec/fixtures/files/govpay/get_payment_response_error.json +0 -5
  56. data/spec/fixtures/files/govpay/get_payment_response_failure.json +0 -9
  57. data/spec/fixtures/files/govpay/get_payment_response_not_found.json +0 -4
  58. data/spec/fixtures/files/govpay/get_payment_response_submitted.json +0 -75
  59. data/spec/fixtures/files/govpay/get_payment_response_success.json +0 -62
  60. data/spec/lib/configuration_spec.rb +0 -75
  61. data/spec/rails_helper.rb +0 -46
  62. data/spec/requests/company_spec.rb +0 -91
  63. data/spec/requests/govpay_spec.rb +0 -170
  64. data/spec/requests/officers_spec.rb +0 -37
  65. data/spec/services/companies_house_service_spec.rb +0 -69
  66. data/spec/services/govpay_create_payment_service_spec.rb +0 -44
  67. data/spec/services/govpay_get_payment_service_spec.rb +0 -30
  68. data/spec/services/govpay_refund_details_service_spec.rb +0 -58
  69. data/spec/services/govpay_request_refund_service_spec.rb +0 -31
  70. data/spec/spec_helper.rb +0 -86
  71. data/spec/support/helpers/configuration.rb +0 -17
  72. data/spec/support/helpers/helpers.rb +0 -13
  73. data/spec/support/helpers/waste_carriers_engine.rb +0 -10
  74. data/spec/support/helpers/xml_matchers.rb +0 -19
  75. data/spec/support/pry.rb +0 -7
  76. data/spec/support/simplecov.rb +0 -17
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DefraRubyMocks
4
- RSpec.describe Configuration do
5
- let(:subject) { described_class.new }
6
-
7
- describe "#enable=" do
8
- context "when passed true as boolean" do
9
- it "sets enable to 'true'" do
10
- subject.enable = true
11
-
12
- expect(subject.enabled?).to be(true)
13
- end
14
- end
15
-
16
- context "when passed false as a boolean" do
17
- it "sets enable to 'false'" do
18
- subject.enable = false
19
-
20
- expect(subject.enabled?).to be(false)
21
- end
22
- end
23
-
24
- context "when passed true as string" do
25
- it "sets enable to 'true'" do
26
- subject.enable = "true"
27
-
28
- expect(subject.enabled?).to be(true)
29
- end
30
- end
31
-
32
- context "when passed false as a string" do
33
- it "sets enable to 'false'" do
34
- subject.enable = "false"
35
-
36
- expect(subject.enabled?).to be(false)
37
- end
38
- end
39
- end
40
-
41
- describe "#delay=" do
42
- context "when passed 200 as an integer" do
43
- it "sets delay to 200" do
44
- subject.delay = 200
45
-
46
- expect(subject.delay).to be(200)
47
- end
48
- end
49
-
50
- context "when passed 200 as a string" do
51
- it "sets delay to 200" do
52
- subject.delay = "200"
53
-
54
- expect(subject.delay).to be(200)
55
- end
56
- end
57
-
58
- context "when passed a string that's not a number" do
59
- it "sets delay to its default" do
60
- subject.delay = ""
61
-
62
- expect(subject.delay).to be(Configuration::DEFAULT_DELAY)
63
- end
64
- end
65
-
66
- context "when passed nil" do
67
- it "sets delay to its default" do
68
- subject.delay = nil
69
-
70
- expect(subject.delay).to be(Configuration::DEFAULT_DELAY)
71
- end
72
- end
73
- end
74
- end
75
- end
data/spec/rails_helper.rb DELETED
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This file is copied to spec/ when you run 'rails generate rspec:install'
4
- require "spec_helper"
5
- ENV["RAILS_ENV"] ||= "test"
6
- require File.expand_path("dummy/config/environment", __dir__)
7
-
8
- # Prevent database truncation if the environment is production
9
- abort("The Rails environment is running in production mode!") if Rails.env.production?
10
- require "rspec/rails"
11
- # Add additional requires below this line. Rails is not loaded until this point!
12
-
13
- # Requires supporting ruby files with custom matchers and macros, etc, in
14
- # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
15
- # run as spec files by default. This means that files in spec/support that end
16
- # in _spec.rb will both be required and run as specs, causing the specs to be
17
- # run twice. It is recommended that you do not name files matching this glob to
18
- # end with _spec.rb. You can configure this pattern with the --pattern
19
- # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
20
- #
21
- # We make an exception for simplecov because that will already have been
22
- # required and run at the very top of spec_helper.rb
23
- support_files = Dir["./spec/support/**/*.rb"].reject { |file| file == "./spec/support/simplecov.rb" }
24
- support_files.each { |f| require f }
25
-
26
- RSpec.configure do |config|
27
- # RSpec Rails can automatically mix in different behaviours to your tests
28
- # based on their file location, for example enabling you to call `get` and
29
- # `post` in specs under `spec/controllers`.
30
- #
31
- # You can disable this behaviour by removing the line below, and instead
32
- # explicitly tag your specs with their type, e.g.:
33
- #
34
- # RSpec.describe UsersController, :type => :controller do
35
- # # ...
36
- # end
37
- #
38
- # The different available types are documented in the features, such as in
39
- # https://relishapp.com/rspec/rspec-rails/docs
40
- config.infer_spec_type_from_file_location!
41
-
42
- # Filter lines from Rails gems in backtraces.
43
- config.filter_rails_from_backtrace!
44
- # arbitrary gems may also be filtered via:
45
- # config.filter_gems_from_backtrace("gem name")
46
- end
@@ -1,91 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
- RSpec.describe "Company", type: :request do
7
- after(:all) { Helpers::Configuration.reset_for_tests }
8
-
9
- let(:path) { "/defra_ruby_mocks/company" }
10
-
11
- context "when mocks are enabled" do
12
- before(:each) { Helpers::Configuration.prep_for_tests }
13
-
14
- context "when the company number is 99999999 for not found" do
15
- let(:company_number) { "99999999" }
16
-
17
- it "returns a JSON response with a code of 404" do
18
- get "#{path}/#{company_number}"
19
- content = JSON.parse(response.body)
20
-
21
- expect(response.media_type).to eq("application/json")
22
- expect(response.code).to eq("404")
23
- expect(content).to include("errors")
24
- end
25
- end
26
-
27
- context "when the company number is from the 'specials' list" do
28
- let(:company_number) { "05868270" }
29
-
30
- it "returns a JSON response with a 200 code and a status that isn't 'active'" do
31
- get "#{path}/#{company_number}"
32
-
33
- expect(response.media_type).to eq("application/json")
34
- expect(response.code).to eq("200")
35
- expect(JSON.parse(response.body).deep_symbolize_keys).to eq(
36
- company_name: "Acme Industries",
37
- company_status: "dissolved",
38
- type: "ltd",
39
- registered_office_address: {
40
- address_line_1: "10 Downing St",
41
- address_line_2: "Horizon House",
42
- locality: "Bristol",
43
- postal_code: "BS1 5AH"
44
- }
45
- )
46
- end
47
- end
48
-
49
- context "when the company number is not from the 'specials' list" do
50
- context "and it is valid" do
51
- let(:company_number) { "SC247974" }
52
-
53
- it "returns a JSON response with a 200 code and a status of 'active'" do
54
- get "#{path}/#{company_number}"
55
- company_status = JSON.parse(response.body)["company_status"]
56
- company_type = JSON.parse(response.body)["type"]
57
-
58
- expect(response.media_type).to eq("application/json")
59
- expect(response.code).to eq("200")
60
- expect(company_status).to eq("active")
61
- expect(company_type).to eq("ltd")
62
- end
63
- end
64
-
65
- context "and it is not valid" do
66
- let(:company_number) { "foo" }
67
-
68
- it "returns a JSON response with a 404 code" do
69
- get "#{path}/#{company_number}"
70
- content = JSON.parse(response.body)
71
-
72
- expect(response.media_type).to eq("application/json")
73
- expect(response.code).to eq("404")
74
- expect(content).to include("errors")
75
- end
76
- end
77
- end
78
- end
79
-
80
- context "when mocks are disabled" do
81
- before(:all) { DefraRubyMocks.configuration.enable = false }
82
-
83
- let(:company_number) { "SC247974" }
84
-
85
- it "cannot load the page" do
86
- expect { get "#{path}/#{company_number}" }.to raise_error(ActionController::RoutingError)
87
- end
88
- end
89
-
90
- end
91
- end
@@ -1,170 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
- RSpec.describe "Govpay", type: :request do
7
- after(:all) { Helpers::Configuration.reset_for_tests }
8
-
9
- context "when mocks are enabled" do
10
- before(:each) do
11
- Helpers::Configuration.prep_for_tests
12
- DefraRubyMocks.configure do |config|
13
- config.govpay_domain = "http://localhost:3000/defra_ruby_mocks"
14
- end
15
-
16
- end
17
-
18
- context "#create_payment" do
19
- let(:path) { "/defra_ruby_mocks/govpay/v1/payments" }
20
- # Use an example from the Govpay documentation
21
- let(:payment_request) do
22
- {
23
- amount: 14_500,
24
- reference: "12345",
25
- description: "Pay your council tax",
26
- return_url: "https://your.service.gov.uk/completed"
27
- }
28
- end
29
-
30
- context "when the request is valid" do
31
-
32
- it "returns a valid success response" do
33
- post path, params: payment_request.as_json
34
-
35
- expect(response.media_type).to eq("application/json")
36
- expect(response.code).to eq("200")
37
- response_json = JSON.parse(response.body)
38
- expect(response_json["reference"]).to eq payment_request[:reference]
39
- expect(response_json["amount"]).to eq payment_request[:amount]
40
- expect(response_json["description"]).to eq payment_request[:description]
41
- expect(response_json["_links"]["next_url"]["href"]).to eq payment_request[:return_url]
42
- end
43
-
44
- it "enqueues a job to perform the payment callback" do
45
- ActiveJob::Base.queue_adapter = :test
46
- expect { post path, params: payment_request.as_json }.to have_enqueued_job(GovpayPaymentCallbackJob)
47
- end
48
- end
49
-
50
- context "when the request is missing a mandatory parameter" do
51
- before { payment_request[:amount] = nil }
52
-
53
- it "returns a HTTP 500 response" do
54
- post path, params: payment_request.as_json
55
-
56
- expect(response.code).to eq "500"
57
- end
58
- end
59
- end
60
-
61
- describe "#payment_details" do
62
- let(:path) { "/defra_ruby_mocks/govpay/v1/payments/#{payment_id}" }
63
-
64
- context "when the payment id is valid" do
65
- before do
66
- allow(GovpayGetPaymentService).to receive(:run)
67
- .with(payment_id)
68
- .and_return(JSON.parse(File.read("spec/fixtures/files/govpay/get_payment_response_success.json")))
69
- end
70
-
71
- let(:payment_id) { "12345678901234567890123456" }
72
-
73
- it "returns a valid success response" do
74
- get path
75
-
76
- expect(response.code).to eq "200"
77
- end
78
- end
79
-
80
- context "when the payment id is not valid" do
81
- before do
82
- allow(GovpayGetPaymentService).to receive(:run)
83
- .with(payment_id)
84
- .and_return(JSON.parse(File.read("spec/fixtures/files/govpay/get_payment_response_error.json")))
85
- end
86
-
87
- let(:payment_id) { "0" }
88
-
89
- it "returns a 422 response" do
90
- get path
91
-
92
- expect(response.code).to eq "422"
93
- end
94
- end
95
- end
96
-
97
- describe "#create_refund" do
98
- let(:payment_id) { "12345678901234567890123456" }
99
- let(:path) { "/defra_ruby_mocks/govpay/v1/payments/#{payment_id}/refunds" }
100
- let(:refund_request) do
101
- {
102
- "amount": 2000,
103
- "refund_amount_available": 5000
104
- }
105
- end
106
-
107
- context "when the request is missing a mandatory parameter" do
108
- before { refund_request[:refund_amount_available] = nil }
109
-
110
- it "returns a HTTP 500 response" do
111
- post path, params: refund_request.as_json
112
-
113
- expect(response.code).to eq "500"
114
- end
115
- end
116
-
117
- context "with a valid request" do
118
- it "returns a valid success response" do
119
- post path, params: refund_request.as_json
120
-
121
- expect(response.code).to eq "200"
122
- end
123
- end
124
- end
125
-
126
- describe "#refund_details" do
127
- let(:payment_id) { "12345678901234567890123456" }
128
- let(:refund_id) { "j6se0f2o427g28g8yg3u3i" }
129
- let(:path) { "/defra_ruby_mocks/govpay/v1/payments/#{payment_id}/refunds/#{refund_id}" }
130
-
131
- context "with a valid request" do
132
- it "returns a valid success response" do
133
- get path
134
-
135
- expect(response.code).to eq "200"
136
- end
137
- end
138
- end
139
- end
140
-
141
- context "when mocks are disabled" do
142
- before(:each) { DefraRubyMocks.configuration.enable = false }
143
- let(:payment_id) { Faker::Alphanumeric.alphanumeric(number: 26) }
144
-
145
- context "POST #govpay_payments" do
146
- let(:path) { "/defra_ruby_mocks/govpay/payments" }
147
-
148
- it "cannot load the page" do
149
- expect { post path }.to raise_error(ActionController::RoutingError)
150
- end
151
- end
152
-
153
- context "GET #govpay_payments" do
154
- let(:path) { "/defra_ruby_mocks/govpay/payments/#{payment_id}" }
155
-
156
- it "cannot load the page" do
157
- expect { get path }.to raise_error(ActionController::RoutingError)
158
- end
159
- end
160
-
161
- context "#govpay_refunds" do
162
- let(:path) { "/defra_ruby_mocks/govpay/#{payment_id}/refunds" }
163
-
164
- it "cannot load the page" do
165
- expect { post path }.to raise_error(ActionController::RoutingError)
166
- end
167
- end
168
- end
169
- end
170
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
- RSpec.describe "Officers", type: :request do
7
- after(:all) { Helpers::Configuration.reset_for_tests }
8
-
9
- let(:path) { "/defra_ruby_mocks/company/company-no/officers" }
10
-
11
- context "when mocks are enabled" do
12
- before(:each) { Helpers::Configuration.prep_for_tests }
13
-
14
- it "returns a JSON response" do
15
- get path
16
-
17
- expect(response.media_type).to eq("application/json")
18
- expect(response.code).to eq("200")
19
-
20
- expect(JSON.parse(response.body).deep_symbolize_keys[:items][0]).to eq(
21
- {
22
- name: "APPLE, Alice",
23
- officer_role: "director"
24
- }
25
- )
26
- end
27
- end
28
-
29
- context "when mocks are disabled" do
30
- before(:all) { DefraRubyMocks.configuration.enable = false }
31
-
32
- it "cannot load the page" do
33
- expect { get path }.to raise_error(ActionController::RoutingError)
34
- end
35
- end
36
- end
37
- end
@@ -1,69 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
- RSpec.describe CompaniesHouseService do
7
- describe ".run" do
8
- subject { described_class.run(company_number) }
9
-
10
- context "when the company number is 99999999 for not found" do
11
- let(:company_number) { "99999999" }
12
-
13
- it "raises a NotFoundError" do
14
- expect { subject }.to raise_error(NotFoundError)
15
- end
16
- end
17
-
18
- context "when the company number is from the 'specials' list" do
19
- specials = CompaniesHouseService.special_company_numbers
20
-
21
- specials.each do |company_number, status|
22
- context "and the number is #{company_number}" do
23
- let(:company_number) { company_number }
24
-
25
- it "returns a company_status of '#{status}'" do
26
- expect(subject.company_status).to eq(status)
27
- end
28
-
29
- it "returns a company_type of 'ltd'" do
30
- expect(subject.company_type).to eq("ltd")
31
- end
32
- end
33
- end
34
- end
35
-
36
- context "when the company is an LLP" do
37
- CompaniesHouseService.llp_company_numbers.each do |company_number|
38
- let(:company_number) { company_number }
39
-
40
- it "returns a company_status of 'active'" do
41
- expect(subject.company_status).to eq("active")
42
- end
43
-
44
- it "returns a company_type of 'llp'" do
45
- expect(subject.company_type).to eq("llp")
46
- end
47
- end
48
- end
49
-
50
- context "when the company number is not from the 'specials' list" do
51
- context "and it is valid" do
52
- let(:company_number) { "SC247974" }
53
-
54
- it "returns a company_status of 'active'" do
55
- expect(subject.company_status).to eq("active")
56
- end
57
- end
58
-
59
- context "and it is not valid" do
60
- let(:company_number) { "foo" }
61
-
62
- it "raises a NotFoundError" do
63
- expect { subject }.to raise_error(NotFoundError)
64
- end
65
- end
66
- end
67
- end
68
- end
69
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
-
7
- RSpec.describe GovpayCreatePaymentService do
8
-
9
- before(:each) do
10
- Helpers::Configuration.prep_for_tests
11
- DefraRubyMocks.configure do |config|
12
- config.govpay_domain = "http://localhost:3000/defra_ruby_mocks"
13
- end
14
- end
15
-
16
- let(:amount) { Faker::Number.number(digits: 4) }
17
- let(:description) { Faker::Lorem.sentence }
18
- let(:return_url) { Faker::Internet.url }
19
-
20
- describe ".run" do
21
-
22
- subject { described_class.run(amount: amount, description: description, return_url: return_url).deep_symbolize_keys }
23
-
24
- context "for a valid payment request" do
25
-
26
- it "returns a payment response with the order amount" do
27
- expect(subject[:amount]).to eq(amount)
28
- end
29
-
30
- it "returns a payment response with the description" do
31
- expect(subject[:description]).to eq(description)
32
- end
33
-
34
- it "returns a payment response with the return_url" do
35
- expect(subject[:_links][:next_url][:href]).to eq(return_url)
36
- end
37
-
38
- it "returns the expected status" do
39
- expect(subject[:state][:status]).to eq("created")
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
-
7
- RSpec.describe GovpayGetPaymentService do
8
- before { Helpers::Configuration.prep_for_tests }
9
-
10
- let(:order_value) { Faker::Number.number(digits: 4) }
11
- let(:payment_id) { SecureRandom.hex(26) }
12
-
13
- # Note that the service currently supports only success responses.
14
- describe ".run" do
15
-
16
- subject { described_class.run(payment_id: payment_id, amount: order_value).deep_symbolize_keys }
17
-
18
- context "when the payment is successful" do
19
-
20
- it "returns a payment with the order amount" do
21
- expect(subject[:amount]).to eq(order_value)
22
- end
23
-
24
- it "returns the expected status" do
25
- expect(subject[:state][:status]).to eq("success")
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
-
7
- RSpec.describe GovpayRefundDetailsService do
8
- let(:payment_id) { SecureRandom.hex(26) }
9
- let(:refund_id) { SecureRandom.hex(22) }
10
-
11
- before { Helpers::Configuration.prep_for_tests }
12
-
13
- # Note that the service currently supports only success responses.
14
- describe ".run" do
15
- let(:create_request_time) { Time.zone.now }
16
- let(:submitted_success_lag) { "10" }
17
-
18
- subject { described_class.run(payment_id: payment_id, refund_id: refund_id).deep_symbolize_keys }
19
-
20
- # the service shoud return "submitted" for up to GOVPAY_REFUND_SUBMITTED_SUCCESS_LAG seconds, "success" thereafter
21
- before do
22
- Timecop.freeze(create_request_time)
23
- allow(ENV).to receive(:fetch).with("GOVPAY_REFUND_SUBMITTED_SUCCESS_LAG", any_args).and_return(submitted_success_lag)
24
- FileUtils.rm_rf("#{Dir.tmpdir}/govpay_request_refund_service_last_run_time")
25
- end
26
-
27
- context "when no refund timestamp file exists" do
28
- it { expect(subject[:status]).to eq "success" }
29
- end
30
-
31
- context "when a refund has been requested" do
32
- before do
33
- GovpayRequestRefundService.run(payment_id: payment_id, amount: 100, refund_amount_available: 100).deep_symbolize_keys
34
- end
35
-
36
- context "when less than 10 seconds has elapsed since the last create request" do
37
- before { Timecop.freeze(create_request_time + (submitted_success_lag.to_i - 8).seconds) }
38
-
39
- it { expect(subject[:status]).to eq "submitted" }
40
- end
41
-
42
- context "when 10 seconds has elapsed since the last create request" do
43
- before { Timecop.freeze(create_request_time + (submitted_success_lag.to_i + 8).seconds) }
44
-
45
- it { expect(subject[:status]).to eq "success" }
46
- end
47
-
48
- context "when GOVPAY_REFUND_SUBMITTED_SUCCESS_LAG is not set" do
49
- let(:submitted_success_lag) { nil }
50
-
51
- before { Timecop.freeze(create_request_time + 1.hour) }
52
-
53
- it { expect(subject[:status]).to eq "success" }
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails_helper"
4
-
5
- module DefraRubyMocks
6
-
7
- RSpec.describe GovpayRequestRefundService do
8
- let(:payment_id) { SecureRandom.hex(26) }
9
- let(:amount) { 2000 }
10
- let(:refund_amount_available) { amount }
11
-
12
- before { Helpers::Configuration.prep_for_tests }
13
-
14
- # Note that the service currently supports only "submitted" responses.
15
- describe ".run" do
16
-
17
- subject { described_class.run(payment_id: payment_id, amount: amount, refund_amount_available: refund_amount_available).deep_symbolize_keys }
18
-
19
- context "when the refund has been successfully submitted" do
20
-
21
- it "returns a response with the expected status" do
22
- expect(subject[:status]).to eq("submitted")
23
- end
24
-
25
- it "returns a response with the expected amount" do
26
- expect(subject[:amount]).to eq(amount)
27
- end
28
- end
29
- end
30
- end
31
- end