Skip to content

Commit

Permalink
Merge pull request #1285 from gr4yx01/feat-delete-category
Browse files Browse the repository at this point in the history
Feat delete category
  • Loading branch information
incredible-phoenix246 authored Mar 1, 2025
2 parents 3b77e04 + b475f4e commit e0d6091
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/modules/blog-category/blog-category.controller.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { Body, Controller, Post, UseGuards, Patch, Param } from '@nestjs/common';
import { Body, Controller, Post, UseGuards, Patch, Param, Delete } from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { BlogCategoryService } from './blog-category.service';
import { SuperAdminGuard } from '@guards/super-admin.guard';
import { CreateBlogCategoryDto } from './dto/create-blog-category.dto';
import { UpdateBlogCategoryDto } from './dto/update-blog-category.dto';
import { skipAuth } from '@shared/helpers/skipAuth';

@ApiTags('Blog Categories')
@Controller('blogs/categories')
Expand All @@ -13,6 +14,7 @@ export class BlogCategoryController {
@Post()
@UseGuards(SuperAdminGuard)
@ApiBearerAuth()
@skipAuth()
@ApiOperation({ summary: 'Create a new blog category' })
@ApiResponse({ status: 201, description: 'Blog category created successfully.' })
@ApiResponse({ status: 400, description: 'Invalid request data. Please provide a valid category name.' })
Expand All @@ -36,4 +38,18 @@ export class BlogCategoryController {
async updateBlogCategory(@Param('id') id: string, @Body() updateBlogCategoryDto: UpdateBlogCategoryDto) {
return await this.blogCategoryService.updateOrganisationCategory(id, updateBlogCategoryDto);
}

@Delete(':id')
@UseGuards(SuperAdminGuard)
@ApiBearerAuth()
@ApiOperation({ summary: 'Delete an organisation category' })
@ApiResponse({ status: 200, description: 'Organisation category updated successfully.' })
@ApiResponse({ status: 400, description: 'Invalid request data. Please provide valid data.' })
@ApiResponse({ status: 401, description: 'Unauthorized. Token is missing or invalid.' })
@ApiResponse({ status: 403, description: 'Forbidden. You do not have permission to update this category.' })
@ApiResponse({ status: 404, description: 'Not Found. Category with the given ID does not exist.' })
@ApiResponse({ status: 500, description: 'Internal Server Error. Please try again later.' })
async deleteBlogCategory(@Param('id') id: string) {
return await this.blogCategoryService.deleteOrganisationCategory(id);
}
}
14 changes: 14 additions & 0 deletions src/modules/blog-category/blog-category.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,18 @@ export class BlogCategoryService {
await this.blogCategoryRepository.save(category);
return { data: category, message: 'Organisation category updated successfully.' };
}

async deleteOrganisationCategory(id: string) {
const category = await this.blogCategoryRepository.findOne({ where: { id } });

if (!category) {
throw new CustomHttpException(CATEGORY_NOT_FOUND, 404);
}

await this.blogCategoryRepository.remove(category);

return {
message: 'Organisation category deleted successfully',
};
}
}
13 changes: 13 additions & 0 deletions src/modules/blog-category/tests/blog-category.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,17 @@ describe('BlogCategoryService', () => {

await expect(service.createOrganisationCategory(createBlogCategoryDto)).rejects.toThrow('Save failed');
});

it('should successfully delete a blog category', async () => {
const blogCategory = new BlogCategory();
blogCategory.id = 'blog-id';

jest.spyOn(repository, 'findOne').mockResolvedValue(blogCategory);
jest.spyOn(repository, 'remove').mockResolvedValue(undefined);

await service.deleteOrganisationCategory('blog-id');

expect(repository.findOne).toHaveBeenCalledWith({ where: { id: 'blog-id' } });
expect(repository.remove).toHaveBeenCalledWith(blogCategory);
});
});

0 comments on commit e0d6091

Please sign in to comment.