Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
5.1 KiB

require "webmock/rspec"
module RequestHelper
def self.stub_http_requests
WebMock.disable_net_connect!(allow_localhost: true)
Cldc 3114 enable support control of rent periods per organisation (#2442) * write helper method to support having the correct rent period checkboxes checked * update new and create in organisations controller and view to enable creation of relevant organisation rent periods write tests for this * small changes to models * enable editing rent period in the UI display change button on org details page display rent periods question on edit page * enable updating org rent periods update logic in #update related tests * alter redirect after support user creates an organisation * adjust various UI elements: ordering of rows, copy changes, label size and associated tests * rework the #rent_period_labels method to return All under the correct conditions, rework tests related to that. + fix assorted tests that were either flakey or breaking due to addition of rent periods logic to create and update * amend failing tests and resolve linting complaints * changes following review * disable checkboxes for rent periods if they are in use so that users are not able to make existing logs invalid hint text added to the question to explain this I have also added all rent periods to a hidden field to remove the need to fetch them again form the db in the update method * update validation to reflect the fact that an org having no associated rent periods no longer means they accept all rent periods update tests adding both cases and removing unnecessary additional db additions * rake task to create rent period associations for orgs that have none * revert mistaken copy changes in designs * create rent periods in factories as default, with an option to skip. skip automatic creation in tests specifically related to rent periods * stub api call for factory value, update csv tests and fixtures accordingly * extract a good chunk of tests out of lettings_log_spec and into a dedicated derived fields spec file. in many cases refactor tests * remove before(:context) and associated patterns. use assign_attributes in various places for cleaner code * escape . in regex for API call stubs to satisfy codeQL remove destroy_all call at the start of a test that was dealing with leftover modesl in the test db * further refactoring of various tests to reduce database interactions and improve speed * remove outdated distinction between unitletas mappings from before 23/24 * remove tests that seem to be testing active record and/or ruby Date class
10 months ago
WebMock.stub_request(:get, /api\.postcodes\.io/)
.to_return(status: 404, body: "{\"status\":404,\"error\":\"Postcode not found\"}", headers: {})
WebMock.stub_request(:get, "https://api.postcodes.io/postcodes/AA11AA")
.to_return(status: 200, body: "{\"status\":200,\"result\":{\"postcode\":\"AA1 1AA\",\"admin_district\":\"Westminster\",\"codes\":{\"admin_district\":\"E09000033\"}}}", headers: {})
WebMock.stub_request(:get, "https://api.postcodes.io/postcodes/AA12AA")
.to_return(status: 200, body: "{\"status\":200,\"result\":{\"postcode\":\"AA1 2AA\",\"admin_district\":\"Westminster\",\"codes\":{\"admin_district\":\"E09000033\"}}}", headers: {})
WebMock.stub_request(:get, "https://api.postcodes.io/postcodes/NW1L5DP")
.to_return(status: 200, body: "{\"status\":200,\"result\":{\"postcode\":\"NW1L 5DP\",\"admin_district\":\"Westminster\",\"codes\":{\"admin_district\":\"E09000033\"}}}", headers: {})
WebMock.stub_request(:get, "https://api.postcodes.io/postcodes/ZZ11ZZ")
.to_return(status: 200, body: "{\"status\":200,\"result\":{\"postcode\":\"ZZ1 1ZZ\",\"admin_district\":\"Westminster\",\"codes\":{\"admin_district\":\"E09000033\"}}}", headers: {})
Cldc 3114 enable support control of rent periods per organisation (#2442) * write helper method to support having the correct rent period checkboxes checked * update new and create in organisations controller and view to enable creation of relevant organisation rent periods write tests for this * small changes to models * enable editing rent period in the UI display change button on org details page display rent periods question on edit page * enable updating org rent periods update logic in #update related tests * alter redirect after support user creates an organisation * adjust various UI elements: ordering of rows, copy changes, label size and associated tests * rework the #rent_period_labels method to return All under the correct conditions, rework tests related to that. + fix assorted tests that were either flakey or breaking due to addition of rent periods logic to create and update * amend failing tests and resolve linting complaints * changes following review * disable checkboxes for rent periods if they are in use so that users are not able to make existing logs invalid hint text added to the question to explain this I have also added all rent periods to a hidden field to remove the need to fetch them again form the db in the update method * update validation to reflect the fact that an org having no associated rent periods no longer means they accept all rent periods update tests adding both cases and removing unnecessary additional db additions * rake task to create rent period associations for orgs that have none * revert mistaken copy changes in designs * create rent periods in factories as default, with an option to skip. skip automatic creation in tests specifically related to rent periods * stub api call for factory value, update csv tests and fixtures accordingly * extract a good chunk of tests out of lettings_log_spec and into a dedicated derived fields spec file. in many cases refactor tests * remove before(:context) and associated patterns. use assign_attributes in various places for cleaner code * escape . in regex for API call stubs to satisfy codeQL remove destroy_all call at the start of a test that was dealing with leftover modesl in the test db * further refactoring of various tests to reduce database interactions and improve speed * remove outdated distinction between unitletas mappings from before 23/24 * remove tests that seem to be testing active record and/or ruby Date class
10 months ago
WebMock.stub_request(:get, "https://api.postcodes.io/postcodes/SW1A1AA")
.to_return(status: 200, body: "{\"status\":200,\"result\":{\"postcode\":\"ZZ1 1ZZ\",\"admin_district\":\"Westminster\",\"codes\":{\"admin_district\":\"E09000033\"}}}", headers: {})
body = { results: [{ DPA: { UPRN: "10033558653" } }] }.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/find?key&maxresults=10&minmatch=0.4&query=Address%20line%201,%20SW1A%201AA")
.to_return(status: 200, body:, headers: {})
CLDC-3787: Autocomplete address uprn search (#2967) * Prototype * Remove git from dockerfile * UPRN search too * Revert address client and use uprn client * Add address search to lettings too * Updates with lettings logs * Update copy * Move guidance to partial * Fix uprn return * Delete new db file, restore old * Lint * Remove old db file * Lint * Add new db file, remove old * JS lint * Update schema * Add manual entry option * Update derived variables * Comment out old version of find address in 2024 * Remove db column * Add new db columns * Update guidance partial * Add unless to migration * Add migration files to remove and readd * authenticate user * Remove file * Delete migration files * Add search url * Add search url * Fix onConfirm * Add manual entry button instead of change skip link * Revert "Add manual entry button instead of change skip link" This reverts commit 22577c801aca940acfc16caf94d3159071ea8258. * Revert "Revert "Add manual entry button instead of change skip link"" This reverts commit 9f0a2111a58e933a28105e54aba6ca08c2d043b7. * Replace uprn question * Update question copy * Allow changing the address search value * Rename address autocomplete to address search * Add buttons to switch between address questions * Fix controller logic * Enable adding question numbers to page headers * Update skip links * Add js disabled message to select * Alternative way to handle js disabled users * Revert "Alternative way to handle js disabled users" This reverts commit 10da3d61e2f89ec29ef9f9071c63eb99aa2bb482. * Fix typo * Fix address options for address search question * Reuse AddressDataPresenter where appropriate * Lint * Remove uprn selection question tests * Reuse UprnDataPresenter where appropriate * CSV export, exclude address_search * Add address search to sales and lettings factory bots * Exclude old address questions from routing, keep as exported values * lint * Update uprn value * Add address search input boolean and switch between questions * Reword copy, remove "Find" and "Search by" * Align address questions, add question number and question text * Remove old wip depends on * Update some tests * Update migration, move default value from db to model * Update test * Remove binding pry * Lint * Update test * Lint * Update test * Update routes with underscores * Remove debugging * Limit visible logs to user * Add manual address entry selected variable * Change address search min length to 3chars * Remove binding.pry * Update factory bots, manual_address_entry_selected to true for preexisting tests * Update model tests * Update sales model tests excl E-code tests * Update address search request test * Reuse uprn id instead of address_search * Set manual address entry selected as false when creating test logs * Update model test * Update request tests and remove old questions * Add back test * Update services * Update more tests Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com> * Update request tests * update model tests * Also update sales log * Update service csv uprn_selection values to 1 * Add tests for pages and questions * Update test * Update uprn_known * Lint * Add feature test * Update test * Update tests * Remove test * pre-consolidate migration files * Indentation * Controller method improvements * Update question numbers for 2025/26 * Update question numbers tests * consolidate and delete old migration files * undo changes to schema.rb * Update 2025 property information translation files * Update answer options to show singular previously selected result if present * Move buttons to bottom guidance partials * Small improvements, make address search and existing search more similar * Validate entered addresses as within England * Update test * Revert "Validate entered addresses as within England" This reverts commit 2dbfbcc8a5188cde7fb0ac0dcdbc5919eefd6a12. * Add missing button to sales address page * Change error code * Clear invalid options * Edit no results message method * Keep no result logic just change text * Display uprn value with address value * Still show no results message when characters entered is less than 3 rather than nothing * Fix uprn result when query is ambiguous * Reduce min match for address search * Hide no result found message just before results are populated * Prevent changing logs to 2025 with invalid addresses * Correct attribute name * Handle nil * Remove custom error message * Remove unused variables from factory * Update tests, remove address and postcode from old find address * Fix bug clearing uprn from see all answers * Revert "Fix bug clearing uprn from see all answers" This reverts commit a66c47a1abf7a429f25e0a016fedb0b92e92f15c. * Undo changes to validation method * Fix unchanged uprn_selection when clearing or changing uprn * Undo a change * Update bulk upload 2025 * Fix typo * Remove redundant line --------- Co-authored-by: Kat <54268893+kosiakkatrina@users.noreply.github.com> Co-authored-by: kosiakkatrina <kosiakkatrina@users.noreply.github.com>
2 weeks ago
body = { results: [{ DPA: { "POSTCODE": "SW1A 1AA", "POST_TOWN": "London", "PO_BOX_NUMBER": "The Mall, City Of Westminster" } }] }.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key&uprn=1")
.to_return(status: 200, body:, headers: {})
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key&uprn=10033558653")
.to_return(status: 200, body:, headers: {})
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=10033558653")
.to_return(status: 200, body:, headers: {})
WebMock.stub_request(:post, /api.notifications.service.gov.uk\/v2\/notifications\/email/)
.to_return(status: 200, body: "", headers: {})
WebMock.stub_request(:post, /api.notifications.service.gov.uk\/v2\/notifications\/sms/)
.to_return(status: 200, body: "", headers: {})
body = {
results: [
{
DPA: {
"POSTCODE": "AA1 1AA",
"POST_TOWN": "Test Town",
"ORGANISATION_NAME": "1, Test Street",
},
},
],
}.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=1")
.to_return(status: 200, body:, headers: {})
body = {
results: [
{
DPA: {
"POSTCODE": "LS16 6FT",
"POST_TOWN": "Westminster",
"PO_BOX_NUMBER": "Wrong Address Line1",
"DOUBLE_DEPENDENT_LOCALITY": "Double Dependent Locality",
},
},
],
}.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key&uprn=121")
.to_return(status: 200, body:, headers: {})
body = {
results: [
{
DPA: {
"POSTCODE": "BS1 1AD",
"POST_TOWN": "Bristol",
"ORGANISATION_NAME": "Some place",
},
},
],
}.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=123")
.to_return(status: 200, body:, headers: {})
body = {
results: [
{
DPA: {
"POSTCODE": "EC1N 2TD",
"POST_TOWN": "Newcastle",
"ORGANISATION_NAME": "Some place",
},
},
],
}.to_json
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=12")
.to_return(status: 200, body:, headers: {})
WebMock.stub_request(:get, "https://api.os.uk/search/places/v1/uprn?dataset=DPA,LPI&key=OS_DATA_KEY&uprn=1234567890123")
.to_return(status: 404, body: "", headers: {})
template = Addressable::Template.new "https://api.os.uk/search/places/v1/find?key=OS_DATA_KEY&maxresults=10&minmatch=0.4&query={+address_query}"
WebMock.stub_request(:get, template)
.to_return do |request|
address = request.uri.query_values["query"].split(",")
{ status: 200, body: { results: [{ DPA: { MATCH: 0.9, BUILDING_NAME: "result #{address[0]}", POST_TOWN: "result town or city", POSTCODE: address[1], UPRN: "1" } }] }.to_json, headers: {} }
end
end
def self.real_http_requests
WebMock.allow_net_connect!
end
end