diff --git a/oso-backend.iml b/oso-backend.iml
new file mode 100644
index 0000000..8021953
--- /dev/null
+++ b/oso-backend.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/kotlin/org/oso/core/controllers/EmergencyController.kt b/src/main/kotlin/org/oso/core/controllers/EmergencyController.kt
index 658b3fe..09d1b35 100644
--- a/src/main/kotlin/org/oso/core/controllers/EmergencyController.kt
+++ b/src/main/kotlin/org/oso/core/controllers/EmergencyController.kt
@@ -1,18 +1,16 @@
package org.oso.core.controllers
import org.oso.config.Paths
-import org.oso.core.dtos.EmergencyDto
+import org.oso.core.dtos.*
import org.oso.core.entities.Emergency
import org.oso.core.exceptions.HelpRequesterNotFoundException
import org.oso.core.services.EmergencyService
import org.oso.core.services.HelpRequesterService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus
+import org.springframework.http.ResponseEntity
import org.springframework.stereotype.Controller
-import org.springframework.web.bind.annotation.PostMapping
-import org.springframework.web.bind.annotation.RequestBody
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.ResponseStatus
+import org.springframework.web.bind.annotation.*
@Controller
@@ -39,4 +37,14 @@ class EmergencyController
emergencyService.emit(emergency)
}
+ @PostMapping(Paths.Emergency.ACCEPTED)
+ fun acceptEmergency(@RequestBody emergencyAccepted: EmergencyAcceptedDto): ResponseEntity {
+ emergencyService.acceptEmergency(
+ emergencyId = emergencyAccepted.emergencyId,
+ helpProviderId = emergencyAccepted.helpProviderId
+ )
+
+ return ResponseEntity.accepted().build()
+ }
+
}
\ No newline at end of file
diff --git a/src/main/kotlin/org/oso/core/controllers/HelpProviderController.kt b/src/main/kotlin/org/oso/core/controllers/HelpProviderController.kt
index ef1f4f4..de21b53 100644
--- a/src/main/kotlin/org/oso/core/controllers/HelpProviderController.kt
+++ b/src/main/kotlin/org/oso/core/controllers/HelpProviderController.kt
@@ -47,16 +47,6 @@ class HelpProviderController
}
}
- // TODO eventually move to emergency controller
- @PostMapping(Paths.HelpProvider.ACCEPTED_EMERGENCY)
- fun acceptEmergency(@RequestBody emergencyAccepted: EmergencyAcceptedDto): ResponseEntity {
- helpProviderService.acceptEmergency(
- emergencyId = emergencyAccepted.emergencyId,
- helpProviderId = emergencyAccepted.helpProviderId
- )
-
- return ResponseEntity.accepted().build()
- }
private fun getHelpProviderOrFail(id: String): HelpProvider {
return helpProviderService.findById(id) ?: throw HelpProviderNotFoundException("HelpProvider<$id> not found")
@@ -66,4 +56,5 @@ class HelpProviderController
name = name,
keycloakName = securityService.getCurrentUserName()
)
+
}
\ No newline at end of file
diff --git a/src/main/kotlin/org/oso/core/services/EmergencyService.kt b/src/main/kotlin/org/oso/core/services/EmergencyService.kt
index b2ab87e..ed25101 100644
--- a/src/main/kotlin/org/oso/core/services/EmergencyService.kt
+++ b/src/main/kotlin/org/oso/core/services/EmergencyService.kt
@@ -13,4 +13,5 @@ interface EmergencyService {
* @param emergency The emergency containing relevant information
*/
fun emit(emergency: Emergency)
+ fun acceptEmergency(emergencyId: String, helpProviderId: String)
}
\ No newline at end of file
diff --git a/src/main/kotlin/org/oso/core/services/HelpProviderService.kt b/src/main/kotlin/org/oso/core/services/HelpProviderService.kt
index c498792..d78b203 100644
--- a/src/main/kotlin/org/oso/core/services/HelpProviderService.kt
+++ b/src/main/kotlin/org/oso/core/services/HelpProviderService.kt
@@ -8,5 +8,4 @@ interface HelpProviderService {
fun findById(id: String): HelpProvider?
fun findHelpRequesters(id: String): Set
fun createHelpProvider(helpProvider: HelpProvider): HelpProvider
- fun acceptEmergency(emergencyId: String, helpProviderId: String)
}
\ No newline at end of file
diff --git a/src/main/kotlin/org/oso/core/services/impl/DefaultEmergencyService.kt b/src/main/kotlin/org/oso/core/services/impl/DefaultEmergencyService.kt
index ebb2fb3..6bdb697 100644
--- a/src/main/kotlin/org/oso/core/services/impl/DefaultEmergencyService.kt
+++ b/src/main/kotlin/org/oso/core/services/impl/DefaultEmergencyService.kt
@@ -1,20 +1,27 @@
package org.oso.core.services.impl
import org.oso.core.entities.Emergency
+import org.oso.core.entities.EmergencyStatusType
import org.oso.core.repositories.EmergencyRepository
import org.oso.core.services.EmergencyService
+import org.oso.core.services.EmergencyStatusService
import org.oso.core.services.external.NotificationService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.ResponseBody
+import org.oso.core.repositories.HelpProviderRepository
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
@Service
class DefaultEmergencyService
@Autowired
constructor(
private val notificationService: NotificationService,
- private val emergencyRepository: EmergencyRepository
+ private val emergencyRepository: EmergencyRepository,
+ private val emergencyStatusService: EmergencyStatusService,
+ private val helpProviderRepository: HelpProviderRepository
) : EmergencyService {
override fun emit(emergency: Emergency) {
@@ -33,4 +40,54 @@ class DefaultEmergencyService
override fun findEmergency(emergencyId: String): Emergency? {
return emergencyRepository.findById(emergencyId).orElse(null)
}
+
+ override fun acceptEmergency(emergencyId: String, helpProviderId: String) {
+ val emergency = findEmergency(emergencyId);
+ LOGGER.debug("emergency<$emergencyId> accepted by helpProvider<$helpProviderId>")
+
+ if (emergency == null) {
+ LOGGER.warn("emergency<$emergencyId> does not exist")
+ return
+ }
+
+ val helpProvider = helpProviderRepository.findById(helpProviderId).orElse(null)
+
+ if (helpProvider == null) {
+ LOGGER.warn("helpProvider<$helpProviderId> does not exist")
+ return
+ }
+
+ if (!helpProvider.isAssignedTo(emergency.helpRequester)) {
+ LOGGER.warn("helpProvider<$helpProviderId> is not assigned to helpRequester<${emergency.helpRequester.id}")
+ LOGGER.warn("helpProvider<$helpProviderId> is not allowed to accept emergency<$emergencyId> for helpresquester<${emergency.helpRequester.id}>")
+ return
+ }
+
+ emergencyStatusService.addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
+
+ if (!emergency.active) {
+ LOGGER.info("emergency<$emergencyId> is already resolved")
+ return
+ }
+ emergency.helpRequester.helpProviders
+ .filter { it.expoPushToken != null }
+ .filter { it.id != helpProviderId }
+ .map {
+ notificationService.createEmergencyAcceptedPushNotification(
+ to = it.expoPushToken!!,
+ alarmID = emergencyId,
+ helpRequesterId = emergency.helpRequester.id!!,
+ helpProviderId = helpProviderId
+ )
+ }
+ .let {
+ if(!it.isEmpty()) {
+ notificationService.sendPushNotification(it)
+ }
+ }
+ }
+
+ companion object {
+ private val LOGGER: Logger = LoggerFactory.getLogger(DefaultEmergencyService::class.java)
+ }
}
\ No newline at end of file
diff --git a/src/main/kotlin/org/oso/core/services/impl/DefaultHelpProviderService.kt b/src/main/kotlin/org/oso/core/services/impl/DefaultHelpProviderService.kt
index 75534d3..f7df2ed 100644
--- a/src/main/kotlin/org/oso/core/services/impl/DefaultHelpProviderService.kt
+++ b/src/main/kotlin/org/oso/core/services/impl/DefaultHelpProviderService.kt
@@ -18,7 +18,6 @@ class DefaultHelpProviderService
@Autowired
constructor(
private val notificationService: NotificationService,
- private val emergencyStatusService: EmergencyStatusService,
private val helpProviderRepository: HelpProviderRepository,
private val emergencyService: EmergencyService
) : HelpProviderService {
@@ -39,53 +38,5 @@ class DefaultHelpProviderService
override fun createHelpProvider(helpProvider: HelpProvider): HelpProvider =
helpProviderRepository.save(helpProvider)
- override fun acceptEmergency(emergencyId: String, helpProviderId: String) {
- val emergency = emergencyService.findEmergency(emergencyId);
- LOGGER.debug("emergency<$emergencyId> accepted by helpProvider<$helpProviderId>")
- if (emergency == null) {
- LOGGER.warn("emergency<$emergencyId> does not exist")
- return
- }
-
- val helpProvider = helpProviderRepository.findById(helpProviderId).orElse(null)
-
- if (helpProvider == null) {
- LOGGER.warn("helpProvider<$helpProviderId> does not exist")
- return
- }
-
- if (!helpProvider.isAssignedTo(emergency.helpRequester)) {
- LOGGER.warn("helpProvider<$helpProviderId> is not assigned to helpRequester<${emergency.helpRequester.id}")
- LOGGER.warn("helpProvider<$helpProviderId> is not allowed to accept emergency<$emergencyId> for helpresquester<${emergency.helpRequester.id}>")
- return
- }
-
- emergencyStatusService.addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
-
- if (!emergency.active) {
- LOGGER.info("emergency<$emergencyId> is already resolved")
- return
- }
- emergency.helpRequester.helpProviders
- .filter { it.expoPushToken != null }
- .filter { it.id != helpProviderId }
- .map {
- notificationService.createEmergencyAcceptedPushNotification(
- to = it.expoPushToken!!,
- alarmID = emergencyId,
- helpRequesterId = emergency.helpRequester.id!!,
- helpProviderId = helpProviderId
- )
- }
- .let {
- if(!it.isEmpty()) {
- notificationService.sendPushNotification(it)
- }
- }
- }
-
- companion object {
- private val LOGGER: Logger = LoggerFactory.getLogger(DefaultHelpProviderService::class.java)
- }
}
\ No newline at end of file
diff --git a/src/test/kotlin/org/oso/core/controller/EmergencyControllerTest.kt b/src/test/kotlin/org/oso/core/controller/EmergencyControllerTest.kt
index 06ed337..cf24eeb 100644
--- a/src/test/kotlin/org/oso/core/controller/EmergencyControllerTest.kt
+++ b/src/test/kotlin/org/oso/core/controller/EmergencyControllerTest.kt
@@ -9,10 +9,12 @@ import org.mockito.Mockito
import org.oso.any
import org.oso.core.controllers.EmergencyController
import org.oso.core.dtos.EmergencyDto
+import org.oso.core.dtos.EmergencyAcceptedDto
import org.oso.core.entities.Emergency
import org.oso.core.entities.EmergencyPriority
import org.oso.core.entities.HelpRequester
import org.oso.core.services.EmergencyService
+import org.oso.core.services.HelpProviderService
import org.oso.core.services.HelpRequesterService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs
@@ -36,6 +38,9 @@ class EmergencyControllerTest {
@MockBean
lateinit var emergencyService: EmergencyService
+ @MockBean
+ lateinit var helpProviderService: HelpProviderService
+
@MockBean
lateinit var helpRequesterService: HelpRequesterService
@@ -112,4 +117,40 @@ class EmergencyControllerTest {
// // TODO test fails if helprequester is not given, as the helprequester-id will currently be defaulted to 0 which leads to HTTP 404 instead of 400
// testFailOnMissingParameters(mockMvc, "/${EmergencyController.PATH_EMERGENCY}/${EmergencyController.PATH_EMIT}", parameters)
}
+
+ @Test
+ fun testAcceptEmergency() {
+ val dto = EmergencyAcceptedDto(
+ emergencyId = "25",
+ helpProviderId = "38",
+ helpRequesterId = "46"
+ )
+
+ Mockito.doNothing().`when`(emergencyService).acceptEmergency(dto.emergencyId, dto.helpProviderId)
+
+ this.mockMvc
+ .perform(
+ MockMvcRequestBuilders
+ .post("/${Paths.Emergency.ROOT}/${Paths.Emergency.ACCEPTED}")
+ .contentType(MediaType.APPLICATION_JSON)
+ .characterEncoding(StandardCharsets.UTF_8.name())
+ .content(ObjectMapper().writeValueAsString(dto)))
+
+ .andExpect(MockMvcResultMatchers.status().isAccepted)
+ .andDo(MockMvcRestDocumentation.document("${Paths.Emergency.ROOT}/${Paths.Emergency.ACCEPTED}"))
+
+ Mockito.verify(emergencyService, Mockito.times(1)).acceptEmergency(dto.emergencyId, dto.helpProviderId)
+ }
+
+ @Test
+ fun `testAcceptEmergency throws exception on missing parameter`() {
+// val parameters = listOf(
+// "emergencyId" to "25",
+// "helpProviderId" to "38",
+// "helpRequesterId" to "46"
+// )
+//
+// // TODO this test always fails as jackson does not recognize the non-nullable parameters correclty
+// testFailOnMissingParameters(mockMvc, "${HelpProviderController.PATH_HELP_PROVIDERS}/${HelpProviderController.PATH_ACCEPT_EMERGENCY}", parameters)
+ }
}
\ No newline at end of file
diff --git a/src/test/kotlin/org/oso/core/controller/HelpProviderControllerTest.kt b/src/test/kotlin/org/oso/core/controller/HelpProviderControllerTest.kt
index b9c1acc..b2ee8ef 100644
--- a/src/test/kotlin/org/oso/core/controller/HelpProviderControllerTest.kt
+++ b/src/test/kotlin/org/oso/core/controller/HelpProviderControllerTest.kt
@@ -11,7 +11,6 @@ import org.mockito.Mockito
import org.oso.any
import org.oso.config.Paths
import org.oso.core.controllers.HelpProviderController
-import org.oso.core.dtos.EmergencyAcceptedDto
import org.oso.core.dtos.HelpProviderPushDto
import org.oso.core.entities.HelpProvider
import org.oso.core.entities.HelpRequester
@@ -91,11 +90,6 @@ class HelpProviderControllerTest {
val dto = HelpProviderPushDto(
name = "HelpProvider"
)
- val helpProvider = HelpProvider(
- id = "12345",
- name = dto.name,
- keycloakName = "keycloak12345"
- )
Mockito.`when`(helpProviderService.createHelpProvider(any())).thenThrow(IllegalArgumentException())
//Mockito.doReturn(helpProvider).`when`(helpProviderService).createHelpProvider(ArgumentMatchers.any())
@@ -210,41 +204,7 @@ class HelpProviderControllerTest {
.andExpect(MockMvcResultMatchers.status().isNotFound)
}
- @Test
- fun testAcceptEmergency() {
- val dto = EmergencyAcceptedDto(
- emergencyId = "25",
- helpProviderId = "38",
- helpRequesterId = "46"
- )
-
- Mockito.doNothing().`when`(helpProviderService).acceptEmergency(dto.emergencyId, dto.helpProviderId)
- this.mockMvc
- .perform(
- MockMvcRequestBuilders
- .post("/${Paths.HelpProvider.PROVIDERS}/${Paths.HelpProvider.ACCEPTED_EMERGENCY}")
- .contentType(MediaType.APPLICATION_JSON)
- .characterEncoding(StandardCharsets.UTF_8.name())
- .content(ObjectMapper().writeValueAsString(dto)))
-
- .andExpect(MockMvcResultMatchers.status().isAccepted)
- .andDo(MockMvcRestDocumentation.document("${Paths.HelpProvider.PROVIDERS}/${Paths.HelpProvider.ACCEPTED_EMERGENCY}"))
-
- Mockito.verify(helpProviderService, Mockito.times(1)).acceptEmergency(dto.emergencyId, dto.helpProviderId)
- }
-
- @Test
- fun `testAcceptEmergency throws exception on missing parameter`() {
-// val parameters = listOf(
-// "emergencyId" to "25",
-// "helpProviderId" to "38",
-// "helpRequesterId" to "46"
-// )
-//
-// // TODO this test always fails as jackson does not recognize the non-nullable parameters correclty
-// testFailOnMissingParameters(mockMvc, "${HelpProviderController.PATH_HELP_PROVIDERS}/${HelpProviderController.PATH_ACCEPT_EMERGENCY}", parameters)
- }
companion object {
private const val userName = "User"
diff --git a/src/test/kotlin/org/oso/core/controller/InvitationControllerTest.kt b/src/test/kotlin/org/oso/core/controller/InvitationControllerTest.kt
index 0f75024..a56230e 100644
--- a/src/test/kotlin/org/oso/core/controller/InvitationControllerTest.kt
+++ b/src/test/kotlin/org/oso/core/controller/InvitationControllerTest.kt
@@ -70,7 +70,12 @@ class InvitationControllerTest {
MockMvcRequestBuilders
.get("/${Paths.Invitation.INVITATION}/${Paths.Invitation.ACCEPTED}?token=test123"))
.andExpect(MockMvcResultMatchers.status().isOk)
- .andExpect(MockMvcResultMatchers.content().string(Matchers.containsString("successful")))
+ .andExpect(MockMvcResultMatchers.content().string(
+ Matchers.anyOf(
+ Matchers.containsString("successfull"),
+ Matchers.containsString("erfolgreich angenommen"))
+ )
+ )
Assert.assertThat(hr.helpProviders, Matchers.iterableWithSize(1))
Assert.assertThat(hr.helpProviders, Matchers.hasItem(hp))
@@ -90,7 +95,12 @@ class InvitationControllerTest {
MockMvcRequestBuilders
.get("/${Paths.Invitation.INVITATION}/${Paths.Invitation.ACCEPTED}?token=test123"))
.andExpect(MockMvcResultMatchers.status().isOk)
- .andExpect(MockMvcResultMatchers.content().string(Matchers.containsString("expired")))
+ .andExpect(MockMvcResultMatchers.content().string(
+ Matchers.anyOf(
+ Matchers.containsString("expired"),
+ Matchers.containsString("nicht mehr gültig"))
+ )
+ )
Assert.assertThat(hr.helpProviders, Matchers.iterableWithSize(0))
Assert.assertThat(hp.helpRequesters, Matchers.iterableWithSize(0))
diff --git a/src/test/kotlin/org/oso/core/services/impl/DefaultEmergencyServiceTest.kt b/src/test/kotlin/org/oso/core/services/impl/DefaultEmergencyServiceTest.kt
index bcebc6e..989c748 100644
--- a/src/test/kotlin/org/oso/core/services/impl/DefaultEmergencyServiceTest.kt
+++ b/src/test/kotlin/org/oso/core/services/impl/DefaultEmergencyServiceTest.kt
@@ -1,19 +1,24 @@
package org.oso.core.services.impl
+import org.junit.Before
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.ArgumentMatchers
import org.mockito.InjectMocks
-import org.mockito.Mock
-import org.mockito.Mockito
+import org.mockito.*
import org.oso.any
import org.oso.core.dtos.PushNotification
import org.oso.core.entities.Emergency
+import org.oso.core.entities.EmergencyStatusType
+import org.oso.core.services.EmergencyStatusService
+import org.oso.core.services.EmergencyService
import org.oso.core.entities.HelpProvider
import org.oso.core.entities.HelpRequester
import org.oso.core.repositories.EmergencyRepository
+import org.oso.core.repositories.HelpProviderRepository
import org.oso.core.services.external.NotificationService
import org.springframework.test.context.junit.jupiter.SpringExtension
+import java.util.*
@ExtendWith(SpringExtension::class)
class DefaultEmergencyServiceTest {
@@ -24,6 +29,18 @@ class DefaultEmergencyServiceTest {
@Mock
lateinit var emergencyRepository: EmergencyRepository
+ @Mock
+ lateinit var emergencyService: EmergencyService
+
+ @Mock
+ lateinit var emergencyStatusService: EmergencyStatusService
+
+ @Mock
+ lateinit var helpProviderRepository: HelpProviderRepository
+
+ @InjectMocks
+ lateinit var helpProviderService: DefaultHelpProviderService
+
@Mock
lateinit var notificationService: NotificationService
@@ -89,4 +106,96 @@ class DefaultEmergencyServiceTest {
Mockito.verify(emergencyRepository, Mockito.times(1)).save(emergency)
Mockito.verify(notificationService, Mockito.times(0)).sendPushNotification(listOf(any()))
}
+
+ @Test
+ fun testAcceptEmergency() {
+ val helpRequester = HelpRequester(
+ id = "456",
+ name = "Requester",
+ keycloakName = "Requester"
+ )
+ val helpProvider = HelpProvider(
+ id = "123",
+ name = "HelpProvider",
+ keycloakName = "HelpProvider"
+ )
+ val helpProvider2 = HelpProvider(
+ id = "321",
+ name = "HelpProvider2",
+ keycloakName = "HelpProvider2"
+ )
+ val emergency = Emergency(
+ id = "789",
+ helpRequester = helpRequester
+ )
+ val notification = PushNotification(
+ to = "To",
+ body = "body",
+ data = "data",
+ title = "title"
+ )
+
+ helpProvider.helpRequesters.add(helpRequester)
+ helpProvider2.expoPushToken = "ExpoPushToken"
+ helpProvider2.helpRequesters.add(helpRequester)
+ helpRequester.helpProviders.add(helpProvider)
+ helpRequester.helpProviders.add(helpProvider2)
+
+ Mockito.`when`(helpProviderRepository.findById(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
+ Mockito.doReturn(Optional.of(helpProvider)).`when`(helpProviderRepository).findById(helpProvider.id!!)
+ Mockito.`when`(emergencyService.findEmergency(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
+ Mockito.doReturn(emergency).`when`(emergencyService).findEmergency(emergency.id!!)
+ Mockito.`when`(emergencyStatusService.addStatus(any(), any(), any())).thenThrow(IllegalArgumentException())
+ Mockito.doNothing().`when`(emergencyStatusService).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
+ Mockito.`when`(notificationService.createEmergencyAcceptedPushNotification(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
+ Mockito.doReturn(notification).`when`(notificationService).createEmergencyAcceptedPushNotification(helpProvider2.expoPushToken!!, emergency.id!!, helpRequester.id!!, helpProvider.id!!)
+ Mockito.`when`(notificationService.sendPushNotification(any())).thenThrow(IllegalArgumentException())
+ Mockito.doNothing().`when`(notificationService).sendPushNotification(listOf(notification))
+
+ emergencyService.acceptEmergency(
+ emergencyId = emergency.id!!,
+ helpProviderId = helpProvider.id!!
+ )
+
+ Mockito.verify(emergencyStatusService, Mockito.times(1)).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
+ Mockito.verify(notificationService, Mockito.times(1)).sendPushNotification(listOf(notification))
+ }
+
+ @Test
+ fun `testAcceptEmergency without notification`() {
+ val helpRequester = HelpRequester(
+ id = "123",
+ name = "Requester",
+ keycloakName = "Requester"
+ )
+ val helpProvider = HelpProvider(
+ id = "456",
+ name = "HelpProvider",
+ keycloakName = "HelpProvider"
+ )
+ val emergency = Emergency(
+ id = "789",
+ helpRequester = helpRequester
+ )
+
+ helpProvider.helpRequesters.add(helpRequester)
+ helpRequester.helpProviders.add(helpProvider)
+
+ Mockito.`when`(helpProviderRepository.findById(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
+ Mockito.doReturn(Optional.of(helpProvider)).`when`(helpProviderRepository).findById(helpProvider.id!!)
+ Mockito.`when`(emergencyService.findEmergency(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
+ Mockito.doReturn(emergency).`when`(emergencyService).findEmergency(emergency.id!!)
+ Mockito.`when`(emergencyStatusService.addStatus(any(), any(), any())).thenThrow(IllegalArgumentException())
+ Mockito.doNothing().`when`(emergencyStatusService).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
+ Mockito.`when`(notificationService.sendPushNotification(any())).thenThrow(IllegalArgumentException())
+
+ emergencyService.acceptEmergency(
+ emergencyId = emergency.id!!,
+ helpProviderId = helpProvider.id!!
+ )
+
+ Mockito.verify(emergencyStatusService, Mockito.times(1)).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
+ }
+
+
}
\ No newline at end of file
diff --git a/src/test/kotlin/org/oso/core/services/impl/DefaultHelpProviderServiceTest.kt b/src/test/kotlin/org/oso/core/services/impl/DefaultHelpProviderServiceTest.kt
index 729573e..6cf61df 100644
--- a/src/test/kotlin/org/oso/core/services/impl/DefaultHelpProviderServiceTest.kt
+++ b/src/test/kotlin/org/oso/core/services/impl/DefaultHelpProviderServiceTest.kt
@@ -20,113 +20,14 @@ import java.util.*
@ExtendWith(SpringExtension::class)
class DefaultHelpProviderServiceTest {
- @InjectMocks
- lateinit var helpProviderService: DefaultHelpProviderService
-
- @Mock
- lateinit var helpProviderRepository: HelpProviderRepository
-
- @Mock
- lateinit var emergencyStatusService: EmergencyStatusService
-
@Mock
lateinit var notificationService: NotificationService
- @Mock
- lateinit var emergencyService: EmergencyService
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
}
- @Test
- fun testAcceptEmergency() {
- val helpRequester = HelpRequester(
- id = "456",
- name = "Requester",
- keycloakName = "Requester"
- )
- val helpProvider = HelpProvider(
- id = "123",
- name = "HelpProvider",
- keycloakName = "HelpProvider"
- )
- val helpProvider2 = HelpProvider(
- id = "321",
- name = "HelpProvider2",
- keycloakName = "HelpProvider2"
- )
- val emergency = Emergency(
- id = "789",
- helpRequester = helpRequester
- )
- val notification = PushNotification(
- to = "To",
- body = "body",
- data = "data",
- title = "title"
- )
-
- helpProvider.helpRequesters.add(helpRequester)
- helpProvider2.expoPushToken = "ExpoPushToken"
- helpProvider2.helpRequesters.add(helpRequester)
- helpRequester.helpProviders.add(helpProvider)
- helpRequester.helpProviders.add(helpProvider2)
-
- Mockito.`when`(helpProviderRepository.findById(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
- Mockito.doReturn(Optional.of(helpProvider)).`when`(helpProviderRepository).findById(helpProvider.id!!)
- Mockito.`when`(emergencyService.findEmergency(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
- Mockito.doReturn(emergency).`when`(emergencyService).findEmergency(emergency.id!!)
- Mockito.`when`(emergencyStatusService.addStatus(any(), any(), any())).thenThrow(IllegalArgumentException())
- Mockito.doNothing().`when`(emergencyStatusService).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
- Mockito.`when`(notificationService.createEmergencyAcceptedPushNotification(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
- Mockito.doReturn(notification).`when`(notificationService).createEmergencyAcceptedPushNotification(helpProvider2.expoPushToken!!, emergency.id!!, helpRequester.id!!, helpProvider.id!!)
- Mockito.`when`(notificationService.sendPushNotification(any())).thenThrow(IllegalArgumentException())
- Mockito.doNothing().`when`(notificationService).sendPushNotification(listOf(notification))
-
- helpProviderService.acceptEmergency(
- emergencyId = emergency.id!!,
- helpProviderId = helpProvider.id!!
- )
-
- Mockito.verify(emergencyStatusService, Mockito.times(1)).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
- Mockito.verify(notificationService, Mockito.times(1)).sendPushNotification(listOf(notification))
- }
-
- @Test
- fun `testAcceptEmergency without notification`() {
- val helpRequester = HelpRequester(
- id = "123",
- name = "Requester",
- keycloakName = "Requester"
- )
- val helpProvider = HelpProvider(
- id = "456",
- name = "HelpProvider",
- keycloakName = "HelpProvider"
- )
- val emergency = Emergency(
- id = "789",
- helpRequester = helpRequester
- )
- helpProvider.helpRequesters.add(helpRequester)
- helpRequester.helpProviders.add(helpProvider)
-
- Mockito.`when`(helpProviderRepository.findById(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
- Mockito.doReturn(Optional.of(helpProvider)).`when`(helpProviderRepository).findById(helpProvider.id!!)
- Mockito.`when`(emergencyService.findEmergency(ArgumentMatchers.anyString())).thenThrow(IllegalArgumentException())
- Mockito.doReturn(emergency).`when`(emergencyService).findEmergency(emergency.id!!)
- Mockito.`when`(emergencyStatusService.addStatus(any(), any(), any())).thenThrow(IllegalArgumentException())
- Mockito.doNothing().`when`(emergencyStatusService).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
- Mockito.`when`(notificationService.sendPushNotification(any())).thenThrow(IllegalArgumentException())
-
- helpProviderService.acceptEmergency(
- emergencyId = emergency.id!!,
- helpProviderId = helpProvider.id!!
- )
-
- Mockito.verify(emergencyStatusService, Mockito.times(1)).addStatus(emergency, helpProvider, EmergencyStatusType.TYPE_ACCEPTED)
- }
}
\ No newline at end of file
diff --git a/target/snippets/emergency/accepted/curl-request.adoc b/target/snippets/emergency/accepted/curl-request.adoc
new file mode 100644
index 0000000..3bcca6a
--- /dev/null
+++ b/target/snippets/emergency/accepted/curl-request.adoc
@@ -0,0 +1,6 @@
+[source,bash]
+----
+$ curl 'http://localhost:8080/emergency/accepted' -i -X POST \
+ -H 'Content-Type: application/json;charset=UTF-8' \
+ -d '{"emergencyId":"25","helpRequesterId":"46","helpProviderId":"38"}'
+----
\ No newline at end of file
diff --git a/target/snippets/emergency/accepted/http-request.adoc b/target/snippets/emergency/accepted/http-request.adoc
new file mode 100644
index 0000000..e504f37
--- /dev/null
+++ b/target/snippets/emergency/accepted/http-request.adoc
@@ -0,0 +1,9 @@
+[source,http,options="nowrap"]
+----
+POST /emergency/accepted HTTP/1.1
+Content-Length: 65
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+{"emergencyId":"25","helpRequesterId":"46","helpProviderId":"38"}
+----
\ No newline at end of file
diff --git a/target/snippets/emergency/accepted/http-response.adoc b/target/snippets/emergency/accepted/http-response.adoc
new file mode 100644
index 0000000..4fc5fd7
--- /dev/null
+++ b/target/snippets/emergency/accepted/http-response.adoc
@@ -0,0 +1,5 @@
+[source,http,options="nowrap"]
+----
+HTTP/1.1 202 Accepted
+
+----
\ No newline at end of file
diff --git a/target/snippets/emergency/accepted/httpie-request.adoc b/target/snippets/emergency/accepted/httpie-request.adoc
new file mode 100644
index 0000000..7158693
--- /dev/null
+++ b/target/snippets/emergency/accepted/httpie-request.adoc
@@ -0,0 +1,5 @@
+[source,bash]
+----
+$ echo '{"emergencyId":"25","helpRequesterId":"46","helpProviderId":"38"}' | http POST 'http://localhost:8080/emergency/accepted' \
+ 'Content-Type:application/json;charset=UTF-8'
+----
\ No newline at end of file
diff --git a/target/snippets/emergency/accepted/request-body.adoc b/target/snippets/emergency/accepted/request-body.adoc
new file mode 100644
index 0000000..d6a78e4
--- /dev/null
+++ b/target/snippets/emergency/accepted/request-body.adoc
@@ -0,0 +1,4 @@
+[source,options="nowrap"]
+----
+{"emergencyId":"25","helpRequesterId":"46","helpProviderId":"38"}
+----
\ No newline at end of file
diff --git a/target/snippets/emergency/accepted/response-body.adoc b/target/snippets/emergency/accepted/response-body.adoc
new file mode 100644
index 0000000..dab5f81
--- /dev/null
+++ b/target/snippets/emergency/accepted/response-body.adoc
@@ -0,0 +1,4 @@
+[source,options="nowrap"]
+----
+
+----
\ No newline at end of file