diff --git a/src/modules/address/index.ts b/src/modules/address/index.ts index 6221b551b3c..4d484651811 100644 --- a/src/modules/address/index.ts +++ b/src/modules/address/index.ts @@ -260,19 +260,18 @@ export class AddressModule { * @param precision The number of decimal points of precision for the latitude. Defaults to `4`. * * @example - * faker.address.latitude() // '-30.9501' - * faker.address.latitude(10, -10, 5) // '2.68452' + * faker.address.latitude() // -30.9501 + * faker.address.latitude(10, -10, 5) // 2.68452 * * @since 2.0.1 */ - latitude(max: number = 90, min: number = -90, precision: number = 4): string { - return this.faker.datatype - .number({ - min, - max, - precision: parseFloat(`${(0.0).toPrecision(precision)}1`), - }) - .toFixed(precision); + // TODO @xDivisionByZerox 2022-06-12 this signature should probably be an object for easier maintainability + latitude(max: number = 90, min: number = -90, precision: number = 4): number { + return this.faker.datatype.number({ + min, + max, + precision: parseFloat(`${(0.0).toPrecision(precision)}1`), + }); } /** @@ -283,23 +282,22 @@ export class AddressModule { * @param precision The number of decimal points of precision for the longitude. Defaults to `4`. * * @example - * faker.address.longitude() // '-154.0226' - * faker.address.longitude(10, -10, 5) // '-4.03620' + * faker.address.longitude() // -154.0226 + * faker.address.longitude(10, -10, 5) // -4.03620 * * @since 2.0.1 */ + // TODO @xDivisionByZerox 2022-06-12 this signature should probably be an object for easier maintainability longitude( max: number = 180, min: number = -180, precision: number = 4 - ): string { - return this.faker.datatype - .number({ - max: max, - min: min, - precision: parseFloat(`${(0.0).toPrecision(precision)}1`), - }) - .toFixed(precision); + ): number { + return this.faker.datatype.number({ + max: max, + min: min, + precision: parseFloat(`${(0.0).toPrecision(precision)}1`), + }); } /** @@ -396,7 +394,7 @@ export class AddressModule { ): [latitude: number, longitude: number] { // If there is no coordinate, the best we can do is return a random GPS coordinate. if (coordinate === undefined) { - return [parseFloat(this.latitude()), parseFloat(this.longitude())]; + return [this.latitude(), this.longitude()]; } const angleRadians = this.faker.datatype.float({ diff --git a/test/__snapshots__/address.spec.ts.snap b/test/__snapshots__/address.spec.ts.snap index dd489d6d696..5099cf47dbb 100644 --- a/test/__snapshots__/address.spec.ts.snap +++ b/test/__snapshots__/address.spec.ts.snap @@ -28,9 +28,9 @@ exports[`address > 42 > direction > with abbr = false 1`] = `"South"`; exports[`address > 42 > direction > with abbr = true 1`] = `"S"`; -exports[`address > 42 > latitude > noArgs 1`] = `"-22.5828"`; +exports[`address > 42 > latitude > noArgs 1`] = `-22.5828`; -exports[`address > 42 > longitude > noArgs 1`] = `"-45.1656"`; +exports[`address > 42 > longitude > noArgs 1`] = `-45.1656`; exports[`address > 42 > nearbyGPSCoordinate > near origin 1`] = ` [ @@ -106,9 +106,9 @@ exports[`address > 1211 > direction > with abbr = false 1`] = `"Southwest"`; exports[`address > 1211 > direction > with abbr = true 1`] = `"SW"`; -exports[`address > 1211 > latitude > noArgs 1`] = `"77.1337"`; +exports[`address > 1211 > latitude > noArgs 1`] = `77.1337`; -exports[`address > 1211 > longitude > noArgs 1`] = `"154.2673"`; +exports[`address > 1211 > longitude > noArgs 1`] = `154.2673`; exports[`address > 1211 > nearbyGPSCoordinate > near origin 1`] = ` [ @@ -184,9 +184,9 @@ exports[`address > 1337 > direction > with abbr = false 1`] = `"South"`; exports[`address > 1337 > direction > with abbr = true 1`] = `"S"`; -exports[`address > 1337 > latitude > noArgs 1`] = `"-42.8356"`; +exports[`address > 1337 > latitude > noArgs 1`] = `-42.8356`; -exports[`address > 1337 > longitude > noArgs 1`] = `"-85.6711"`; +exports[`address > 1337 > longitude > noArgs 1`] = `-85.6711`; exports[`address > 1337 > nearbyGPSCoordinate > near origin 1`] = ` [ diff --git a/test/address.spec.ts b/test/address.spec.ts index 3bee671436d..ac966e90048 100644 --- a/test/address.spec.ts +++ b/test/address.spec.ts @@ -153,100 +153,80 @@ describe('address', () => { }); describe('latitude()', () => { - it('returns random latitude', () => { - for (let i = 0; i < 100; i++) { - const latitude = faker.address.latitude(); + it('returns a number', () => { + const latitude = faker.address.latitude(); - expect(latitude).toBeTypeOf('string'); + expect(latitude).toBeTypeOf('number'); + }); - const latitude_float = parseFloat(latitude); + it('returns random latitude', () => { + const latitude = faker.address.latitude(); - expect(latitude_float).toBeGreaterThanOrEqual(-90.0); - expect(latitude_float).toBeLessThanOrEqual(90.0); - } + expect(latitude).toBeGreaterThanOrEqual(-90.0); + expect(latitude).toBeLessThanOrEqual(90.0); }); it('returns latitude with min and max and default precision', () => { - for (let i = 0; i < 100; i++) { - const latitude = faker.address.latitude(5, -5); - - expect(latitude).toBeTypeOf('string'); - expect( - latitude.split('.')[1].length, - 'The precision of latitude should be 4 digits' - ).toBe(4); + const latitude = faker.address.latitude(5, -5); - const latitude_float = parseFloat(latitude); + expect( + latitude.toString().split('.')[1].length, + 'The precision of latitude should be 4 digits' + ).lessThanOrEqual(4); - expect(latitude_float).toBeGreaterThanOrEqual(-5); - expect(latitude_float).toBeLessThanOrEqual(5); - } + expect(latitude).toBeGreaterThanOrEqual(-5); + expect(latitude).toBeLessThanOrEqual(5); }); it('returns random latitude with custom precision', () => { - for (let i = 0; i < 100; i++) { - const latitude = faker.address.latitude(undefined, undefined, 7); - - expect(latitude).toBeTypeOf('string'); - expect( - latitude.split('.')[1].length, - 'The precision of latitude should be 7 digits' - ).toBe(7); + const latitude = faker.address.latitude(undefined, undefined, 7); - const latitude_float = parseFloat(latitude); + expect( + latitude.toString().split('.')[1].length, + 'The precision of latitude should be 7 digits' + ).lessThanOrEqual(7); - expect(latitude_float).toBeGreaterThanOrEqual(-180); - expect(latitude_float).toBeLessThanOrEqual(180); - } + expect(latitude).toBeGreaterThanOrEqual(-180); + expect(latitude).toBeLessThanOrEqual(180); }); }); describe('longitude()', () => { - it('returns random longitude', () => { - for (let i = 0; i < 100; i++) { - const longitude = faker.address.longitude(); + it('returns a number', () => { + const longitude = faker.address.longitude(); - expect(longitude).toBeTypeOf('string'); + expect(longitude).toBeTypeOf('number'); + }); - const longitude_float = parseFloat(longitude); + it('returns random longitude', () => { + const longitude = faker.address.longitude(); - expect(longitude_float).toBeGreaterThanOrEqual(-180); - expect(longitude_float).toBeLessThanOrEqual(180); - } + expect(longitude).toBeGreaterThanOrEqual(-180); + expect(longitude).toBeLessThanOrEqual(180); }); it('returns random longitude with min and max and default precision', () => { - for (let i = 0; i < 100; i++) { - const longitude = faker.address.longitude(100, -30); - - expect(longitude).toBeTypeOf('string'); - expect( - longitude.split('.')[1].length, - 'The precision of longitude should be 4 digits' - ).toBe(4); + const longitude = faker.address.longitude(100, -30); - const longitude_float = parseFloat(longitude); + expect( + longitude.toString().split('.')[1].length, + 'The precision of longitude should be 4 digits' + ).lessThanOrEqual(4); - expect(longitude_float).toBeGreaterThanOrEqual(-30); - expect(longitude_float).toBeLessThanOrEqual(100); - } + expect(longitude).toBeGreaterThanOrEqual(-30); + expect(longitude).toBeLessThanOrEqual(100); }); it('returns random longitude with custom precision', () => { - for (let i = 0; i < 100; i++) { - const longitude = faker.address.longitude(undefined, undefined, 7); - - expect(longitude).toBeTypeOf('string'); - expect( - longitude.split('.')[1].length, - 'The precision of longitude should be 7 digits' - ).toBe(7); + const longitude = faker.address.longitude(undefined, undefined, 7); - const longitude_float = parseFloat(longitude); + expect( + longitude.toString().split('.')[1].length, + 'The precision of longitude should be 7 digits' + ).lessThanOrEqual(7); - expect(longitude_float).toBeGreaterThanOrEqual(-180); - expect(longitude_float).toBeLessThanOrEqual(180); - } + expect(longitude).toBeGreaterThanOrEqual(-180); + expect(longitude).toBeLessThanOrEqual(180); }); });