Skip to content

Commit

Permalink
refactor: instantiated jobPostService once in router and adjusted tests
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelIkoli committed Mar 2, 2025
1 parent 3c0c468 commit abe3dc4
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 18 deletions.
24 changes: 12 additions & 12 deletions pkg/controller/jobpost/jobpost.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/hngprojects/hng_boilerplate_golang_web/external/request"
"github.com/hngprojects/hng_boilerplate_golang_web/internal/models"
"github.com/hngprojects/hng_boilerplate_golang_web/pkg/repository/storage"
service "github.com/hngprojects/hng_boilerplate_golang_web/services/jobpost"
jobPostServices "github.com/hngprojects/hng_boilerplate_golang_web/services/jobpost"
"github.com/hngprojects/hng_boilerplate_golang_web/utility"
"gorm.io/gorm"
)
Expand All @@ -19,7 +19,7 @@ type Controller struct {
Validator *validator.Validate
Logger *utility.Logger
ExtReq request.ExternalRequest
JobPostService service.JobPostService
JobPostService jobPostServices.JobPostService
}

func (base *Controller) CreateJobPost(c *gin.Context) {
Expand All @@ -37,9 +37,9 @@ func (base *Controller) CreateJobPost(c *gin.Context) {
return
}

jobPostService := service.NewJobPostService(base.Db.Postgresql.DB())


respData, err := jobPostService.CreateJobPost(req)
respData, err := base.JobPostService.CreateJobPost(req)
if err != nil {
rd := utility.BuildErrorResponse(http.StatusInternalServerError, "error", "Failed to create job post", err, nil)
c.JSON(http.StatusInternalServerError, rd)
Expand All @@ -54,8 +54,8 @@ func (base *Controller) CreateJobPost(c *gin.Context) {

func (base *Controller) FetchAllJobPost(c *gin.Context) {

jobPostService := service.NewJobPostService(base.Db.Postgresql.DB())
jobPosts, paginationResponse, err := jobPostService.GetPaginatedJobPosts(c)

jobPosts, paginationResponse, err := base.JobPostService.GetPaginatedJobPosts(c)
if err != nil {
if err == gorm.ErrRecordNotFound {
rd := utility.BuildErrorResponse(http.StatusNotFound, "error", "Jobs not found", err, nil)
Expand Down Expand Up @@ -84,8 +84,8 @@ func (base *Controller) FetchJobPostByID(c *gin.Context) {
c.JSON(http.StatusBadRequest, rd)
return
}
jobPostService := service.NewJobPostService(base.Db.Postgresql.DB())
respData, err := jobPostService.FetchJobPostByID(id)

respData, err := base.JobPostService.FetchJobPostByID(id)
if err != nil {
if err == gorm.ErrRecordNotFound {
rd := utility.BuildErrorResponse(http.StatusNotFound, "error", "Job post not found", err, nil)
Expand Down Expand Up @@ -124,8 +124,8 @@ func (base *Controller) UpdateJobPostByID(c *gin.Context) {
return
}

jobPostService := service.NewJobPostService(base.Db.Postgresql.DB())
result, err := jobPostService.UpdateJobPost(req, id)

result, err := base.JobPostService.UpdateJobPost(req, id)
if err != nil {
if err == gorm.ErrRecordNotFound {
rd := utility.BuildErrorResponse(http.StatusNotFound, "error", "Job post not found", err, nil)
Expand All @@ -151,8 +151,8 @@ func (base *Controller) DeleteJobPostByID(c *gin.Context) {
return
}

jobPostService := service.NewJobPostService(base.Db.Postgresql.DB())
err := jobPostService.DeleteJobPostByID(id)

err := base.JobPostService.DeleteJobPostByID(id)
if err != nil {
if err == gorm.ErrRecordNotFound {
rd := utility.BuildErrorResponse(http.StatusNotFound, "error", "Job post not found", err, nil)
Expand Down
4 changes: 3 additions & 1 deletion pkg/router/jobpost.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ import (
"github.com/hngprojects/hng_boilerplate_golang_web/pkg/controller/jobpost"
"github.com/hngprojects/hng_boilerplate_golang_web/pkg/middleware"
"github.com/hngprojects/hng_boilerplate_golang_web/pkg/repository/storage"
jobPostServices "github.com/hngprojects/hng_boilerplate_golang_web/services/jobpost"
"github.com/hngprojects/hng_boilerplate_golang_web/utility"
)

func JobPost(r *gin.Engine, ApiVersion string, validator *validator.Validate, db *storage.Database, logger *utility.Logger) *gin.Engine {
extReq := request.ExternalRequest{Logger: logger, Test: false}
controller := jobpost.Controller{Db: db, Validator: validator, Logger: logger, ExtReq: extReq}
jobPostService := jobPostServices.NewJobPostService(db.Postgresql.DB())
controller := jobpost.Controller{Db: db, Validator: validator, Logger: logger, ExtReq: extReq, JobPostService: jobPostService}
jobPostUrl := r.Group(fmt.Sprintf("%v", ApiVersion))
{
jobPostUrl.POST("/jobs", middleware.Authorize(db.Postgresql.DB(), models.RoleIdentity.SuperAdmin), controller.CreateJobPost)
Expand Down
16 changes: 11 additions & 5 deletions tests/test_jobpost/jobpost_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/hngprojects/hng_boilerplate_golang_web/pkg/controller/jobpost"
"github.com/hngprojects/hng_boilerplate_golang_web/pkg/middleware"
"github.com/hngprojects/hng_boilerplate_golang_web/pkg/repository/storage"
jobPostServices "github.com/hngprojects/hng_boilerplate_golang_web/services/jobpost"
tst "github.com/hngprojects/hng_boilerplate_golang_web/tests"
"github.com/hngprojects/hng_boilerplate_golang_web/utility"
)
Expand Down Expand Up @@ -125,7 +126,8 @@ func TestJobPostCreate(t *testing.T) {
},
}

jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger}
jobPostService := jobPostServices.NewJobPostService(db.Postgresql.DB())
jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger, JobPostService: jobPostService}

for _, test := range tests {
r := gin.Default()
Expand Down Expand Up @@ -184,7 +186,8 @@ func TestFetchAllJobPost(t *testing.T) {
db := storage.Connection()
requestURI := "/api/v1/jobs"

jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger}
jobPostService := jobPostServices.NewJobPostService(db.Postgresql.DB())
jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger, JobPostService: jobPostService}

r := gin.Default()
jobUrl := r.Group("/api/v1")
Expand Down Expand Up @@ -265,7 +268,8 @@ func TestFetchJobPostById(t *testing.T) {
Qualifications: "Ability to work solo, Bachelor degree",
}

jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger}
jobPostService := jobPostServices.NewJobPostService(db.Postgresql.DB())
jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger, JobPostService: jobPostService}

r.POST("/api/v1/jobs", jobPostController.CreateJobPost)

Expand Down Expand Up @@ -371,7 +375,8 @@ func TestUpdateJobPostById(t *testing.T) {
Qualifications: "Ability to work solo, Bachelor degree",
}

jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger}
jobPostService := jobPostServices.NewJobPostService(db.Postgresql.DB())
jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger, JobPostService: jobPostService}

r.POST("/api/v1/jobs", jobPostController.CreateJobPost)
var b bytes.Buffer
Expand Down Expand Up @@ -489,7 +494,8 @@ func TestDeleteJobPostById(t *testing.T) {
Qualifications: "Ability to work solo, Bachelor degree",
}

jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger}
jobPostService := jobPostServices.NewJobPostService(db.Postgresql.DB())
jobPostController := jobpost.Controller{Db: db, Validator: validatorRef, Logger: logger, JobPostService: jobPostService}

r.POST("/api/v1/jobs", jobPostController.CreateJobPost)
var b bytes.Buffer
Expand Down

0 comments on commit abe3dc4

Please sign in to comment.