valid and invalid URL of the url-shortener.service.spec.ts
This commit is contained in:
parent
5e5a584042
commit
23bdef3fbc
4 changed files with 24 additions and 41 deletions
|
@ -1,22 +0,0 @@
|
|||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
|
||||
describe('AppController', () => {
|
||||
let appController: AppController;
|
||||
|
||||
beforeEach(async () => {
|
||||
const app: TestingModule = await Test.createTestingModule({
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
}).compile();
|
||||
|
||||
appController = app.get<AppController>(AppController);
|
||||
});
|
||||
|
||||
describe('root', () => {
|
||||
it('should return "Hello World!"', () => {
|
||||
expect(appController.getHello()).toBe('Hello World!');
|
||||
});
|
||||
});
|
||||
});
|
|
@ -7,6 +7,7 @@ export class DnsService {
|
|||
private lookup = util.promisify(dns.lookup);
|
||||
|
||||
async isValidUrl(url: string): Promise<boolean> {
|
||||
console.log(url)
|
||||
try {
|
||||
const hostname = new URL(url).hostname;
|
||||
await this.lookup(hostname);
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { UrlShortenerController } from './url-shortener.controller';
|
||||
|
||||
describe('UrlShortenerController', () => {
|
||||
let controller: UrlShortenerController;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
controllers: [UrlShortenerController],
|
||||
}).compile();
|
||||
|
||||
controller = module.get<UrlShortenerController>(UrlShortenerController);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(controller).toBeDefined();
|
||||
});
|
||||
});
|
|
@ -1,18 +1,40 @@
|
|||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { UrlShortenerService } from './url-shortener.service';
|
||||
import { DnsService } from '../dns/dns.service';
|
||||
|
||||
describe('UrlShortenerService', () => {
|
||||
let service: UrlShortenerService;
|
||||
let dnsService: DnsService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [UrlShortenerService],
|
||||
providers: [
|
||||
UrlShortenerService,
|
||||
{ provide: DnsService, useValue: { isValidUrl: jest.fn().mockResolvedValue(true) } },
|
||||
],
|
||||
}).compile();
|
||||
|
||||
service = module.get<UrlShortenerService>(UrlShortenerService);
|
||||
dnsService = module.get<DnsService>(DnsService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
|
||||
it('should generate and retrieve a short URL', async () => {
|
||||
jest.spyOn(dnsService, 'isValidUrl').mockResolvedValue(true);
|
||||
const url = 'https://example.com';
|
||||
const shortUrl = await service.generateShortUrl(url);
|
||||
expect(shortUrl).toBeDefined();
|
||||
expect(await service.getOriginalUrl(shortUrl)).toBe(url);
|
||||
});
|
||||
|
||||
it('should throw an error for an invalid URL', async () => {
|
||||
jest.spyOn(dnsService, 'isValidUrl').mockResolvedValue(false);
|
||||
const url = 'http://invalid-url';
|
||||
|
||||
await expect(service.generateShortUrl(url)).rejects.toThrow('URL is invalid');
|
||||
});
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue