Skip to content

Commit

Permalink
Merge pull request #104 from KUSITMS-29th-TEAM-B/feat/flight-86
Browse files Browse the repository at this point in the history
feat : JD 수정 API 구현
  • Loading branch information
isprogrammingfun authored May 20, 2024
2 parents ef0868b + 661688f commit 479b239
Show file tree
Hide file tree
Showing 18 changed files with 250 additions and 96 deletions.
7 changes: 7 additions & 0 deletions Api-Module/src/docs/asciidoc/JobDescription.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@ operation::JobDescriptionControllerTest/updateApplyInfo[snippets='http-request,p

operation::JobDescriptionControllerTest/updateWriteStatus[snippets='http-request,path-parameters,request-headers,http-response']

[[UPDATE-JD]]
=== JD 수정

operation::JobDescriptionControllerTest/updateJobDescription[snippets='http-request,path-parameters,request-headers,request-fields,http-response']

[[DELETE-JD]]




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ package com.bamyanggang.apimodule.domain.jobDescription.application.dto

class ApplyInfo {

data class Request(
val contents: List<ContentInfo>
)
sealed class Request {
data class Update(
val contents: List<ContentInfo>
) : Request()

}

data class Response(
val applyContentList: List<ContentInfo>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,19 @@ import com.bamyanggang.domainmodule.domain.jobDescription.enums.WriteStatus
import java.time.LocalDateTime
import java.util.UUID

class GetJobDescriptionInfo {
class JobDescriptionInfo {

sealed class Request {
data class Update(
val enterpriseName: String?,
val title: String?,
val content: String?,
val link: String?,
val startedAt: LocalDateTime?,
val endedAt: LocalDateTime?
) : Request()

}

sealed class Response {
data class Basic(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import java.util.*
@Service
class ApplyCreateService(
private val applyAppender: ApplyAppender,
private val jobDescriptionReader: JobDescriptionReader,
private val jobDescriptionModifier: JobDescriptionModifier
) {
@Transactional
Expand All @@ -25,8 +24,7 @@ class ApplyCreateService(
)
}

val jobDescription = jobDescriptionReader.readJobDescriptionById(jobDescriptionId)
jobDescriptionModifier.modifyWriteStatus(jobDescription)
jobDescriptionModifier.modifyWriteStatus(jobDescriptionId)
applyAppender.appendApply(contents = applyContents, jobDescriptionId = jobDescriptionId)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ApplyUpdateService(
private val applyModifier: ApplyModifier
) {

fun updateApplyInfo(jobDescriptionId: UUID, request: ApplyInfo.Request) {
fun updateApplyInfo(jobDescriptionId: UUID, request: ApplyInfo.Request.Update) {
applyModifier.modifyApplyInfo(
jobDescriptionId = jobDescriptionId,
applyContentList = request.contents.map {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.bamyanggang.apimodule.domain.jobDescription.application.service

import com.bamyanggang.apimodule.common.dto.PageResponse
import com.bamyanggang.apimodule.common.getAuthenticationPrincipal
import com.bamyanggang.apimodule.domain.jobDescription.application.dto.GetJobDescriptionInfo
import com.bamyanggang.apimodule.domain.jobDescription.application.dto.JobDescriptionInfo
import com.bamyanggang.domainmodule.common.pagination.PageDomain
import com.bamyanggang.domainmodule.domain.jobDescription.enums.SortType
import com.bamyanggang.domainmodule.domain.jobDescription.enums.WriteStatus
Expand All @@ -19,12 +19,12 @@ class JobDescriptionInfoGetService(
) {

@Transactional(readOnly = true)
fun getJobDescriptionInfo(pageable: Pageable, writeStatus: WriteStatus?, sortType: SortType?): PageResponse<GetJobDescriptionInfo.Response.Basic> {
fun getJobDescriptionInfo(pageable: Pageable, writeStatus: WriteStatus?, sortType: SortType?): PageResponse<JobDescriptionInfo.Response.Basic> {
return getAuthenticationPrincipal().let{ userId ->
val jobDescriptions = jobDescriptionReader.readJobDescriptionByUserIdAndSortType(userId, pageable.pageNumber, pageable.pageSize, sortType, writeStatus)

val jobDescriptionInfoResponses = jobDescriptions.content.map{ jobDescription ->
GetJobDescriptionInfo.Response.Basic(
JobDescriptionInfo.Response.Basic(
jobDescription.id,
jobDescription.getRemainingDate(),
jobDescription.enterpriseName,
Expand All @@ -43,9 +43,9 @@ class JobDescriptionInfoGetService(
}

@Transactional(readOnly = true)
fun getJobDescriptionDetail(jobDescriptionId: UUID): GetJobDescriptionInfo.Response.Detail {
fun getJobDescriptionDetail(jobDescriptionId: UUID): JobDescriptionInfo.Response.Detail {
return jobDescriptionReader.readJobDescriptionById(jobDescriptionId).let{ jobDescription ->
GetJobDescriptionInfo.Response.Detail(
JobDescriptionInfo.Response.Detail(
jobDescription.getRemainingDate(),
jobDescription.enterpriseName,
jobDescription.title,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.bamyanggang.apimodule.domain.jobDescription.application.service

import com.bamyanggang.apimodule.domain.jobDescription.application.dto.JobDescriptionInfo
import com.bamyanggang.domainmodule.domain.jobDescription.service.JobDescriptionModifier
import org.springframework.stereotype.Service
import java.util.*

@Service
class JobDescriptionInfoUpdateService(
private val jobDescriptionModifier: JobDescriptionModifier,
) {
fun updateWriteStatus(jobDescriptionId: UUID) {
jobDescriptionModifier.modifyWriteStatus(jobDescriptionId)
}

fun updateJobDescriptionDetail(jobDescriptionId: UUID, request: JobDescriptionInfo.Request.Update) {
jobDescriptionModifier.modifyJobDescription(
jobDescriptionId, request.enterpriseName,
request.title, request.content,
request.link, request.startedAt, request.endedAt)
}

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class JobDescriptionController(
private val jobDescriptionInfoGetService: JobDescriptionInfoGetService,
private val applyInfoGetService: ApplyInfoGetService,
private val applyUpdateService: ApplyUpdateService,
private val jobDescriptionUpdateService: JobDescriptionUpdateService
private val jobDescriptionInfoUpdateService: JobDescriptionInfoUpdateService
) {

@PostMapping(JobDescriptionApi.BASE_URL)
Expand All @@ -42,14 +42,14 @@ class JobDescriptionController(
pageable: Pageable,
@RequestParam writeStatus: WriteStatus?,
@RequestParam sortType: SortType?
): PageResponse<GetJobDescriptionInfo.Response.Basic> {
): PageResponse<JobDescriptionInfo.Response.Basic> {
return jobDescriptionInfoGetService.getJobDescriptionInfo(pageable, writeStatus, sortType)
}

@GetMapping(JobDescriptionApi.DETAIL)
fun getJobDescriptionDetail(
@PathVariable("jobDescriptionId") jobDescriptionId: UUID
): GetJobDescriptionInfo.Response.Detail = jobDescriptionInfoGetService.getJobDescriptionDetail(jobDescriptionId)
): JobDescriptionInfo.Response.Detail = jobDescriptionInfoGetService.getJobDescriptionDetail(jobDescriptionId)

@GetMapping(JobDescriptionApi.APPLY)
fun getApplyInfo(
Expand All @@ -59,12 +59,18 @@ class JobDescriptionController(
@PutMapping(JobDescriptionApi.APPLY)
fun updateApplyInfo(
@PathVariable("jobDescriptionId") jobDescriptionId: UUID,
@RequestBody request: ApplyInfo.Request
@RequestBody request: ApplyInfo.Request.Update
) = applyUpdateService.updateApplyInfo(jobDescriptionId, request)

@PatchMapping(JobDescriptionApi.STATUS)
fun updateJobDescription(
fun updateJobDescriptionWriteStatus(
@PathVariable("jobDescriptionId") jobDescriptionId: UUID
) = jobDescriptionUpdateService.updateWriteStatus(jobDescriptionId)
) = jobDescriptionInfoUpdateService.updateWriteStatus(jobDescriptionId)

@PatchMapping(JobDescriptionApi.DETAIL)
fun updateJobDescriptionDetail(
@PathVariable("jobDescriptionId") jobDescriptionId: UUID,
@RequestBody request: JobDescriptionInfo.Request.Update
) = jobDescriptionInfoUpdateService.updateJobDescriptionDetail(jobDescriptionId, request)

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,19 @@ package com.bamyanggang.apimodule.domain.jobDescription.application
import com.bamyanggang.apimodule.domain.jobDescription.application.dto.CreateApply
import com.bamyanggang.apimodule.domain.jobDescription.application.service.ApplyCreateService
import com.bamyanggang.commonmodule.fixture.generateFixture
import com.bamyanggang.domainmodule.domain.jobDescription.aggregate.JobDescription
import com.bamyanggang.domainmodule.domain.jobDescription.service.ApplyAppender
import com.bamyanggang.domainmodule.domain.jobDescription.service.JobDescriptionModifier
import com.bamyanggang.domainmodule.domain.jobDescription.service.JobDescriptionReader
import io.kotest.core.spec.style.BehaviorSpec
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import java.time.LocalDateTime
import java.util.*



class ApplyCreateServiceTest : BehaviorSpec({
val applyAppender = mockk<ApplyAppender>(relaxed = true)
val jobDescriptionReader = mockk<JobDescriptionReader>(relaxed = true)
val jobDescriptionModifier = mockk<JobDescriptionModifier>(relaxed = true)
val service = ApplyCreateService(applyAppender, jobDescriptionReader, jobDescriptionModifier)
val service = ApplyCreateService(applyAppender, jobDescriptionModifier)

given("ApplyCreateService.createApply") {
val request: CreateApply.Request = generateFixture {
Expand All @@ -33,18 +28,6 @@ class ApplyCreateServiceTest : BehaviorSpec({
}
val jobDescriptionId: UUID = generateFixture()

val jobDescription: JobDescription = generateFixture{
it.set("enterpriseName", "기업 이름")
it.set("title", "직무 공고 제목")
it.set("content", "직무 공고 내용")
it.set("link", "직무 공고 링크")
it.set("startedAt", LocalDateTime.now())
it.set("endedAt", LocalDateTime.now().plusDays(1))
it.set("userId", UUID.randomUUID())
}

every { jobDescriptionReader.readJobDescriptionById(jobDescriptionId) } returns jobDescription

`when`("request와 jobDescriptionId가 주어지면") {
service.createApply(request, jobDescriptionId)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class ApplyUpdateServiceTest: BehaviorSpec({

given("ApplyUpdateService") {
val jobDescriptionId = UUID.randomUUID()
val request = ApplyInfo.Request(
val request = ApplyInfo.Request.Update(
contents = listOf(
ApplyInfo.ContentInfo(
question = "질문1",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,5 @@
package com.bamyanggang.apimodule.domain.jobDescription.application

import com.bamyanggang.apimodule.domain.jobDescription.application.dto.CreateJobDescription
import com.bamyanggang.apimodule.domain.jobDescription.application.service.JobDescriptionCreateService
import com.bamyanggang.commonmodule.fixture.generateFixture
import com.bamyanggang.domainmodule.domain.jobDescription.service.JobDescriptionAppender
import io.kotest.core.spec.style.BehaviorSpec
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkStatic
import org.springframework.security.core.Authentication
import org.springframework.security.core.context.SecurityContext
import org.springframework.security.core.context.SecurityContextHolder
import io.mockk.verify
import java.time.LocalDateTime
import java.util.UUID

/**
* Todo: securityContext를 어떻게 처리하지?
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package com.bamyanggang.apimodule.domain.jobDescription.application

import com.bamyanggang.apimodule.domain.jobDescription.application.service.JobDescriptionUpdateService
import com.bamyanggang.apimodule.domain.jobDescription.application.dto.JobDescriptionInfo
import com.bamyanggang.apimodule.domain.jobDescription.application.service.JobDescriptionInfoUpdateService
import com.bamyanggang.commonmodule.fixture.generateFixture
import com.bamyanggang.domainmodule.domain.jobDescription.service.JobDescriptionModifier
import com.bamyanggang.domainmodule.domain.jobDescription.service.JobDescriptionReader
import io.kotest.core.spec.style.BehaviorSpec
import io.mockk.mockk
import io.mockk.verify
import java.time.LocalDateTime
import java.util.UUID

class JobDescriptionUpdateServiceTest: BehaviorSpec({
val jobDescriptionModifier = mockk<JobDescriptionModifier>(relaxed = true)
val jobDescriptionReader = mockk<JobDescriptionReader>(relaxed = true)
val service = JobDescriptionUpdateService(jobDescriptionModifier, jobDescriptionReader)
val service = JobDescriptionInfoUpdateService(jobDescriptionModifier)

given("JobDescriptionUpdateService.updateWriteStatus") {
val jobDescriptionId = UUID.randomUUID()
Expand All @@ -23,4 +24,22 @@ class JobDescriptionUpdateServiceTest: BehaviorSpec({
}
}

given("JobDescriptionUpdateService.updateJobDescriptionDetail") {
val jobDescriptionId = UUID.randomUUID()
val request: JobDescriptionInfo.Request.Update = generateFixture {
it.set("enterpriseName", "기업명")
it.set("title", "제목")
it.set("content", "내용")
it.set("link", "링크")
it.set("startedAt",LocalDateTime.now())
it.set("endedAt",LocalDateTime.now().plusDays(1))
}
`when`("직무 공고 id와 request가 주어지면") {
service.updateJobDescriptionDetail(jobDescriptionId, request)
then("modifyJobDescription이 호출된다.") {
verify { jobDescriptionModifier.modifyJobDescription(any(), any(), any(), any(), any(), any(), any()) }
}
}
}

})
Loading

0 comments on commit 479b239

Please sign in to comment.