From d48ddb88200ed474144df3aa43eb0be305597658 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 3 Jan 2025 23:55:05 -0300 Subject: [PATCH] Update canonical-url.test.ts --- apps/api/src/lib/canonical-url.test.ts | 54 +++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/apps/api/src/lib/canonical-url.test.ts b/apps/api/src/lib/canonical-url.test.ts index 0a2c3acd..65171642 100644 --- a/apps/api/src/lib/canonical-url.test.ts +++ b/apps/api/src/lib/canonical-url.test.ts @@ -1,4 +1,44 @@ -import { normalizeUrl } from './canonical-url'; +import { normalizeUrl, normalizeUrlOnlyHostname } from './canonical-url'; + +describe('normalizeUrlOnlyHostname', () => { + it('should remove protocol and www from URL', () => { + const url = 'https://www.example.com'; + const expected = 'example.com'; + expect(normalizeUrlOnlyHostname(url)).toBe(expected); + }); + + it('should remove only protocol if www is not present', () => { + const url = 'https://example.com'; + const expected = 'example.com'; + expect(normalizeUrlOnlyHostname(url)).toBe(expected); + }); + + it('should handle URLs without protocol', () => { + const url = 'www.example.com'; + const expected = 'example.com'; + expect(normalizeUrlOnlyHostname(url)).toBe(expected); + }); + + it('should handle URLs without protocol and www', () => { + const url = 'example.com'; + const expected = 'example.com'; + expect(normalizeUrlOnlyHostname(url)).toBe(expected); + }); + + it('should handle URLs with paths', () => { + const url = 'https://www.example.com/path/to/resource'; + const expected = 'example.com'; + expect(normalizeUrlOnlyHostname(url)).toBe(expected); + }); + + it('should handle invalid URLs gracefully', () => { + const url = 'not a valid url'; + const expected = 'not a valid url'; + expect(normalizeUrlOnlyHostname(url)).toBe(expected); + }); +}); + + describe('normalizeUrl', () => { it('should remove protocol and www from URL', () => { @@ -27,10 +67,22 @@ describe('normalizeUrl', () => { it('should handle URLs with paths', () => { const url = 'https://www.example.com/path/to/resource'; + const expected = 'example.com/path/to/resource'; + expect(normalizeUrl(url)).toBe(expected); + }); + + it('should handle URLs with trailing slash', () => { + const url = 'https://www.example.com/'; const expected = 'example.com'; expect(normalizeUrl(url)).toBe(expected); }); + it('should handle URLs with trailing slash and path', () => { + const url = 'https://www.example.com/path/'; + const expected = 'example.com/path'; + expect(normalizeUrl(url)).toBe(expected); + }); + it('should handle invalid URLs gracefully', () => { const url = 'not a valid url'; const expected = 'not a valid url';