diff --git a/src/app/modules/shared/services/technology.service.spec.ts b/src/app/modules/shared/services/technology.service.spec.ts index 4632f043..a1b0a176 100644 --- a/src/app/modules/shared/services/technology.service.spec.ts +++ b/src/app/modules/shared/services/technology.service.spec.ts @@ -9,6 +9,7 @@ describe('TechnologyService', () => { let httpMock: HttpTestingController; const technologyList: Technology = { items: [{ name: 'java' }, { name: 'javascript' }] }; + const technologyListWithSpecialChar: Technology = { items: [{ name: 'c#' }, { name: 'c#-2.0' }] }; beforeEach(() => { TestBed.configureTestingModule({ @@ -42,4 +43,18 @@ describe('TechnologyService', () => { expect(getTechnologiesRequest.request.method).toBe('GET'); getTechnologiesRequest.flush(technologyList); }); + + it('technologies with special characters are read using GET from url', () => { + const technologyFoundSize = technologyListWithSpecialChar.items.length; + const technologyName = 'c#'; + service.getTechnologies(technologyName).subscribe((technologyInResponse) => { + expect(technologyInResponse.items.length).toBe(technologyFoundSize); + }); + const getTechnologiesRequest = httpMock.expectOne( + `${service.baseUrl}&inname=${encodeURIComponent(technologyName)}&site=stackoverflow&key=${STACK_EXCHANGE_ID}&access_token=${STACK_EXCHANGE_ACCESS_TOKEN}` + ); + expect(getTechnologiesRequest.request.method).toBe('GET'); + getTechnologiesRequest.flush(technologyListWithSpecialChar); + }); + }); diff --git a/src/app/modules/shared/services/technology.service.ts b/src/app/modules/shared/services/technology.service.ts index 5e2dd88d..85a49d87 100644 --- a/src/app/modules/shared/services/technology.service.ts +++ b/src/app/modules/shared/services/technology.service.ts @@ -12,7 +12,7 @@ export class TechnologyService { constructor(private http: HttpClient) {} getTechnologies(value: string): Observable { - const url = `${this.baseUrl}&inname=${value}&site=stackoverflow&key=${STACK_EXCHANGE_ID}&access_token=${STACK_EXCHANGE_ACCESS_TOKEN}`; + const url = `${this.baseUrl}&inname=${encodeURIComponent(value)}&site=stackoverflow&key=${STACK_EXCHANGE_ID}&access_token=${STACK_EXCHANGE_ACCESS_TOKEN}`; return this.http.get(url); } }