diff --git a/backend/src/album/album.controller.spec.ts b/backend/src/album/album.controller.spec.ts index 3662e22..d4a1317 100644 --- a/backend/src/album/album.controller.spec.ts +++ b/backend/src/album/album.controller.spec.ts @@ -30,7 +30,7 @@ describe('AlbumController', () => { findOneBy: jest.fn().mockResolvedValue({ id: 1, title: 'some album', artist: 'some artist', genre: 'some genre' }), create: jest.fn().mockResolvedValue(mockAlbum), save: jest.fn().mockResolvedValue({ id: 1, title: 'some album', artist: 'some artist', genre: 'some genre' }), - update: jest.fn().mockResolvedValue("Album updated successfully"), + update: jest.fn().mockResolvedValue(mockAlbum), delete: jest.fn().mockResolvedValue(mockDeleteResult), }, }, @@ -60,14 +60,14 @@ describe('AlbumController', () => { describe('create', () => { it('should return the Album ID', async () => { - expect(await controller.create(mockCreateAlbumDto)).toStrictEqual(1); + expect(await controller.create(mockCreateAlbumDto)).toStrictEqual(mockAlbum); }) }) describe('update', () => { it('should return the success message', async () => { mockUpdateAlbumDto.id = 1; - expect(await controller.update(1, mockUpdateAlbumDto)).toStrictEqual("Album updated successfully"); + expect(await controller.update(1, mockUpdateAlbumDto)).toStrictEqual(mockAlbum); }) }) diff --git a/backend/src/album/album.controller.ts b/backend/src/album/album.controller.ts index 526d326..bb7de97 100644 --- a/backend/src/album/album.controller.ts +++ b/backend/src/album/album.controller.ts @@ -22,13 +22,13 @@ export class AlbumController { @Post() @UsePipes(new ValidationPipe({ transform: true })) - async create(@Body() createAlbumDto: CreateAlbumDto): Promise { + async create(@Body() createAlbumDto: CreateAlbumDto): Promise { return this.albumService.create(createAlbumDto); } @Put(':id') @UsePipes(new ValidationPipe({ transform: true })) - async update(@Param('id') id: number, @Body() updateAlbumDto: UpdateAlbumDto): Promise { + async update(@Param('id') id: number, @Body() updateAlbumDto: UpdateAlbumDto): Promise { return this.albumService.update(id, updateAlbumDto); } diff --git a/backend/src/album/album.service.spec.ts b/backend/src/album/album.service.spec.ts index c822bdb..7d464be 100644 --- a/backend/src/album/album.service.spec.ts +++ b/backend/src/album/album.service.spec.ts @@ -27,7 +27,7 @@ describe('AlbumService', () => { findOneBy: jest.fn().mockResolvedValue({ id: 1, title: 'some album', artist: 'some artist', genre: 'some genre' }), create: jest.fn().mockResolvedValue(mockAlbum), save: jest.fn().mockResolvedValue({ id: 1, title: 'some album', artist: 'some artist', genre: 'some genre' }), - update: jest.fn().mockResolvedValue("Album updated successfully"), + update: jest.fn().mockResolvedValue(mockAlbum), delete: jest.fn().mockResolvedValue(mockDeleteResult), }, }, @@ -56,14 +56,14 @@ describe('AlbumService', () => { describe('create', () => { it('should return the Album ID', async () => { - expect(await service.create(mockCreateAlbumDto)).toStrictEqual(1); + expect(await service.create(mockCreateAlbumDto)).toStrictEqual(mockAlbum); }) }) describe('update', () => { it('should return the success message', async () => { mockUpdateAlbumDto.id = 1; - expect(await service.update(1, mockUpdateAlbumDto)).toStrictEqual("Album updated successfully"); + expect(await service.update(1, mockUpdateAlbumDto)).toStrictEqual(mockAlbum); }) }) diff --git a/backend/src/album/album.service.ts b/backend/src/album/album.service.ts index 721bcaa..d707df6 100644 --- a/backend/src/album/album.service.ts +++ b/backend/src/album/album.service.ts @@ -32,30 +32,30 @@ export class AlbumService { }); } - async create(createAlbumDto: CreateAlbumDto): Promise { + async create(createAlbumDto: CreateAlbumDto): Promise { const album = this.albumRepository.create({ title: createAlbumDto.title, artist: createAlbumDto.artist, genre: createAlbumDto.genre }); const savedAlbum = await this.albumRepository.save(album); - return savedAlbum.id; + return savedAlbum; } - async update(id: number, updateAlbumDto: UpdateAlbumDto): Promise { + async update(id: number, updateAlbumDto: UpdateAlbumDto): Promise { if (id === updateAlbumDto.id) { const album = this.albumRepository.findOneBy({ id: updateAlbumDto.id }); if (!album) - return "Album not found"; + return null; - await this.albumRepository.update({ id: updateAlbumDto.id }, { + const savedAlbum = await this.albumRepository.update({ id: updateAlbumDto.id }, { title: updateAlbumDto.title, artist: updateAlbumDto.artist, genre: updateAlbumDto.genre }); - return "Album updated successfully"; + return savedAlbum; } else { - return "Album ID does not match posted data"; + return null; } } diff --git a/backend/src/song/song.controller.spec.ts b/backend/src/song/song.controller.spec.ts index 0c0c9a9..ff20221 100644 --- a/backend/src/song/song.controller.spec.ts +++ b/backend/src/song/song.controller.spec.ts @@ -4,9 +4,15 @@ import { SongController } from './song.controller'; import { SongService } from './song.service'; import { Song } from './song.entity'; import { Album } from '../album/album.entity'; +import { CreateSongDto } from './dto/create-song.dto'; +import { UpdateSongDto } from './dto/update-song.dto'; +import { DeleteResult, Repository } from 'typeorm'; const mockSong = new Song(); const mockAlbum = new Album(); +const mockCreateSongDto = new CreateSongDto(); +const mockUpdateSongDto = new UpdateSongDto(); +const mockDeleteResult = new DeleteResult(); describe('SongController', () => { let controller: SongController; @@ -19,21 +25,25 @@ describe('SongController', () => { { provide: getRepositoryToken(Song), useValue: { - findAll: jest.fn().mockResolvedValue([mockSong]), - findOneById: jest.fn().mockResolvedValue(mockSong), - create: jest.fn().mockResolvedValue(1), - update: jest.fn().mockResolvedValue("Song updated successfully"), - remove: jest.fn().mockResolvedValue(null), + find: jest.fn().mockResolvedValue([mockSong]), + findOne: jest.fn().mockResolvedValue(mockSong), + findOneBy: jest.fn().mockResolvedValue({ id: 3, title: 'some song', duration: 300, trackNumber: 2, album: mockAlbum }), + create: jest.fn().mockResolvedValue(mockAlbum), + save: jest.fn().mockResolvedValue({ id: 3, title: 'some song', duration: 300, trackNumber: 2, album: mockAlbum }), + update: jest.fn().mockResolvedValue(mockDSong), + delete: jest.fn().mockResolvedValue(mockDeleteResult), }, }, { provide: getRepositoryToken(Album), useValue: { - findAll: jest.fn().mockResolvedValue([mockAlbum]), - findOneById: jest.fn().mockResolvedValue(mockAlbum), - create: jest.fn().mockResolvedValue(1), - update: jest.fn().mockResolvedValue("Album updated successfully"), - remove: jest.fn().mockResolvedValue(null), + find: jest.fn().mockResolvedValue([mockAlbum]), + findOne: jest.fn().mockResolvedValue(mockAlbum), + findOneBy: jest.fn().mockResolvedValue({ id: 1, title: 'some album', artist: 'some artist', genre: 'some genre' }), + create: jest.fn().mockResolvedValue(mockAlbum), + save: jest.fn().mockResolvedValue({ id: 1, title: 'some album', artist: 'some artist', genre: 'some genre' }), + update: jest.fn().mockResolvedValue(mockAlbum), + delete: jest.fn().mockResolvedValue(mockDeleteResult), }, }, ] diff --git a/frontend/src/app/album/page.tsx b/frontend/src/app/album/page.tsx index 6388a8c..c0c7645 100644 --- a/frontend/src/app/album/page.tsx +++ b/frontend/src/app/album/page.tsx @@ -41,11 +41,11 @@ export default function Page() { try { console.log(formData); if (formData.get('id') === "") { + console.log("Creating Album"); const data = await createAlbum(formData); - console.log("Created Album", data); } else { + console.log("Updating Album"); const data = await updateAlbum(formData); - console.log("Updated Album", data); } } catch (error) { console.error("Error creating Album: ", error);