Skip to content

Commit

Permalink
chore(api): rename ordnance survey type
Browse files Browse the repository at this point in the history
  • Loading branch information
ttbarnes committed Jan 10, 2025
1 parent 6c631ef commit 3e016bb
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 31 deletions.
4 changes: 2 additions & 2 deletions src/api/.keystone/config.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import ordnanceSurvey from '../../../integrations/ordnance-survey';
import mapAndFilterOrdnanceSurveyAddresses from '../../../helpers/map-and-filter-ordnance-survey-addresses';
import mockOrdnanceSurveyResponse from '../../../test-mocks/mock-ordnance-survey-response';
import { MOCK_OS_ADDRESS_INPUT } from '../../../test-mocks/mock-os-address-input';
import { OrdnanceSurveyResponse } from '../../../types';
import { OrdnanceSurveyAddress } from '../../../types';
import { mockSpyPromiseRejection } from '../../../test-mocks';

describe('getOrdnanceSurveyAddresses', () => {
Expand Down Expand Up @@ -55,7 +55,7 @@ describe('getOrdnanceSurveyAddresses', () => {

describe('when ordnance survey API returns a valid response', () => {
beforeEach(() => {
const ordnanceSurveyResponse: Array<OrdnanceSurveyResponse> = mockOrdnanceSurveyResponse.results;
const ordnanceSurveyResponse: Array<OrdnanceSurveyAddress> = mockOrdnanceSurveyResponse.results;

ordnanceSurvey.get = jest.fn(() => Promise.resolve({ success: true, data: ordnanceSurveyResponse }));
});
Expand Down
8 changes: 4 additions & 4 deletions src/api/helpers/filter-ordnance-survey-addresses/index.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { OrdnanceSurveyResponse } from '../../types';
import { OrdnanceSurveyAddress } from '../../types';

/**
* filterOrdnanceSurveyAddresses
* Filter Ordnance Survey addresses based on building name/number
* @param {Array<OrdnanceSurveyResponse>} addresses
* @param {Array<OrdnanceSurveyAddress>} addresses
* @param {String} houseNameOrNumber
* @returns {Array<Address>} Filtered addresses
*/
const filterOrdnanceSurveyAddresses = (addresses: Array<OrdnanceSurveyResponse>, houseNameOrNumber: string): Array<OrdnanceSurveyResponse> => {
const filtered = addresses.filter((address: OrdnanceSurveyResponse) => {
const filterOrdnanceSurveyAddresses = (addresses: Array<OrdnanceSurveyAddress>, houseNameOrNumber: string): Array<OrdnanceSurveyAddress> => {
const filtered = addresses.filter((address: OrdnanceSurveyAddress) => {
if (address.DPA.SUB_BUILDING_NAME && address.DPA.SUB_BUILDING_NAME.includes(houseNameOrNumber)) {
return address;
}
Expand Down
14 changes: 4 additions & 10 deletions src/api/helpers/map-and-filter-ordnance-survey-addresses/index.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,20 @@
import filterOrdnanceSurveyAddresses from '../filter-ordnance-survey-addresses';
import mapOrdnanceSurveyAddresses from '../map-ordnance-survey-addresses';
import { OrdnanceSurveyResponse, Address } from '../../types';

// TODO:
// TODO:
// TODO:
// TODO:
// TODO: rename OrdnanceSurveyResponse.
import { OrdnanceSurveyAddress, Address } from '../../types';

/**
* mapAndFilterOrdnanceSurveyAddresses
* - Filter addresses based on building name/number
* - Map the filtered addresses
* @param {Array<OrdnanceSurveyResponse>} ordnanceSurveyResponse
* @param {Array<OrdnanceSurveyAddress>} ordnanceSurveyResponse
* @param {String} houseNameOrNumber
* @returns {Array<Address>} Mapped addresses
*/
const mapAndFilterOrdnanceSurveyAddresses = (ordnanceSurveyResponse: Array<OrdnanceSurveyResponse>, houseNameOrNumber: string): Array<Address> => {
const mapAndFilterOrdnanceSurveyAddresses = (addresses: Array<OrdnanceSurveyAddress>, houseNameOrNumber: string): Array<Address> => {
try {
console.info('Mapping and filtering Ordnance Survey addresses');

const filtered = filterOrdnanceSurveyAddresses(ordnanceSurveyResponse, houseNameOrNumber);
const filtered = filterOrdnanceSurveyAddresses(addresses, houseNameOrNumber);

const mapped = mapOrdnanceSurveyAddresses(filtered);

Expand Down
4 changes: 2 additions & 2 deletions src/api/helpers/map-ordnance-survey-address/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import mapOrdnanceSurveyAddress from '.';
import mockOrdnanceSurveyResponse from '../../test-mocks/mock-ordnance-survey-response';
import { OrdnanceSurveyResponse } from '../../types';
import { OrdnanceSurveyAddress } from '../../types';

describe('api/helpers/map-ordnance-survey-address', () => {
const mockBuildingNumber = '100';
const mockSubBuildingName = 'Mock sub building name';
const mockOrganisationName = 'Mock organisation name';
const mockBuildingName = 'Mock building name';

const mockAddressFullyPopulated: OrdnanceSurveyResponse = {
const mockAddressFullyPopulated: OrdnanceSurveyAddress = {
DPA: {
...mockOrdnanceSurveyResponse.results[0].DPA,
BUILDING_NUMBER: mockBuildingNumber,
Expand Down
8 changes: 4 additions & 4 deletions src/api/helpers/map-ordnance-survey-address/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Address, OrdnanceSurveyResponse } from '../../types';
import { Address, OrdnanceSurveyAddress } from '../../types';

/**
* mapOrdnanceSurveyAddress
* Maps address from OrdnanceSurveyResponse to a UKEF/EXIP aligned format
* Maps address from OrdnanceSurveyAddress to a UKEF/EXIP aligned format
* NOTE - depending on the postcode and "house name or number",
* Ordnance Survey returns different fields.
* For example, some addresses will only return one of the following fields:
Expand All @@ -14,10 +14,10 @@ import { Address, OrdnanceSurveyResponse } from '../../types';
* postcode = SW1A 2HQ, houseNameOrNumber = 1
* postcode = W1A 1AA, houseNameOrNumber = Wogan House
* postcode = SW1A 2HQ, houseNameOrNumber = Treasury // TODO: update
* @param {OrdnanceSurveyResponse} address
* @param {OrdnanceSurveyAddress} address
* @returns {Address} mapped address
*/
const mapOrdnanceSurveyAddress = (address: OrdnanceSurveyResponse): Address => {
const mapOrdnanceSurveyAddress = (address: OrdnanceSurveyAddress): Address => {
let addressLine1 = '';

if (address.DPA.BUILDING_NUMBER) {
Expand Down
6 changes: 3 additions & 3 deletions src/api/helpers/map-ordnance-survey-addresses/index.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import mapAddress from '../map-ordnance-survey-address';
import { Address, OrdnanceSurveyResponse } from '../../types';
import { Address, OrdnanceSurveyAddress } from '../../types';

/**
* mapOrdnanceSurveyAddresses
* Map Ordnance Survey addresses
* @param {Array<OrdnanceSurveyResponse>} addresses
* @param {Array<OrdnanceSurveyAddress>} addresses
* @param {String} houseNameOrNumber
* @returns {Array<Address>} Filtered addresses
*/
const mapOrdnanceSurveyAddresses = (addresses: Array<OrdnanceSurveyResponse>): Array<Address> => {
const mapOrdnanceSurveyAddresses = (addresses: Array<OrdnanceSurveyAddress>): Array<Address> => {
const mapped = addresses.map((address) => mapAddress(address));

return mapped;
Expand Down
8 changes: 4 additions & 4 deletions src/api/types/ordnance-survey/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SuccessResponse } from '../generic';

export interface OrdnanceSurveyAddress {
export interface OrdnanceSurveyAddressDPA {
ADDRESS: string;
BUILDING_NUMBER?: string;
BUILDING_NAME?: string;
Expand All @@ -12,12 +12,12 @@ export interface OrdnanceSurveyAddress {
THOROUGHFARE_NAME?: string;
}

export interface OrdnanceSurveyResponse {
DPA: OrdnanceSurveyAddress;
export interface OrdnanceSurveyAddress {
DPA: OrdnanceSurveyAddressDPA;
}

export interface OrdnanceSurveyAPIResponse extends SuccessResponse {
data?: Array<OrdnanceSurveyResponse>;
data?: Array<OrdnanceSurveyAddress>;
}

export interface OrdnanceSurveyVariables {
Expand Down

0 comments on commit 3e016bb

Please sign in to comment.