diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml.disabled
similarity index 86%
rename from .github/workflows/sonarqube.yml
rename to .github/workflows/sonarqube.yml.disabled
index d1c691708..1d35d8d15 100644
--- a/.github/workflows/sonarqube.yml
+++ b/.github/workflows/sonarqube.yml.disabled
@@ -1,3 +1,7 @@
+# This action is disabled because it does
+# the same thing as CI with Maven (run all tests and build).
+# The SonarQube Cloud Analysis already happens without this, so no worries.
+
name: SonarQube
on:
push:
diff --git a/.idea/dictionaries/project.xml b/.idea/dictionaries/project.xml
index a7265e4c8..200eae3fa 100644
--- a/.idea/dictionaries/project.xml
+++ b/.idea/dictionaries/project.xml
@@ -2,6 +2,7 @@
picoc
+ scas
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 44efd8de8..a2ce51cff 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -8,6 +8,7 @@
+
diff --git a/account/pom.xml b/account/pom.xml
index 5ae3d627f..f89bc2c3f 100644
--- a/account/pom.xml
+++ b/account/pom.xml
@@ -59,5 +59,11 @@
postgresql
42.7.2
+
+ br.all
+ shared
+ 1.0-SNAPSHOT
+ compile
+
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountPresenter.kt b/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountPresenter.kt
index a0c78b747..f1710ddd8 100644
--- a/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountPresenter.kt
+++ b/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.user.create
-import br.all.application.shared.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.user.create.RegisterUserAccountService.ResponseModel
interface RegisterUserAccountPresenter : GenericPresenter
diff --git a/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountServiceImpl.kt b/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountServiceImpl.kt
index 9d2195cb0..5fafd6c42 100644
--- a/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountServiceImpl.kt
+++ b/account/src/main/kotlin/br/all/application/user/create/RegisterUserAccountServiceImpl.kt
@@ -1,10 +1,11 @@
package br.all.application.user.create
-import br.all.application.shared.UniquenessViolationException
import br.all.application.user.create.RegisterUserAccountService.RequestModel
import br.all.application.user.create.RegisterUserAccountService.ResponseModel
import br.all.application.user.repository.UserAccountRepository
import br.all.application.user.repository.toDto
+import br.all.domain.shared.exception.UniquenessViolationException
+import br.all.domain.shared.user.Email
import br.all.domain.user.*
class RegisterUserAccountServiceImpl(private val repository: UserAccountRepository) : RegisterUserAccountService {
diff --git a/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfilePresenter.kt b/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfilePresenter.kt
new file mode 100644
index 000000000..e70cf8c96
--- /dev/null
+++ b/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfilePresenter.kt
@@ -0,0 +1,6 @@
+package br.all.application.user.find
+
+import br.all.application.user.find.RetrieveUserProfileService.ResponseModel
+import br.all.domain.shared.presenter.GenericPresenter
+
+interface RetrieveUserProfilePresenter : GenericPresenter
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfileService.kt b/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfileService.kt
new file mode 100644
index 000000000..2016e2c86
--- /dev/null
+++ b/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfileService.kt
@@ -0,0 +1,19 @@
+package br.all.application.user.find
+import java.util.UUID
+
+interface RetrieveUserProfileService {
+ fun retrieveData(presenter: RetrieveUserProfilePresenter, request: RequestModel)
+
+ data class RequestModel(
+ val userId: UUID
+ )
+
+ data class ResponseModel(
+ val userId: UUID,
+ val username: String,
+ val email: String,
+ val affiliation: String,
+ val country: String,
+ val authorities: Set,
+ )
+}
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfileServiceImpl.kt b/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfileServiceImpl.kt
new file mode 100644
index 000000000..f382bc86a
--- /dev/null
+++ b/account/src/main/kotlin/br/all/application/user/find/RetrieveUserProfileServiceImpl.kt
@@ -0,0 +1,38 @@
+package br.all.application.user.find
+
+import br.all.application.user.find.RetrieveUserProfileService.RequestModel
+import br.all.application.user.find.RetrieveUserProfileService.ResponseModel
+import br.all.application.user.repository.UserAccountRepository
+
+class RetrieveUserProfileServiceImpl(
+ private val userAccountRepository: UserAccountRepository
+) : RetrieveUserProfileService {
+ override fun retrieveData(
+ presenter: RetrieveUserProfilePresenter,
+ request: RequestModel
+ ) {
+ val userProfile = userAccountRepository.loadUserProfileById(request.userId)
+ if (userProfile == null) {
+ presenter.prepareFailView(NoSuchElementException("User with id ${request.userId} doesn't exist!"))
+ return
+ }
+
+ val userCredentials = userAccountRepository.loadCredentialsById(request.userId)
+ if (userCredentials == null) {
+ presenter.prepareFailView(NoSuchElementException("Account credentials with id ${request.userId} doesn't exist!"))
+ return
+ }
+
+
+ val profile = ResponseModel(
+ userId = userProfile.id,
+ username = userCredentials.username,
+ email = userProfile.email,
+ affiliation = userProfile.affiliation,
+ country = userProfile.country,
+ authorities = userCredentials.authorities
+ )
+
+ presenter.prepareSuccessView(profile)
+ }
+}
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/application/user/repository/UserAccountMapper.kt b/account/src/main/kotlin/br/all/application/user/repository/UserAccountMapper.kt
index 716c1ba41..dcc0754db 100644
--- a/account/src/main/kotlin/br/all/application/user/repository/UserAccountMapper.kt
+++ b/account/src/main/kotlin/br/all/application/user/repository/UserAccountMapper.kt
@@ -6,7 +6,7 @@ fun UserAccount.toDto() = UserAccountDto(
id.value(),
accountCredentials.username.value,
accountCredentials.password,
- email.value,
+ email.email,
country.value,
affiliation,
createdAt,
diff --git a/account/src/main/kotlin/br/all/application/user/repository/UserAccountRepository.kt b/account/src/main/kotlin/br/all/application/user/repository/UserAccountRepository.kt
index 52531acd7..d14aa597a 100644
--- a/account/src/main/kotlin/br/all/application/user/repository/UserAccountRepository.kt
+++ b/account/src/main/kotlin/br/all/application/user/repository/UserAccountRepository.kt
@@ -11,4 +11,5 @@ interface UserAccountRepository {
fun existsByEmail(email: String): Boolean
fun existsByUsername(username: String): Boolean
fun deleteById(id: UUID)
+ fun loadUserProfileById(id: UUID): UserProfileDto?
}
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/application/user/repository/UserProfileDto.kt b/account/src/main/kotlin/br/all/application/user/repository/UserProfileDto.kt
new file mode 100644
index 000000000..1060041c4
--- /dev/null
+++ b/account/src/main/kotlin/br/all/application/user/repository/UserProfileDto.kt
@@ -0,0 +1,10 @@
+package br.all.application.user.repository
+
+import java.util.UUID
+
+data class UserProfileDto(
+ val id: UUID,
+ val email: String,
+ val country: String,
+ val affiliation: String,
+)
diff --git a/account/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt b/account/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt
deleted file mode 100644
index 417d8d3f4..000000000
--- a/account/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package br.all.domain.shared.ddd
-
-abstract class Entity (val id: Identifier) {
-
- final override fun equals(other: Any?) = when {
- this === other -> true
- other !is Entity<*> -> false
- this::class != other::class -> false
- else -> id == other.id
- }
-
- final override fun hashCode() = id.hashCode()
-}
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/domain/user/Email.kt b/account/src/main/kotlin/br/all/domain/user/Email.kt
deleted file mode 100644
index 965415718..000000000
--- a/account/src/main/kotlin/br/all/domain/user/Email.kt
+++ /dev/null
@@ -1,66 +0,0 @@
-package br.all.domain.user
-
-import br.all.domain.shared.ddd.Notification
-import br.all.domain.shared.ddd.ValueObject
-
-data class Email(val value: String) : ValueObject() {
-
- init {
- val notification = validate()
- require(notification.hasNoErrors()) { notification.message() }
- }
-
- override fun validate(): Notification {
- val notification = Notification()
-
- if (value.isEmpty()) {
- notification.addError("Email must not be empty.")
- return notification
- }
-
- if (value.isBlank()) {
- notification.addError("Email must not be blank.")
- return notification
- }
-
- if (!isValidEmailFormat(value)) notification.addError("Wrong Email format.")
-
- return notification
- }
-
- private fun isValidEmailFormat(email: String): Boolean {
- if (email.contains("..") || email.contains(".@") || email.contains("@.")) return false
- if (email.startsWith(".") || email.endsWith(".")) return false
- if (email.startsWith("@") || email.endsWith("@")) return false
-
- val parts = email.split("@")
- if (parts.size != 2) return false
-
- val localPart = parts[0]
- val domainPart = parts[1]
-
- if (!hasValidLength(localPart, domainPart)) return false
- if (!isValidStructure(localPart, domainPart)) return false
-
- return true
- }
-
- private fun isValidStructure(localPart: String, domainPart: String): Boolean {
- val localRegex = Regex("^[A-Za-z0-9_!#$%&'*+/=?`{|}~^.-]+$")
- val domainRegex = Regex("^[A-Za-z0-9.-]+$")
-
- val domainLabels = domainPart.split(".")
- if (domainLabels.last().length < 2 || domainLabels.any { it.startsWith("-") || it.endsWith("-") }) {
- return false
- }
-
- return localRegex.matches(localPart) && domainRegex.matches(domainPart)
- }
-
- private fun hasValidLength(localPart: String, domainPart: String): Boolean {
- if (localPart.length > 64) return false
- if (domainPart.length > 255) return false
- if ((localPart.length + 1 + domainPart.length) > 254) return false
- return true
- }
-}
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/domain/user/UserAccount.kt b/account/src/main/kotlin/br/all/domain/user/UserAccount.kt
index 673641552..61ca66dc2 100644
--- a/account/src/main/kotlin/br/all/domain/user/UserAccount.kt
+++ b/account/src/main/kotlin/br/all/domain/user/UserAccount.kt
@@ -1,6 +1,7 @@
package br.all.domain.user
import br.all.domain.shared.ddd.Entity
+import br.all.domain.shared.user.Email
import java.time.LocalDateTime
import java.util.UUID
diff --git a/account/src/main/kotlin/br/all/domain/user/Username.kt b/account/src/main/kotlin/br/all/domain/user/Username.kt
index 6c5f1704f..95c604a79 100644
--- a/account/src/main/kotlin/br/all/domain/user/Username.kt
+++ b/account/src/main/kotlin/br/all/domain/user/Username.kt
@@ -3,7 +3,7 @@ package br.all.domain.user
import br.all.domain.shared.ddd.Notification
import br.all.domain.shared.ddd.ValueObject
-data class Username(val value: String) : ValueObject (){
+data class Username(val value: String) : ValueObject(){
init {
val notification = validate()
@@ -16,6 +16,6 @@ data class Username(val value: String) : ValueObject (){
notification.addError("Username must not be blank!")
else if (!value.matches( Regex("[a-zA-Z0-9-_]*")))
notification.addError("Username must contain only letters and numbers, dashes and underscores!")
- return notification;
+ return notification
}
}
diff --git a/account/src/main/kotlin/br/all/infrastructure/user/UserAccountMapper.kt b/account/src/main/kotlin/br/all/infrastructure/user/UserAccountMapper.kt
index f48e3b375..29982ff06 100644
--- a/account/src/main/kotlin/br/all/infrastructure/user/UserAccountMapper.kt
+++ b/account/src/main/kotlin/br/all/infrastructure/user/UserAccountMapper.kt
@@ -2,6 +2,7 @@ package br.all.infrastructure.user
import br.all.application.user.repository.AccountCredentialsDto
import br.all.application.user.repository.UserAccountDto
+import br.all.application.user.repository.UserProfileDto
fun UserAccountDto.toUserAccountEntity(): UserAccountEntity {
val credentials = AccountCredentialsEntity(
@@ -18,4 +19,11 @@ fun UserAccountDto.toUserAccountEntity(): UserAccountEntity {
return UserAccountEntity(id, credentials, email, country, affiliation, createdAt)
}
-fun AccountCredentialsEntity.toAccountCredentialsDto() = AccountCredentialsDto(id, username, password, authorities, refreshToken)
\ No newline at end of file
+fun AccountCredentialsEntity.toAccountCredentialsDto() = AccountCredentialsDto(id, username, password, authorities, refreshToken)
+
+fun UserAccountEntity.toUserProfileDto() = UserProfileDto(
+ id = this.id,
+ email = this.email,
+ country = this.country,
+ affiliation = this.affiliation
+)
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/infrastructure/user/UserAccountRepositoryImpl.kt b/account/src/main/kotlin/br/all/infrastructure/user/UserAccountRepositoryImpl.kt
index a3b5fd2b9..8c3d02b06 100644
--- a/account/src/main/kotlin/br/all/infrastructure/user/UserAccountRepositoryImpl.kt
+++ b/account/src/main/kotlin/br/all/infrastructure/user/UserAccountRepositoryImpl.kt
@@ -3,6 +3,7 @@ package br.all.infrastructure.user
import br.all.application.user.repository.AccountCredentialsDto
import br.all.application.user.repository.UserAccountDto
import br.all.application.user.repository.UserAccountRepository
+import br.all.application.user.repository.UserProfileDto
import org.springframework.stereotype.Repository
import java.util.*
@@ -22,6 +23,9 @@ class UserAccountRepositoryImpl(
credentialsRepository.deleteById(id)
}
+ override fun loadUserProfileById(id: UUID): UserProfileDto? =
+ userAccountRepository.findById(id).orElse(null)?.toUserProfileDto()
+
override fun loadCredentialsByUsername(username: String) =
credentialsRepository.findByUsername(username)?.toAccountCredentialsDto()
diff --git a/account/src/test/kotlin/br/all/application/user/create/RegisterUserAccountServiceImplTest.kt b/account/src/test/kotlin/br/all/application/user/create/RegisterUserAccountServiceImplTest.kt
index 10f7cca27..294fe01e7 100644
--- a/account/src/test/kotlin/br/all/application/user/create/RegisterUserAccountServiceImplTest.kt
+++ b/account/src/test/kotlin/br/all/application/user/create/RegisterUserAccountServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.user.create
-import br.all.application.shared.UniquenessViolationException
import br.all.application.user.repository.UserAccountRepository
import br.all.application.user.utils.TestDataFactory
import io.mockk.every
@@ -9,6 +8,7 @@ import io.mockk.junit5.MockKExtension
import io.mockk.verifyOrder
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
+import br.all.domain.shared.exception.UniquenessViolationException
@Tag("UnitTest")
@Tag("ServiceTest")
diff --git a/account/src/test/kotlin/br/all/application/user/find/RetrieveUserProfileServiceImplTest.kt b/account/src/test/kotlin/br/all/application/user/find/RetrieveUserProfileServiceImplTest.kt
new file mode 100644
index 000000000..3b3ebc4ba
--- /dev/null
+++ b/account/src/test/kotlin/br/all/application/user/find/RetrieveUserProfileServiceImplTest.kt
@@ -0,0 +1,105 @@
+package br.all.application.user.find
+
+import br.all.application.user.repository.UserAccountRepository
+import br.all.application.user.utils.TestDataFactory
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.junit5.MockKExtension
+import io.mockk.slot
+import io.mockk.verify
+import org.junit.jupiter.api.*
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.extension.ExtendWith
+import java.util.*
+import kotlin.NoSuchElementException
+
+@Tag("UnitTest")
+@Tag("ServiceTest")
+@ExtendWith(MockKExtension::class)
+class RetrieveUserProfileServiceImplTest {
+
+ @MockK(relaxUnitFun = true)
+ private lateinit var userAccountRepository: UserAccountRepository
+
+ @MockK(relaxUnitFun = true)
+ private lateinit var presenter: RetrieveUserProfilePresenter
+
+ private lateinit var sut: RetrieveUserProfileServiceImpl
+ private lateinit var factory: TestDataFactory
+
+ @BeforeEach
+ fun setUp() {
+ sut = RetrieveUserProfileServiceImpl(userAccountRepository)
+ factory = TestDataFactory()
+ }
+
+ @Nested
+ @DisplayName("When retrieving a user profile")
+ inner class WhenRetrievingUserProfile {
+
+ @Test
+ fun `should retrieve user profile and prepare success view`() {
+ val userProfile = factory.userProfile()
+ val userCredentials = factory.accountCredentials().copy(id = userProfile.id)
+ val request = RetrieveUserProfileService.RequestModel(userId = userProfile.id)
+
+ every { userAccountRepository.loadUserProfileById(request.userId) } returns userProfile
+ every { userAccountRepository.loadCredentialsById(request.userId) } returns userCredentials
+
+ val responseSlot = slot()
+ every { presenter.prepareSuccessView(capture(responseSlot)) } returns Unit
+
+ sut.retrieveData(presenter, request)
+
+ verify(exactly = 1) { presenter.prepareSuccessView(any()) }
+ verify(exactly = 0) { presenter.prepareFailView(any()) }
+
+ val capturedResponse = responseSlot.captured
+ assertEquals(userProfile.id, capturedResponse.userId)
+ assertEquals(userCredentials.username, capturedResponse.username)
+ assertEquals(userProfile.email, capturedResponse.email)
+ assertEquals(userProfile.affiliation, capturedResponse.affiliation)
+ assertEquals(userProfile.country, capturedResponse.country)
+ assertEquals(userCredentials.authorities, capturedResponse.authorities)
+ }
+
+ @Test
+ fun `should prepare fail view when user profile is not found`() {
+ val userId = UUID.randomUUID()
+ val request = RetrieveUserProfileService.RequestModel(userId = userId)
+
+ every { userAccountRepository.loadUserProfileById(userId) } returns null
+
+ val exceptionSlot = slot()
+ every { presenter.prepareFailView(capture(exceptionSlot)) } returns Unit
+
+ sut.retrieveData(presenter, request)
+
+ verify(exactly = 0) { presenter.prepareSuccessView(any()) }
+ verify(exactly = 1) { presenter.prepareFailView(any()) }
+
+ val capturedException = exceptionSlot.captured
+ assertEquals("User with id $userId doesn't exist!", capturedException.message)
+ }
+
+ @Test
+ fun `should prepare fail view when user credentials are not found`() {
+ val userProfile = factory.userProfile()
+ val request = RetrieveUserProfileService.RequestModel(userId = userProfile.id)
+
+ every { userAccountRepository.loadUserProfileById(request.userId) } returns userProfile
+ every { userAccountRepository.loadCredentialsById(request.userId) } returns null
+
+ val exceptionSlot = slot()
+ every { presenter.prepareFailView(capture(exceptionSlot)) } returns Unit
+
+ sut.retrieveData(presenter, request)
+
+ verify(exactly = 0) { presenter.prepareSuccessView(any()) }
+ verify(exactly = 1) { presenter.prepareFailView(any()) }
+
+ val capturedException = exceptionSlot.captured
+ assertEquals("Account credentials with id ${request.userId} doesn't exist!", capturedException.message)
+ }
+ }
+}
diff --git a/account/src/test/kotlin/br/all/application/user/utils/TestDataFactory.kt b/account/src/test/kotlin/br/all/application/user/utils/TestDataFactory.kt
index 0b2e69e64..4bf2c37c3 100644
--- a/account/src/test/kotlin/br/all/application/user/utils/TestDataFactory.kt
+++ b/account/src/test/kotlin/br/all/application/user/utils/TestDataFactory.kt
@@ -2,6 +2,7 @@ package br.all.application.user.utils
import br.all.application.user.create.RegisterUserAccountService
import br.all.application.user.repository.AccountCredentialsDto
+import br.all.application.user.repository.UserProfileDto
import io.github.serpro69.kfaker.Faker
import java.util.*
@@ -25,4 +26,10 @@ class TestDataFactory {
refreshToken = faker.lorem.words()
)
+ fun userProfile() = UserProfileDto(
+ id = UUID.randomUUID(),
+ email = faker.internet.email(),
+ country = faker.address.countryCode(),
+ affiliation = faker.leagueOfLegends.rank(),
+ )
}
\ No newline at end of file
diff --git a/account/src/test/kotlin/br/all/domain/user/UserAccountTest.kt b/account/src/test/kotlin/br/all/domain/user/UserAccountTest.kt
index 25a1e4b8e..1483e8d4f 100644
--- a/account/src/test/kotlin/br/all/domain/user/UserAccountTest.kt
+++ b/account/src/test/kotlin/br/all/domain/user/UserAccountTest.kt
@@ -1,7 +1,8 @@
package br.all.domain.user
+import br.all.domain.shared.user.Email
import io.github.serpro69.kfaker.Faker
-import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Tag
import java.time.LocalDateTime
import java.util.UUID
@@ -45,11 +46,11 @@ class UserAccountTest{
@Test
fun `should create account credentials with default values`(){
val user = createUser()
- assertEquals(user.accountCredentials.refreshToken, null)
- assertTrue(user.accountCredentials.isCredentialsNonExpired)
- assertTrue(user.accountCredentials.isAccountNonExpired)
- assertTrue(user.accountCredentials.isAccountNonLocked)
- assertTrue(user.accountCredentials.isEnabled)
+ Assertions.assertEquals(user.accountCredentials.refreshToken, null)
+ Assertions.assertTrue(user.accountCredentials.isCredentialsNonExpired)
+ Assertions.assertTrue(user.accountCredentials.isAccountNonExpired)
+ Assertions.assertTrue(user.accountCredentials.isAccountNonLocked)
+ Assertions.assertTrue(user.accountCredentials.isEnabled)
}
@Test
@@ -57,7 +58,7 @@ class UserAccountTest{
val user = createUser()
val username = Username("new_name")
user.changeUsername(username)
- assertEquals(user.accountCredentials.username, username)
+ Assertions.assertEquals(user.accountCredentials.username, username)
}
@Test
@@ -65,7 +66,7 @@ class UserAccountTest{
val user = createUser()
val password = "new_password"
user.changePassword(password)
- assertEquals(user.accountCredentials.password, password)
+ Assertions.assertEquals(user.accountCredentials.password, password)
}
private fun createUser(
@@ -79,6 +80,7 @@ class UserAccountTest{
authorities: Set = setOf(Authority.USER)
) = UserAccount(
UserAccountId(id),
- createdAt, email, country, affiliation, username, password, authorities)
+ createdAt, email, country, affiliation, username, password, authorities
+ )
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index da1865238..56653c651 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,6 +16,7 @@
web
account
scas
+ shared
diff --git a/review/pom.xml b/review/pom.xml
index 920d13193..9de66f259 100644
--- a/review/pom.xml
+++ b/review/pom.xml
@@ -32,6 +32,12 @@
1.0-SNAPSHOT
compile
+
+ br.all
+ shared
+ 1.0-SNAPSHOT
+ compile
+
io.swagger.core.v3
diff --git a/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInvitePresenter.kt b/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInvitePresenter.kt
deleted file mode 100644
index 96a88cf71..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInvitePresenter.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.application.collaboration.create
-
-import br.all.application.collaboration.create.AcceptInviteService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
-
-interface AcceptInvitePresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInviteService.kt b/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInviteService.kt
deleted file mode 100644
index d4d780f0d..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInviteService.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package br.all.application.collaboration.create
-
-import java.util.*
-
-interface AcceptInviteService {
- fun acceptInvite(presenter: AcceptInvitePresenter, request: RequestModel)
-
- data class RequestModel(
- val systematicStudyId: UUID,
- val userId: UUID,
- val inviteId: UUID,
- )
-
- data class ResponseModel(
- val collaborationId: UUID
- )
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInviteServiceImpl.kt b/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInviteServiceImpl.kt
deleted file mode 100644
index 4f33ec805..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/create/AcceptInviteServiceImpl.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-package br.all.application.collaboration.create
-
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDto
-import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.review.repository.fromDto
-import br.all.application.shared.presenter.prepareIfUnauthorized
-import br.all.application.user.CredentialsService
-import br.all.domain.model.collaboration.Collaboration
-import br.all.domain.model.collaboration.CollaborationPermission
-import br.all.domain.model.collaboration.toCollaborationId
-import br.all.domain.model.review.SystematicStudy
-import br.all.domain.model.review.toSystematicStudyId
-import br.all.domain.model.user.toResearcherId
-import java.util.UUID
-
-class AcceptInviteServiceImpl(
- private val systematicStudyRepository: SystematicStudyRepository,
- private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
-) : AcceptInviteService {
- override fun acceptInvite(presenter: AcceptInvitePresenter, request: AcceptInviteService.RequestModel) {
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
- val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
- val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
-
- presenter.prepareIfUnauthorized(user)
-
- if(presenter.isDone()) return
-
- if(systematicStudy!!.collaborators.any { it.value() == request.userId }) {
- presenter.prepareFailView(
- IllegalArgumentException("User is already a collaborator")
- )
- return
- }
-
- val allInvites = collaborationRepository.listAllInvitesBySystematicStudyId(request.systematicStudyId)
- val userInvite = allInvites.firstOrNull { it.userId == request.userId }
-
- if(userInvite == null) {
- presenter.prepareFailView(IllegalArgumentException("User has not been invited"))
- return
- }
-
- val collaborationId = UUID.randomUUID()
- val collaboration = Collaboration(
- collaborationId.toCollaborationId(),
- request.systematicStudyId.toSystematicStudyId(),
- request.userId.toResearcherId(),
- permissions = userInvite.permissions.map { CollaborationPermission.valueOf(it) }.toSet()
- )
-
- collaborationRepository.saveOrUpdateCollaboration(collaboration.toDto())
- presenter.prepareSuccessView(AcceptInviteService.ResponseModel(collaborationId))
- }
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/create/CreateInvitePresenter.kt b/review/src/main/kotlin/br/all/application/collaboration/create/CreateInvitePresenter.kt
deleted file mode 100644
index 6863ee42d..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/create/CreateInvitePresenter.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.application.collaboration.create
-
-import br.all.application.collaboration.create.CreateInviteService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
-
-interface CreateInvitePresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/create/CreateInviteService.kt b/review/src/main/kotlin/br/all/application/collaboration/create/CreateInviteService.kt
deleted file mode 100644
index 425e83802..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/create/CreateInviteService.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package br.all.application.collaboration.create
-
-import java.util.*
-
-interface CreateInviteService {
- fun createInvite(presenter: CreateInvitePresenter, request: RequestModel)
-
- data class RequestModel(
- val systematicStudyId: UUID,
- val userId: UUID,
- val inviteeId: UUID,
- val permissions: Set
- )
-
- data class ResponseModel(
- val inviteId: UUID
- )
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/create/CreateInviteServiceImpl.kt b/review/src/main/kotlin/br/all/application/collaboration/create/CreateInviteServiceImpl.kt
deleted file mode 100644
index dc9b605e3..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/create/CreateInviteServiceImpl.kt
+++ /dev/null
@@ -1,64 +0,0 @@
-package br.all.application.collaboration.create
-
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
-import br.all.application.collaboration.repository.toDto
-import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.review.repository.fromDto
-import br.all.application.shared.presenter.prepareIfFailsPreconditions
-import br.all.application.user.CredentialsService
-import br.all.domain.model.collaboration.CollaborationPermission
-import br.all.domain.model.collaboration.Invite
-import br.all.domain.model.collaboration.toInviteId
-import br.all.domain.model.review.SystematicStudy
-import br.all.domain.model.review.toSystematicStudyId
-import br.all.domain.model.user.toResearcherId
-import java.time.LocalDateTime
-import java.util.*
-
-class CreateInviteServiceImpl(
- private val systematicStudyRepository: SystematicStudyRepository,
- private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
-) : CreateInviteService
-{
- override fun createInvite(presenter: CreateInvitePresenter, request: CreateInviteService.RequestModel) {
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
- val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
- val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
-
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
-
- if(presenter.isDone()) return
-
- if(systematicStudy!!.collaborators.any { it.value() == request.inviteeId }) {
- presenter.prepareFailView(
- IllegalArgumentException("User who is already a collaborator may not be invited")
- )
- }
-
- val allInvites = collaborationRepository.listAllInvitesBySystematicStudyId(request.systematicStudyId)
- if(allInvites.any { it.userId == request.inviteeId }) {
- presenter.prepareFailView(
- IllegalArgumentException("User who is already invited may not be invited again")
- )
- }
-
- val inviteId = UUID.randomUUID()
- val invite = Invite(
- inviteId.toInviteId(),
- request.systematicStudyId.toSystematicStudyId(),
- request.userId.toResearcherId(),
- request.permissions.map { CollaborationPermission.valueOf(it) }.toSet(),
- inviteDate = LocalDateTime.now(),
- )
-
- collaborationRepository.saveOrUpdateInvite(invite.toDto())
-
- presenter.prepareSuccessView(CreateInviteService.ResponseModel(inviteId))
- }
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationDto.kt b/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationDto.kt
deleted file mode 100644
index 34a74c3f9..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationDto.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package br.all.application.collaboration.repository
-
-import java.util.*
-
-class CollaborationDto (
- val id: UUID,
- val systematicStudyId: UUID,
- val userId: UUID,
- val status: String,
- val permissions: Set
-)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationMapper.kt b/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationMapper.kt
deleted file mode 100644
index b7e2fc168..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationMapper.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package br.all.application.collaboration.repository
-
-import br.all.domain.model.collaboration.*
-import br.all.domain.model.review.toSystematicStudyId
-import br.all.domain.model.user.toResearcherId
-
-fun Invite.toDto(): InviteDto = InviteDto(
- id = this.id.value(),
- systematicStudyId = this.systematicStudyId.value(),
- userId = this.userId.value,
- inviteDate = this.inviteDate,
- expirationDate = this.expirationDate,
- permissions = this.permissions.map { it.name }.toSet()
-)
-
-fun InviteDto.toDomain(): Invite = Invite(
- id = this.id.toInviteId(),
- systematicStudyId = this.systematicStudyId.toSystematicStudyId(),
- userId = this.userId.toResearcherId(),
- permissions = this.permissions.map { CollaborationPermission.valueOf(it) }.toSet(),
- inviteDate = this.inviteDate,
- expirationDate = this.expirationDate
-)
-
-fun Collaboration.toDto(): CollaborationDto = CollaborationDto(
- id = this.id.value(),
- systematicStudyId = this.systematicStudyId.value(),
- userId = this.userId.value,
- status = this.status.name,
- permissions = this.permissions.map { it.name }.toSet()
-)
-
-fun CollaborationDto.toDomain(): Collaboration = Collaboration(
- id = this.id.toCollaborationId(),
- systematicStudyId = this.systematicStudyId.toSystematicStudyId(),
- userId = this.userId.toResearcherId(),
- status = CollaborationStatus.valueOf(this.status),
- permissions = this.permissions.map { CollaborationPermission.valueOf(it) }.toSet()
-)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationRepository.kt b/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationRepository.kt
deleted file mode 100644
index 70b1dd4ed..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/repository/CollaborationRepository.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package br.all.application.collaboration.repository
-
-import java.util.*
-
-interface CollaborationRepository {
- fun saveOrUpdateCollaboration(dto: CollaborationDto)
- fun saveOrUpdateInvite(dto: InviteDto)
-
- fun listAllCollaborationsBySystematicStudyId(id: UUID): List
- fun listAllInvitesBySystematicStudyId(id: UUID): List
-
- fun deleteInvite(id: UUID)
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/collaboration/repository/InviteDto.kt b/review/src/main/kotlin/br/all/application/collaboration/repository/InviteDto.kt
deleted file mode 100644
index 2ebf7cc41..000000000
--- a/review/src/main/kotlin/br/all/application/collaboration/repository/InviteDto.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package br.all.application.collaboration.repository
-
-import java.time.LocalDateTime
-import java.util.*
-
-class InviteDto (
- val id: UUID,
- val systematicStudyId: UUID,
- val userId: UUID,
- val inviteDate: LocalDateTime,
- val expirationDate: LocalDateTime,
- val permissions: Set
-)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolPresenter.kt b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolPresenter.kt
index e98af4639..c73c0307e 100644
--- a/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.protocol.find
import br.all.application.protocol.find.FindProtocolService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindProtocolPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolServiceImpl.kt b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolServiceImpl.kt
index d097c0bec..537a81a79 100644
--- a/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolServiceImpl.kt
@@ -1,13 +1,11 @@
package br.all.application.protocol.find
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.find.FindProtocolService.RequestModel
import br.all.application.protocol.find.FindProtocolService.ResponseModel
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.user.CredentialsService
import br.all.domain.model.review.SystematicStudy
@@ -16,20 +14,16 @@ class FindProtocolServiceImpl(
private val protocolRepository: ProtocolRepository,
private val systematicStudyRepository: SystematicStudyRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
) : FindProtocolService {
override fun findById(presenter: FindProtocolPresenter, request: RequestModel) {
val userId = request.userId
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
+ val user = credentialsService.loadCredentials(userId)?.toUser()
val systematicStudyId = request.systematicStudyId
- val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
+ val systematicStudyDto = systematicStudyRepository.findById(systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStagePresenter.kt b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStagePresenter.kt
new file mode 100644
index 000000000..351e47db5
--- /dev/null
+++ b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStagePresenter.kt
@@ -0,0 +1,6 @@
+package br.all.application.protocol.find
+
+import br.all.domain.shared.presenter.GenericPresenter
+import br.all.application.protocol.find.FindProtocolStageService.ResponseModel
+
+interface FindProtocolStagePresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStageService.kt b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStageService.kt
similarity index 70%
rename from review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStageService.kt
rename to review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStageService.kt
index 31ba40773..09966a5e0 100644
--- a/review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStageService.kt
+++ b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStageService.kt
@@ -3,15 +3,15 @@ package br.all.application.protocol.find
import io.swagger.v3.oas.annotations.media.Schema
import java.util.UUID
-interface GetProtocolStageService {
- fun getStage(presenter: GetProtocolStagePresenter, request: RequestModel)
+interface FindProtocolStageService {
+ fun getStage(presenter: FindProtocolStagePresenter, request: RequestModel)
data class RequestModel(
val userId: UUID,
val systematicStudyId: UUID
)
- @Schema(name = "GetProtocolStageServiceResponseModel", description = "Response model for Get Protocol Stage Service")
+ @Schema(name = "FindProtocolStageServiceResponseModel", description = "Response model for Find Protocol Stage Service")
data class ResponseModel(
val userId: UUID,
val systematicStudyId: UUID,
diff --git a/review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStageServiceImpl.kt b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStageServiceImpl.kt
similarity index 85%
rename from review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStageServiceImpl.kt
rename to review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStageServiceImpl.kt
index 4468c77df..c900bf90f 100644
--- a/review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStageServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/protocol/find/FindProtocolStageServiceImpl.kt
@@ -1,17 +1,15 @@
package br.all.application.protocol.find
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.user.CredentialsService
-import br.all.application.protocol.find.GetProtocolStageService.RequestModel
-import br.all.application.protocol.find.GetProtocolStageService.ResponseModel
-import br.all.application.protocol.find.GetProtocolStageService.ProtocolStage
+import br.all.application.protocol.find.FindProtocolStageService.RequestModel
+import br.all.application.protocol.find.FindProtocolStageService.ResponseModel
+import br.all.application.protocol.find.FindProtocolStageService.ProtocolStage
import br.all.application.protocol.repository.ProtocolDto
import br.all.application.question.repository.QuestionRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.domain.model.question.QuestionContextEnum
@@ -19,24 +17,19 @@ import br.all.domain.model.review.SystematicStudy
import org.springframework.stereotype.Service
@Service
-class GetProtocolStageServiceImpl(
+class FindProtocolStageServiceImpl(
private val protocolRepository: ProtocolRepository,
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val questionRepository: QuestionRepository,
- private val collaborationRepository: CollaborationRepository,
-) : GetProtocolStageService {
- override fun getStage(presenter: GetProtocolStagePresenter, request: RequestModel) {
+ private val questionRepository: QuestionRepository
+) : FindProtocolStageService {
+ override fun getStage(presenter: FindProtocolStagePresenter, request: RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val protocolDto = protocolRepository.findById(request.systematicStudyId)
diff --git a/review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStagePresenter.kt b/review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStagePresenter.kt
deleted file mode 100644
index 8ba8c5d9b..000000000
--- a/review/src/main/kotlin/br/all/application/protocol/find/GetProtocolStagePresenter.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.application.protocol.find
-
-import br.all.application.shared.presenter.GenericPresenter
-import br.all.application.protocol.find.GetProtocolStageService.ResponseModel
-
-interface GetProtocolStagePresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolPresenter.kt b/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolPresenter.kt
index e3be1de88..91b8dbfa0 100644
--- a/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.protocol.update
import br.all.application.protocol.update.UpdateProtocolService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface UpdateProtocolPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImpl.kt b/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImpl.kt
index 3d18549a7..68f9bbf3d 100644
--- a/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.protocol.update
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.protocol.repository.copyUpdates
import br.all.application.protocol.repository.fromDto
@@ -26,22 +24,17 @@ class UpdateProtocolServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val credentialsService: CredentialsService,
private val studyReviewRepository: StudyReviewRepository,
- private val scoreCalculatorService: ScoreCalculatorService,
- private val collaborationRepository: CollaborationRepository
+ private val scoreCalculatorService: ScoreCalculatorService
) : UpdateProtocolService {
override fun update(presenter: UpdateProtocolPresenter, request: RequestModel) {
val userId = request.userId
+ val user = credentialsService.loadCredentials(userId)?.toUser()
val systematicStudyId = request.systematicStudyId
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
- val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
+ val systematicStudyDto = systematicStudyRepository.findById(systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val dto = protocolRepository.findById(systematicStudyId)
diff --git a/review/src/main/kotlin/br/all/application/question/create/CreateQuestionPresenter.kt b/review/src/main/kotlin/br/all/application/question/create/CreateQuestionPresenter.kt
index d274e4977..9d1ed45b8 100644
--- a/review/src/main/kotlin/br/all/application/question/create/CreateQuestionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/question/create/CreateQuestionPresenter.kt
@@ -1,7 +1,7 @@
package br.all.application.question.create
import br.all.application.question.create.CreateQuestionService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface CreateQuestionPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/question/create/CreateQuestionServiceImpl.kt b/review/src/main/kotlin/br/all/application/question/create/CreateQuestionServiceImpl.kt
index 913f58fbd..657309808 100644
--- a/review/src/main/kotlin/br/all/application/question/create/CreateQuestionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/question/create/CreateQuestionServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.question.create
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.question.create.CreateQuestionService.QuestionType.*
import br.all.application.question.create.CreateQuestionService.RequestModel
import br.all.application.question.create.CreateQuestionService.ResponseModel
@@ -22,7 +20,6 @@ class CreateQuestionServiceImpl(
private val questionRepository: QuestionRepository,
private val uuidGeneratorService: UuidGeneratorService,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : CreateQuestionService {
override fun create(
@@ -30,15 +27,11 @@ class CreateQuestionServiceImpl(
request: RequestModel
) {
val systematicStudyId = request.systematicStudyId
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
- val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
+ val userId = request.userId
+ val user = credentialsService.loadCredentials(userId)?.toUser()
+ val systematicStudyDto = systematicStudyRepository.findById(systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
-
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/question/find/FindQuestionPresenter.kt b/review/src/main/kotlin/br/all/application/question/find/FindQuestionPresenter.kt
index 36aca4c69..0396e329b 100644
--- a/review/src/main/kotlin/br/all/application/question/find/FindQuestionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/question/find/FindQuestionPresenter.kt
@@ -1,7 +1,7 @@
package br.all.application.question.find
import br.all.application.question.find.FindQuestionService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindQuestionPresenter: GenericPresenter {
}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/question/find/FindQuestionServiceImpl.kt b/review/src/main/kotlin/br/all/application/question/find/FindQuestionServiceImpl.kt
index ef9f2d191..6a7ce26a4 100644
--- a/review/src/main/kotlin/br/all/application/question/find/FindQuestionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/question/find/FindQuestionServiceImpl.kt
@@ -1,38 +1,32 @@
package br.all.application.question.find
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.question.find.FindQuestionService.*
import br.all.application.question.repository.QuestionRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.user.CredentialsService
+import br.all.domain.model.question.QuestionId
import br.all.domain.model.review.SystematicStudy
class FindQuestionServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val questionRepository: QuestionRepository,
- private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
+ private val credentialsService: CredentialsService
) : FindQuestionService {
override fun findOne(presenter: FindQuestionPresenter, request: RequestModel) {
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
- val questionId = request.questionId
+ val userId = request.userId
+ val user = credentialsService.loadCredentials(userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
-
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ val questionId = QuestionId(request.questionId)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
- val question = questionRepository.findById(request.systematicStudyId, questionId)
+ val question = questionRepository.findById(request.systematicStudyId, questionId.value)
if (question === null) {
val message =
"There is no review of id ${request.systematicStudyId} or question of id ${request.questionId}."
diff --git a/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdPresenter.kt b/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdPresenter.kt
index a955b2d32..738c01eef 100644
--- a/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdPresenter.kt
@@ -1,7 +1,7 @@
package br.all.application.question.findAll
import br.all.application.question.findAll.FindAllBySystematicStudyIdService.*
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindAllBySystematicStudyIdPresenter: GenericPresenter {
}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdServiceImpl.kt b/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdServiceImpl.kt
index d16c1efd9..61c7b650a 100644
--- a/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/question/findAll/FindAllBySystematicStudyIdServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.question.findAll
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.question.findAll.FindAllBySystematicStudyIdService.*
import br.all.application.question.repository.QuestionRepository
import br.all.application.review.repository.SystematicStudyRepository
@@ -14,20 +12,16 @@ import br.all.domain.model.review.SystematicStudy
class FindAllBySystematicStudyIdServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val questionRepository: QuestionRepository,
- private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
+ private val credentialsService: CredentialsService
) : FindAllBySystematicStudyIdService {
override fun findAllBySystematicStudyId(presenter: FindAllBySystematicStudyIdPresenter, request: RequestModel) {
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
+ val userId = request.userId
+ val user = credentialsService.loadCredentials(userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val questions = questionRepository.findAllBySystematicStudyId(
diff --git a/review/src/main/kotlin/br/all/application/question/update/presenter/UpdateQuestionPresenter.kt b/review/src/main/kotlin/br/all/application/question/update/presenter/UpdateQuestionPresenter.kt
index 8f98bdece..a977ec487 100644
--- a/review/src/main/kotlin/br/all/application/question/update/presenter/UpdateQuestionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/question/update/presenter/UpdateQuestionPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.question.update.presenter
import br.all.application.question.update.services.UpdateQuestionService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface UpdateQuestionPresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImpl.kt b/review/src/main/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImpl.kt
index dea918dad..4b3bcd8bf 100644
--- a/review/src/main/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.question.update.services
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.question.create.CreateQuestionService.QuestionType
import br.all.application.question.repository.QuestionRepository
import br.all.application.question.repository.toDto
@@ -20,19 +18,15 @@ class UpdateQuestionServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val questionRepository: QuestionRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
) : UpdateQuestionService {
override fun update(presenter: UpdateQuestionPresenter, request: RequestModel) {
val systematicStudyId = request.systematicStudyId
val userId = request.userId
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
+ val user = credentialsService.loadCredentials(userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
if (presenter.isDone()) return
val type = request.questionType
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/AuthorNetworkPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/AuthorNetworkPresenter.kt
index 225fd2fb7..47df04efb 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/AuthorNetworkPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/AuthorNetworkPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
import br.all.application.report.find.service.AuthorNetworkService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface AuthorNetworkPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/ExportProtocolPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/ExportProtocolPresenter.kt
index a2d2e43cc..d1a48e585 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/ExportProtocolPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/ExportProtocolPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
import br.all.application.report.find.service.ExportProtocolService
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface ExportProtocolPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/FindAnswerPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/FindAnswerPresenter.kt
index 522e5a459..300a4e368 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/FindAnswerPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/FindAnswerPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
import br.all.application.report.find.service.FindAnswerService
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindAnswerPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/FindCriteriaPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/FindCriteriaPresenter.kt
index 7099eaaf8..92b556845 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/FindCriteriaPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/FindCriteriaPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
import br.all.application.report.find.service.FindCriteriaService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindCriteriaPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/FindKeywordsPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/FindKeywordsPresenter.kt
index 618f50f30..f2153f822 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/FindKeywordsPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/FindKeywordsPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.report.find.service.FindKeywordsService.ResponseModel
interface FindKeywordsPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/FindSourcePresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/FindSourcePresenter.kt
index fbacba315..751845bb3 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/FindSourcePresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/FindSourcePresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
import br.all.application.report.find.service.FindSourceService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindSourcePresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudiesByStagePresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudiesByStagePresenter.kt
index 115f7aaa1..f6d2a5638 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudiesByStagePresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudiesByStagePresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
import br.all.application.report.find.service.FindStudiesByStageService
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindStudiesByStagePresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudyReviewCriteriaPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudyReviewCriteriaPresenter.kt
index 90e2ad4cf..f18a7b841 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudyReviewCriteriaPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/FindStudyReviewCriteriaPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.report.find.service.FindStudyReviewCriteriaService
interface FindStudyReviewCriteriaPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/IncludedStudiesAnswersPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/IncludedStudiesAnswersPresenter.kt
index 768693702..f16086401 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/IncludedStudiesAnswersPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/IncludedStudiesAnswersPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.report.find.service.IncludedStudiesAnswersService.ResponseModel
interface IncludedStudiesAnswersPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/presenter/StudiesFunnelPresenter.kt b/review/src/main/kotlin/br/all/application/report/find/presenter/StudiesFunnelPresenter.kt
index 2f24f35e7..b4e48a4f1 100644
--- a/review/src/main/kotlin/br/all/application/report/find/presenter/StudiesFunnelPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/presenter/StudiesFunnelPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.report.find.presenter
import br.all.application.report.find.service.StudiesFunnelService
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface StudiesFunnelPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/AuthorNetworkServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/AuthorNetworkServiceImpl.kt
index 54fc254d6..1723231ca 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/AuthorNetworkServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/AuthorNetworkServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.report.find.presenter.AuthorNetworkPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
@@ -16,18 +14,14 @@ class AuthorNetworkServiceImpl(
private val credentialsService: CredentialsService,
private val studyReviewRepository: StudyReviewRepository,
private val systematicStudyRepository: SystematicStudyRepository,
- private val collaborationRepository: CollaborationRepository,
): AuthorNetworkService {
override fun findAuthors(presenter: AuthorNetworkPresenter, request: AuthorNetworkService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/ExportProtocolServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/ExportProtocolServiceImpl.kt
index e13148214..837ce0b76 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/ExportProtocolServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/ExportProtocolServiceImpl.kt
@@ -1,13 +1,11 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.ProtocolDto
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.report.find.presenter.ExportProtocolPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.user.CredentialsService
import br.all.domain.model.review.SystematicStudy
@@ -19,18 +17,14 @@ class ExportProtocolServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val formatterFactoryService: FormatterFactoryService,
private val protocolRepository: ProtocolRepository,
- private val collaborationRepository: CollaborationRepository
): ExportProtocolService {
override fun exportProtocol(presenter: ExportProtocolPresenter, request: ExportProtocolService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/FindAnswerServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/FindAnswerServiceImpl.kt
index a0b5b54b7..c06ddc4a1 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/FindAnswerServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/FindAnswerServiceImpl.kt
@@ -1,12 +1,10 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.question.repository.QuestionRepository
import br.all.application.report.find.presenter.FindAnswerPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.user.CredentialsService
@@ -17,18 +15,14 @@ class FindAnswerServiceImpl(
private val studyReviewRepository: StudyReviewRepository,
private val systematicStudyRepository: SystematicStudyRepository,
private val questionRepository: QuestionRepository,
- private val collaborationRepository: CollaborationRepository
): FindAnswerService {
override fun find(presenter: FindAnswerPresenter, request: FindAnswerService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
val question = questionRepository.findById(request.systematicStudyId, request.questionId)
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/FindCriteriaServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/FindCriteriaServiceImpl.kt
index cd683e378..30bdbc79a 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/FindCriteriaServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/FindCriteriaServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.CriterionDto
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.report.find.presenter.FindCriteriaPresenter
@@ -17,18 +15,14 @@ class FindCriteriaServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val credentialsService: CredentialsService,
private val studyReviewRepository: StudyReviewRepository,
- private val collaborationRepository: CollaborationRepository
): FindCriteriaService {
override fun findCriteria(presenter: FindCriteriaPresenter, request: FindCriteriaService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/FindKeywordsServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/FindKeywordsServiceImpl.kt
index 7ba35a8b8..6a7f5f8fc 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/FindKeywordsServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/FindKeywordsServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.report.find.presenter.FindKeywordsPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
@@ -16,18 +14,14 @@ class FindKeywordsServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
): FindKeywordsService {
override fun findKeywords(presenter: FindKeywordsPresenter, request: FindKeywordsService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/FindSourceServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/FindSourceServiceImpl.kt
index bafc408d8..f8ff54837 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/FindSourceServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/FindSourceServiceImpl.kt
@@ -1,12 +1,10 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.report.find.presenter.FindSourcePresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewDto
import br.all.application.study.repository.StudyReviewRepository
@@ -19,18 +17,14 @@ class FindSourceServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
): FindSourceService {
override fun findSource(presenter: FindSourcePresenter, request: FindSourceService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/FindStudiesByStageServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/FindStudiesByStageServiceImpl.kt
index 1c2cef16f..1f9d26b35 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/FindStudiesByStageServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/FindStudiesByStageServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.report.find.presenter.FindStudiesByStagePresenter
import br.all.application.report.find.service.FindStudiesByStageService.StudyCollection
import br.all.application.review.repository.SystematicStudyRepository
@@ -18,18 +16,14 @@ class FindStudiesByStageServiceImpl(
private val credentialsService: CredentialsService,
private val studyReviewRepository: StudyReviewRepository,
private val systematicStudyRepository: SystematicStudyRepository,
- private val collaborationRepository: CollaborationRepository,
): FindStudiesByStageService {
override fun findStudiesByStage(presenter: FindStudiesByStagePresenter, request: FindStudiesByStageService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
if (request.stage != "selection" && request.stage != "extraction") {
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/FindStudyReviewCriteriaServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/FindStudyReviewCriteriaServiceImpl.kt
index 1e106fab8..f1b8bc5ac 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/FindStudyReviewCriteriaServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/FindStudyReviewCriteriaServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.CriterionDto
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
@@ -18,7 +16,6 @@ class FindStudyReviewCriteriaServiceImpl(
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
private val protocolRepository: ProtocolRepository,
- private val collaborationRepository: CollaborationRepository
): FindStudyReviewCriteriaService {
override fun findCriteria(
presenter: FindStudyReviewCriteriaPresenter,
@@ -28,11 +25,8 @@ class FindStudyReviewCriteriaServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/IncludedStudiesAnswersServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/IncludedStudiesAnswersServiceImpl.kt
index da98fd269..6ff08417b 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/IncludedStudiesAnswersServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/IncludedStudiesAnswersServiceImpl.kt
@@ -1,13 +1,11 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.question.repository.QuestionDto
import br.all.application.question.repository.QuestionRepository
import br.all.application.report.find.presenter.IncludedStudiesAnswersPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.user.CredentialsService
@@ -20,7 +18,6 @@ class IncludedStudiesAnswersServiceImpl(
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
private val systematicStudyRepository: SystematicStudyRepository,
- private val collaborationRepository: CollaborationRepository,
) : IncludedStudiesAnswersService {
override fun findAnswers(presenter: IncludedStudiesAnswersPresenter, request: IncludedStudiesAnswersService.RequestModel) {
@@ -28,11 +25,8 @@ class IncludedStudiesAnswersServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/report/find/service/StudiesFunnelServiceImpl.kt b/review/src/main/kotlin/br/all/application/report/find/service/StudiesFunnelServiceImpl.kt
index 9719f1aaf..eae33c249 100644
--- a/review/src/main/kotlin/br/all/application/report/find/service/StudiesFunnelServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/report/find/service/StudiesFunnelServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.report.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.report.find.presenter.StudiesFunnelPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
@@ -17,18 +15,14 @@ class StudiesFunnelServiceImpl(
private val credentialsService: CredentialsService,
private val studyReviewRepository: StudyReviewRepository,
private val systematicStudyRepository: SystematicStudyRepository,
- private val collaborationRepository: CollaborationRepository
): StudiesFunnelService {
override fun studiesFunnel(presenter: StudiesFunnelPresenter, request: StudiesFunnelService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val allStudies = studyReviewRepository.findAllFromReview(request.systematicStudyId)
diff --git a/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyPresenter.kt b/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyPresenter.kt
index 035f8806a..fe1fd3fe6 100644
--- a/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.review.create
import br.all.application.review.create.CreateSystematicStudyService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface CreateSystematicStudyPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyService.kt b/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyService.kt
index 44388d8e3..1b3ec80e4 100644
--- a/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyService.kt
+++ b/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyService.kt
@@ -9,6 +9,7 @@ interface CreateSystematicStudyService {
val userId: UUID,
val title : String,
val description : String,
+ val collaborators : Set,
)
data class ResponseModel(
diff --git a/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImpl.kt b/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImpl.kt
index 9a11a4742..2a6144f24 100644
--- a/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.review.create
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDto
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.protocol.repository.toDto
import br.all.application.user.CredentialsService
@@ -11,24 +9,22 @@ import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromRequestModel
import br.all.application.review.repository.toDto
import br.all.application.shared.presenter.prepareIfUnauthorized
-import br.all.domain.model.collaboration.Collaboration
-import br.all.domain.model.collaboration.CollaborationId
-import br.all.domain.model.collaboration.CollaborationPermission
-import br.all.domain.model.collaboration.toCollaborationId
import br.all.domain.model.protocol.Protocol
import br.all.domain.model.review.SystematicStudy
import br.all.domain.model.review.toSystematicStudyId
-import br.all.domain.model.user.ResearcherId
import br.all.domain.services.UuidGeneratorService
+import org.springframework.stereotype.Service
+import org.springframework.transaction.annotation.Transactional
+@Service
class CreateSystematicStudyServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val protocolRepository: ProtocolRepository,
private val uuidGeneratorService: UuidGeneratorService,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : CreateSystematicStudyService {
-
+
+ @Transactional
override fun create(presenter: CreateSystematicStudyPresenter, request: RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
presenter.prepareIfUnauthorized(user)
@@ -36,22 +32,12 @@ class CreateSystematicStudyServiceImpl(
if (presenter.isDone()) return
val generatedId = uuidGeneratorService.next()
- val collabId = uuidGeneratorService.next()
-
- val ownerCollaboration = Collaboration(
- collabId.toCollaborationId(),
- generatedId.toSystematicStudyId(),
- user!!.id as ResearcherId,
- permissions = setOf(CollaborationPermission.VIEW, CollaborationPermission.EDIT, CollaborationPermission.REVIEW_STUDIES)
- )
- collaborationRepository.saveOrUpdateCollaboration(ownerCollaboration.toDto())
-
- val systematicStudy = SystematicStudy.fromRequestModel(generatedId, request, ownerCollaboration.id as CollaborationId)
+ val systematicStudy = SystematicStudy.fromRequestModel(generatedId, request)
systematicStudyRepository.saveOrUpdate(systematicStudy.toDto())
val protocol = Protocol.write(generatedId.toSystematicStudyId(), emptySet()).build()
protocolRepository.saveOrUpdate(protocol.toDto())
- presenter.prepareSuccessView(ResponseModel(user.id.value(), generatedId))
+ presenter.prepareSuccessView(ResponseModel(user!!.id.value(), generatedId))
}
}
diff --git a/review/src/main/kotlin/br/all/application/review/find/presenter/FindAllSystematicStudyPresenter.kt b/review/src/main/kotlin/br/all/application/review/find/presenter/FindAllSystematicStudyPresenter.kt
index d606ce3eb..bc8c5650c 100644
--- a/review/src/main/kotlin/br/all/application/review/find/presenter/FindAllSystematicStudyPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/review/find/presenter/FindAllSystematicStudyPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.review.find.presenter
import br.all.application.review.find.services.FindAllSystematicStudiesService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindAllSystematicStudyPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/review/find/presenter/FindSystematicStudyPresenter.kt b/review/src/main/kotlin/br/all/application/review/find/presenter/FindSystematicStudyPresenter.kt
index 4952240d5..b75b8bcc6 100644
--- a/review/src/main/kotlin/br/all/application/review/find/presenter/FindSystematicStudyPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/review/find/presenter/FindSystematicStudyPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.review.find.presenter
import br.all.application.review.find.services.FindSystematicStudyService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindSystematicStudyPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImpl.kt b/review/src/main/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImpl.kt
index d9c6afbfa..a7edfd260 100644
--- a/review/src/main/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImpl.kt
@@ -4,7 +4,7 @@ import br.all.application.review.find.presenter.FindSystematicStudyPresenter
import br.all.application.review.find.services.FindSystematicStudyService.RequestModel
import br.all.application.review.find.services.FindSystematicStudyService.ResponseModel
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfUnauthorized
import br.all.application.user.CredentialsService
diff --git a/review/src/main/kotlin/br/all/application/review/repository/SystematicStudyMapper.kt b/review/src/main/kotlin/br/all/application/review/repository/SystematicStudyMapper.kt
index c5156a551..025cda28a 100644
--- a/review/src/main/kotlin/br/all/application/review/repository/SystematicStudyMapper.kt
+++ b/review/src/main/kotlin/br/all/application/review/repository/SystematicStudyMapper.kt
@@ -1,8 +1,7 @@
package br.all.application.review.repository
import br.all.application.review.create.CreateSystematicStudyService.RequestModel
-import br.all.domain.model.collaboration.CollaborationId
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.model.review.SystematicStudy
import br.all.domain.model.review.SystematicStudyId
import java.util.*
@@ -15,12 +14,11 @@ fun SystematicStudy.toDto() = SystematicStudyDto(
collaborators.map { it.value }.toSet(),
)
-fun SystematicStudy.Companion.fromRequestModel(id: UUID, requestModel: RequestModel, ownerCollaborationId: CollaborationId) = SystematicStudy(
+fun SystematicStudy.Companion.fromRequestModel(id: UUID, requestModel: RequestModel) = SystematicStudy(
SystematicStudyId(id),
requestModel.title,
requestModel.description,
ResearcherId(requestModel.userId),
- setOf(ownerCollaborationId)
)
fun SystematicStudy.Companion.fromDto(dto: SystematicStudyDto) = SystematicStudy(
@@ -29,6 +27,6 @@ fun SystematicStudy.Companion.fromDto(dto: SystematicStudyDto) = SystematicStudy
dto.description,
ResearcherId(dto.owner),
dto.collaborators
- .map { CollaborationId(it) }
+ .map { ResearcherId(it) }
.toMutableSet(),
)
diff --git a/review/src/main/kotlin/br/all/application/review/update/presenter/UpdateSystematicStudyPresenter.kt b/review/src/main/kotlin/br/all/application/review/update/presenter/UpdateSystematicStudyPresenter.kt
index d96136a3f..7dbd59897 100644
--- a/review/src/main/kotlin/br/all/application/review/update/presenter/UpdateSystematicStudyPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/review/update/presenter/UpdateSystematicStudyPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.review.update.presenter
import br.all.application.review.update.services.UpdateSystematicStudyService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface UpdateSystematicStudyPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImpl.kt b/review/src/main/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImpl.kt
index 635722c2a..76de2a921 100644
--- a/review/src/main/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImpl.kt
@@ -6,7 +6,7 @@ import br.all.application.review.repository.toDto
import br.all.application.review.update.presenter.UpdateSystematicStudyPresenter
import br.all.application.review.update.services.UpdateSystematicStudyService.RequestModel
import br.all.application.review.update.services.UpdateSystematicStudyService.ResponseModel
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfUnauthorized
import br.all.application.user.CredentialsService
import br.all.domain.model.review.SystematicStudy
diff --git a/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionPresenter.kt b/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionPresenter.kt
index 6e5daaca2..c45259e45 100644
--- a/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.search.create
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.search.create.CreateSearchSessionService.ResponseModel
interface CreateSearchSessionPresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionServiceImpl.kt b/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionServiceImpl.kt
index 88e741d69..2fe2d3e2a 100644
--- a/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/search/create/CreateSearchSessionServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.search.create
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
@@ -32,24 +30,19 @@ class CreateSearchSessionServiceImpl(
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
private val scoreCalculatorService: ScoreCalculatorService,
- private val reviewSimilarityService: ReviewSimilarityService,
- private val collaborationRepository: CollaborationRepository
+ private val reviewSimilarityService: ReviewSimilarityService
) : CreateSearchSessionService {
+
override fun createSession(
presenter: CreateSearchSessionPresenter,
request: RequestModel,
file: String
) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
-
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionPresenter.kt b/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionPresenter.kt
index e9ef45ad2..51a210f10 100644
--- a/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.search.delete
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.search.delete.DeleteSearchSessionService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
-interface DeleteSearchSessionPresenter : GenericPresenter
+interface DeleteSearchSessionPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionService.kt b/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionService.kt
index 2067d589a..686fb3abe 100644
--- a/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionService.kt
+++ b/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionService.kt
@@ -1,15 +1,11 @@
-@file:Suppress("ktlint:standard:no-wildcard-imports")
-
package br.all.application.search.delete
+import br.all.application.search.update.PatchSearchSessionPresenter
import io.swagger.v3.oas.annotations.media.Schema
import java.util.*
interface DeleteSearchSessionService {
- fun delete(
- presenter: DeleteSearchSessionPresenter,
- request: RequestModel,
- )
+ fun delete(presenter: DeleteSearchSessionPresenter, request: RequestModel)
data class RequestModel(
val userId: UUID,
@@ -23,4 +19,4 @@ interface DeleteSearchSessionService {
val systematicStudyId: UUID,
val sessionId: UUID,
)
-}
+}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionServiceImpl.kt b/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionServiceImpl.kt
index 82aa9878a..c94a6596d 100644
--- a/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/search/delete/DeleteSearchSessionServiceImpl.kt
@@ -1,51 +1,45 @@
package br.all.application.search.delete
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.search.repository.SearchSessionRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.user.CredentialsService
import br.all.domain.model.review.SystematicStudy
-class DeleteSearchSessionServiceImpl(
+class DeleteSearchSessionServiceImpl (
private val systematicStudyRepository: SystematicStudyRepository,
private val searchSessionRepository: SearchSessionRepository,
- private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
+ private val credentialsService: CredentialsService
) : DeleteSearchSessionService {
override fun delete(
presenter: DeleteSearchSessionPresenter,
- request: DeleteSearchSessionService.RequestModel,
+ request: DeleteSearchSessionService.RequestModel
) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
+ val searchSessionDto = searchSessionRepository.findById(request.sessionId)
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
- val searchSessionDto = searchSessionRepository.findById(request.sessionId)
-
- if(searchSessionDto == null){
- presenter.prepareFailView(EntityNotFoundException("There is no search session with ID ${request.sessionId}"))
- return
+ if (searchSessionDto != null) {
+ searchSessionRepository.deleteById(searchSessionDto.id)
+
+ presenter.prepareSuccessView(
+ DeleteSearchSessionService.ResponseModel(
+ userId = request.userId,
+ systematicStudyId = request.systematicStudyId,
+ sessionId = request.sessionId
+ )
+ )
+ } else {
+ val message = "There is no search session with ID ${request.sessionId}"
+ presenter.prepareFailView(EntityNotFoundException(message))
}
-
- searchSessionRepository.deleteById(searchSessionDto.id)
- presenter.prepareSuccessView(
- DeleteSearchSessionService.ResponseModel(
- userId = request.userId,
- systematicStudyId = request.systematicStudyId,
- sessionId = request.sessionId,
- ),
- )
}
-}
+}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsBySourcePresenter.kt b/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsBySourcePresenter.kt
index 41cddd6ba..64b23b796 100644
--- a/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsBySourcePresenter.kt
+++ b/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsBySourcePresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.search.find.presenter
import br.all.application.search.find.service.FindAllSearchSessionsBySourceService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindAllSearchSessionsBySourcePresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsPresenter.kt b/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsPresenter.kt
index 05d6c568c..7fd4d02ed 100644
--- a/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/search/find/presenter/FindAllSearchSessionsPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.search.find.presenter
import br.all.application.search.find.service.FindAllSearchSessionsService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindAllSearchSessionsPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/find/presenter/FindSearchSessionPresenter.kt b/review/src/main/kotlin/br/all/application/search/find/presenter/FindSearchSessionPresenter.kt
index 376578652..fe96eea25 100644
--- a/review/src/main/kotlin/br/all/application/search/find/presenter/FindSearchSessionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/search/find/presenter/FindSearchSessionPresenter.kt
@@ -2,6 +2,6 @@ package br.all.application.search.find.presenter
import br.all.application.search.find.service.FindSearchSessionService
import br.all.application.search.find.service.FindSearchSessionService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface FindSearchSessionPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsBySourceServiceImpl.kt b/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsBySourceServiceImpl.kt
index 726bd7340..9ab05349a 100644
--- a/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsBySourceServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsBySourceServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.search.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.search.find.presenter.FindAllSearchSessionsBySourcePresenter
@@ -16,7 +14,6 @@ class FindAllSearchSessionsBySourceServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val searchSessionRepository: SearchSessionRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
): FindAllSearchSessionsBySourceService{
override fun findAllSessionsBySource (
presenter: FindAllSearchSessionsBySourcePresenter, request: RequestModel
@@ -25,11 +22,8 @@ class FindAllSearchSessionsBySourceServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsServiceImpl.kt b/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsServiceImpl.kt
index ae92d546d..d93f414dd 100644
--- a/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/search/find/service/FindAllSearchSessionsServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.search.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.search.find.presenter.FindAllSearchSessionsPresenter
@@ -15,18 +13,14 @@ class FindAllSearchSessionsServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val searchSessionRepository: SearchSessionRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
): FindAllSearchSessionsService {
override fun findAllSearchSessions (presenter: FindAllSearchSessionsPresenter, request: RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/search/find/service/FindSearchSessionServiceImpl.kt b/review/src/main/kotlin/br/all/application/search/find/service/FindSearchSessionServiceImpl.kt
index bdd495b64..26242f3a8 100644
--- a/review/src/main/kotlin/br/all/application/search/find/service/FindSearchSessionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/search/find/service/FindSearchSessionServiceImpl.kt
@@ -1,14 +1,12 @@
package br.all.application.search.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.search.find.presenter.FindSearchSessionPresenter
import br.all.application.search.find.service.FindSearchSessionService.RequestModel
import br.all.application.search.find.service.FindSearchSessionService.ResponseModel
import br.all.application.search.repository.SearchSessionRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.user.CredentialsService
import br.all.domain.model.review.SystematicStudy
@@ -17,7 +15,6 @@ class FindSearchSessionServiceImpl (
private val systematicStudyRepository: SystematicStudyRepository,
private val searchSessionRepository: SearchSessionRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : FindSearchSessionService {
override fun findOneSession(presenter: FindSearchSessionPresenter, request: RequestModel) {
@@ -25,11 +22,8 @@ class FindSearchSessionServiceImpl (
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/search/repository/SearchSessionMapper.kt b/review/src/main/kotlin/br/all/application/search/repository/SearchSessionMapper.kt
index 2bdc8944b..10d7ed2c1 100644
--- a/review/src/main/kotlin/br/all/application/search/repository/SearchSessionMapper.kt
+++ b/review/src/main/kotlin/br/all/application/search/repository/SearchSessionMapper.kt
@@ -1,7 +1,7 @@
package br.all.application.search.repository
import br.all.application.search.create.CreateSearchSessionService.RequestModel
import br.all.domain.model.protocol.SearchSource
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.model.review.SystematicStudyId
import br.all.domain.model.search.SearchSession
import br.all.domain.model.search.SearchSessionID
diff --git a/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionPresenter.kt b/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionPresenter.kt
index 2853831f9..4a4f69fad 100644
--- a/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.search.update
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.search.update.PatchSearchSessionService.ResponseModel
interface PatchSearchSessionPresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionServiceImpl.kt b/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionServiceImpl.kt
index 4ef63dc3a..f25e67c85 100644
--- a/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/search/update/PatchSearchSessionServiceImpl.kt
@@ -1,13 +1,11 @@
package br.all.application.search.update
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.search.repository.SearchSessionRepository
import br.all.application.search.update.PatchSearchSessionService.ResponseModel
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.toDto
@@ -31,24 +29,20 @@ class PatchSearchSessionServiceImpl (
private val converterFactoryService: ConverterFactoryService,
private val protocolRepository: ProtocolRepository,
private val scoreCalculatorService: ScoreCalculatorService,
- private val reviewSimilarityService: ReviewSimilarityService,
- private val collaborationRepository: CollaborationRepository
+ private val reviewSimilarityService: ReviewSimilarityService
) : PatchSearchSessionService {
override fun patchSession(
presenter: PatchSearchSessionPresenter,
request: PatchSearchSessionService.RequestModel,
file: String
) {
- val searchSessionDto = searchSessionRepository.findById(request.sessionId)
val user = credentialsService.loadCredentials(request.userId)?.toUser()
+ val searchSessionDto = searchSessionRepository.findById(request.sessionId)
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionPresenter.kt b/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionPresenter.kt
index fefa55caa..b658840e5 100644
--- a/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.search.update
import br.all.application.search.update.UpdateSearchSessionService.ResponseModel
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface UpdateSearchSessionPresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImpl.kt b/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImpl.kt
index b5d25504b..98356cbbf 100644
--- a/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.search.update
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.search.repository.SearchSessionRepository
@@ -9,7 +7,7 @@ import br.all.application.search.repository.fromDto
import br.all.application.search.repository.toDto
import br.all.application.search.update.UpdateSearchSessionService.RequestModel
import br.all.application.search.update.UpdateSearchSessionService.ResponseModel
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.user.CredentialsService
import br.all.domain.model.protocol.toSearchSource
@@ -20,7 +18,6 @@ class UpdateSearchSessionServiceImpl (
private val systematicStudyRepository: SystematicStudyRepository,
private val searchSessionRepository: SearchSessionRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : UpdateSearchSessionService {
override fun updateSession(presenter: UpdateSearchSessionPresenter, request: RequestModel
) {
@@ -28,11 +25,8 @@ class UpdateSearchSessionServiceImpl (
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/shared/exceptions/UniquenessViolationException.kt b/review/src/main/kotlin/br/all/application/shared/exceptions/UniquenessViolationException.kt
deleted file mode 100644
index 6cd2e1658..000000000
--- a/review/src/main/kotlin/br/all/application/shared/exceptions/UniquenessViolationException.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package br.all.application.shared.exceptions
-
-class UniquenessViolationException(message: String? = null, cause: Throwable? = null) : Exception(message, cause)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/shared/presenter/GenericPresenter.kt b/review/src/main/kotlin/br/all/application/shared/presenter/GenericPresenter.kt
deleted file mode 100644
index 1262ed4e9..000000000
--- a/review/src/main/kotlin/br/all/application/shared/presenter/GenericPresenter.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package br.all.application.shared.presenter
-
-interface GenericPresenter {
- fun prepareSuccessView(response: T)
- fun prepareFailView(throwable: Throwable)
- fun isDone(): Boolean
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionChecker.kt b/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionChecker.kt
index b5c7826b9..5de37e18a 100644
--- a/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionChecker.kt
+++ b/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionChecker.kt
@@ -2,11 +2,12 @@ package br.all.application.shared.presenter
import br.all.application.user.credentials.ResearcherCredentialsService
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.model.review.SystematicStudyId
+import br.all.domain.shared.presenter.GenericPresenter
class PreconditionChecker(
private val reviewRepository: SystematicStudyRepository,
diff --git a/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionCheckerNEW.kt b/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionCheckerNEW.kt
index c59cdf8a8..6d5f87d17 100644
--- a/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionCheckerNEW.kt
+++ b/review/src/main/kotlin/br/all/application/shared/presenter/PreconditionCheckerNEW.kt
@@ -1,20 +1,20 @@
package br.all.application.shared.presenter
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
-import br.all.domain.model.collaboration.Collaboration
-import br.all.domain.model.user.Researcher
-import br.all.domain.model.user.Role
-import br.all.domain.model.user.Role.ADMIN
-import br.all.domain.model.user.Role.COLLABORATOR
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
+import br.all.domain.shared.user.Researcher
+import br.all.domain.shared.user.Role
+import br.all.domain.shared.user.Role.ADMIN
+import br.all.domain.shared.user.Role.COLLABORATOR
+import br.all.domain.model.review.SystematicStudy
+import br.all.domain.shared.presenter.GenericPresenter
fun GenericPresenter<*>.prepareIfFailsPreconditions(
user: Researcher?,
- systematicStudy: br.all.domain.model.review.SystematicStudy?,
- allowedRoles: Set = setOf(COLLABORATOR),
- collaborations: List?
+ systematicStudy: SystematicStudy?,
+ allowedRoles: Set = setOf(COLLABORATOR)
) {
this.prepareIfUnauthorized(user, allowedRoles)
if (this.isDone()) return
@@ -28,7 +28,7 @@ fun GenericPresenter<*>.prepareIfFailsPreconditions(
if (allowedRoles.contains(ADMIN) && existingUser.roles.contains(ADMIN)) return
- if(collaborations == null || collaborations.none{ it.userId == user.id })
+ if (!systematicStudy.collaborators.contains(existingUser.id))
this.prepareFailView(UnauthorizedUserException("User of id $existingUser can not perform this action."))
}
diff --git a/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewPresenter.kt b/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewPresenter.kt
index db69c1ddf..1c3c4837c 100644
--- a/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.create
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.create.CreateStudyReviewService.ResponseModel
interface CreateStudyReviewPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewServiceImpl.kt
index e769c6f2d..60efb59c5 100644
--- a/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/create/CreateStudyReviewServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.study.create
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.shared.presenter.prepareIfFailsPreconditions
@@ -19,8 +17,7 @@ class CreateStudyReviewServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val idGenerator: IdGeneratorService,
- private val collaborationRepository: CollaborationRepository
+ private val idGenerator: IdGeneratorService
) : CreateStudyReviewService {
override fun createFromStudy(presenter: CreateStudyReviewPresenter, request: RequestModel) {
@@ -28,11 +25,8 @@ class CreateStudyReviewServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsByAuthorPresenter.kt b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsByAuthorPresenter.kt
index f0af9a242..1aaf4841e 100644
--- a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsByAuthorPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsByAuthorPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.find.service.FindAllStudyReviewsByAuthorService.ResponseModel
interface FindAllStudyReviewsByAuthorPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySessionPresenter.kt b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySessionPresenter.kt
index 6cac12635..65ac4dd6d 100644
--- a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySessionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySessionPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.find.service.FindAllStudyReviewsBySessionService.ResponseModel
interface FindAllStudyReviewsBySessionPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySourcePresenter.kt b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySourcePresenter.kt
index 2b4e835d9..972699c04 100644
--- a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySourcePresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsBySourcePresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.find.service.FindAllStudyReviewsBySourceService.ResponseModel
interface FindAllStudyReviewsBySourcePresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsPresenter.kt b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsPresenter.kt
index f936735e1..61b51f88b 100644
--- a/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/presenter/FindAllStudyReviewsPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.find.service.FindAllStudyReviewsService.ResponseModel
interface FindAllStudyReviewsPresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/find/presenter/FindStudyReviewPresenter.kt b/review/src/main/kotlin/br/all/application/study/find/presenter/FindStudyReviewPresenter.kt
index c40c14129..93e7908c0 100644
--- a/review/src/main/kotlin/br/all/application/study/find/presenter/FindStudyReviewPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/presenter/FindStudyReviewPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.find.presenter
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.find.service.FindStudyReviewService.ResponseModel
interface FindStudyReviewPresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsByAuthorServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsByAuthorServiceImpl.kt
index 7a87d5536..5c46a7556 100644
--- a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsByAuthorServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsByAuthorServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.study.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.shared.presenter.prepareIfFailsPreconditions
@@ -14,8 +12,7 @@ import br.all.domain.model.review.SystematicStudy
class FindAllStudyReviewsByAuthorServiceImpl (
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
- private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
+ private val credentialsService: CredentialsService
) : FindAllStudyReviewsByAuthorService {
override fun findAllByAuthor(
presenter: FindAllStudyReviewsByAuthorPresenter,
@@ -25,11 +22,8 @@ class FindAllStudyReviewsByAuthorServiceImpl (
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val allStudyReviews = studyReviewRepository.findAllFromReview(request.systematicStudyId)
diff --git a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySessionServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySessionServiceImpl.kt
index 76abd10e7..afcc58670 100644
--- a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySessionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySessionServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.study.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.shared.presenter.prepareIfFailsPreconditions
@@ -14,7 +12,6 @@ class FindAllStudyReviewsBySessionServiceImpl (
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : FindAllStudyReviewsBySessionService {
override fun findAllBySearchSession(
@@ -25,11 +22,8 @@ class FindAllStudyReviewsBySessionServiceImpl (
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySourceServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySourceServiceImpl.kt
index 1a86956c9..3c96a6eb3 100644
--- a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySourceServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsBySourceServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.study.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.shared.presenter.prepareIfFailsPreconditions
@@ -18,7 +16,6 @@ class FindAllStudyReviewsBySourceServiceImpl(
private val studyReviewRepository: StudyReviewRepository,
// private val protocolRepository: ProtocolRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : FindAllStudyReviewsBySourceService {
override fun findAllFromSearchSession(presenter: FindAllStudyReviewsBySourcePresenter, request: RequestModel) {
@@ -26,11 +23,8 @@ class FindAllStudyReviewsBySourceServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsService.kt b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsService.kt
index 6f95d23b5..5404d0539 100644
--- a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsService.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsService.kt
@@ -10,12 +10,20 @@ interface FindAllStudyReviewsService {
data class RequestModel(
val userId: UUID,
- val systematicStudyId: UUID
+ val systematicStudyId: UUID,
+ val page: Int = 0,
+ val pageSize: Int = 20,
+ val sort: String = "id,asc"
)
+
@Schema(name = "FindAllStudyReviewsServiceResponseModel")
data class ResponseModel(
val userId: UUID,
val systematicStudyId: UUID,
- val studyReviews: List
+ val studyReviews: List,
+ val page: Int,
+ val size: Int,
+ val totalElements: Long,
+ val totalPages: Int
)
}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsServiceImpl.kt
index c4e90bb2d..c39318a1b 100644
--- a/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/service/FindAllStudyReviewsServiceImpl.kt
@@ -1,7 +1,5 @@
package br.all.application.study.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
import br.all.application.shared.presenter.prepareIfFailsPreconditions
@@ -11,28 +9,52 @@ import br.all.application.study.find.service.FindAllStudyReviewsService.Response
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.user.CredentialsService
import br.all.domain.model.review.SystematicStudy
+import org.springframework.data.domain.PageRequest
+import org.springframework.data.domain.Sort
class FindAllStudyReviewsServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : FindAllStudyReviewsService {
+ private fun parseSortParameter(sortParam: String): Sort {
+ val parts = sortParam.split(",")
+ val property = parts[0]
+ val direction = if (parts.size > 1 && parts[1].equals("desc", ignoreCase = true)) {
+ Sort.Direction.DESC
+ } else {
+ Sort.Direction.ASC
+ }
+ return Sort.by(direction, property)
+ }
+
override fun findAllFromReview(presenter: FindAllStudyReviewsPresenter, request: RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
- val studyReviews = studyReviewRepository.findAllFromReview(request.systematicStudyId)
- presenter.prepareSuccessView(ResponseModel(request.userId, request.systematicStudyId, studyReviews))
+ val sort = parseSortParameter(request.sort)
+ val pageable = PageRequest.of(
+ request.page,
+ request.pageSize,
+ sort
+ )
+
+ val studyReviewsPage = studyReviewRepository.findAllFromReviewPaged(request.systematicStudyId, pageable)
+ presenter.prepareSuccessView(ResponseModel(
+ userId = request.userId,
+ systematicStudyId = request.systematicStudyId,
+ studyReviews = studyReviewsPage.content,
+ page = pageable.pageNumber,
+ size = pageable.pageSize,
+ totalElements = studyReviewsPage.totalElements,
+ totalPages = studyReviewsPage.totalPages
+ ))
}
}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/find/service/FindStudyReviewServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/find/service/FindStudyReviewServiceImpl.kt
index c84a26cd8..d0d8b3e10 100644
--- a/review/src/main/kotlin/br/all/application/study/find/service/FindStudyReviewServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/find/service/FindStudyReviewServiceImpl.kt
@@ -1,10 +1,8 @@
package br.all.application.study.find.service
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.find.presenter.FindStudyReviewPresenter
import br.all.application.study.find.service.FindStudyReviewService.RequestModel
@@ -17,7 +15,6 @@ class FindStudyReviewServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : FindStudyReviewService {
override fun findOne(presenter: FindStudyReviewPresenter, request: RequestModel) {
@@ -25,11 +22,8 @@ class FindStudyReviewServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/study/repository/StudyReviewRepository.kt b/review/src/main/kotlin/br/all/application/study/repository/StudyReviewRepository.kt
index e74ac03f4..6978afce0 100644
--- a/review/src/main/kotlin/br/all/application/study/repository/StudyReviewRepository.kt
+++ b/review/src/main/kotlin/br/all/application/study/repository/StudyReviewRepository.kt
@@ -1,11 +1,14 @@
package br.all.application.study.repository
+import org.springframework.data.domain.Page
+import org.springframework.data.domain.Pageable
import java.util.UUID
interface StudyReviewRepository {
fun saveOrUpdate(dto: StudyReviewDto): Any
- fun findAllFromReview(reviewId: UUID): List
+ fun findAllFromReview(reviewId: UUID, pageable: Pageable = Pageable.unpaged()): List
+ fun findAllFromReviewPaged(reviewId: UUID, pageable: Pageable = Pageable.unpaged()): Page
fun findAllBySource(reviewId: UUID, source: String): List
fun findAllBySession(reviewId: UUID, searchSessionId: UUID): List
fun findById(reviewId: UUID, studyId: Long) : StudyReviewDto?
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/AnswerQuestionImpl.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/AnswerQuestionImpl.kt
deleted file mode 100644
index f1ce6ce42..000000000
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/AnswerQuestionImpl.kt
+++ /dev/null
@@ -1,131 +0,0 @@
-package br.all.application.study.update.implementation
-
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
-import br.all.application.question.repository.QuestionRepository
-import br.all.application.question.repository.fromDto
-import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.presenter.prepareIfFailsPreconditions
-import br.all.application.study.repository.StudyReviewRepository
-import br.all.application.study.repository.fromDto
-import br.all.application.study.repository.toDto
-import br.all.application.study.update.interfaces.*
-import br.all.application.user.CredentialsService
-import br.all.domain.model.question.*
-import br.all.domain.model.review.SystematicStudy
-import br.all.domain.model.study.Answer
-import br.all.domain.model.study.StudyReview
-
-class AnswerQuestionImpl (
- private val studyReviewRepository: StudyReviewRepository,
- private val questionRepository: QuestionRepository,
- private val systematicStudyRepository: SystematicStudyRepository,
- private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
-): AnswerQuestionService {
- override fun answerQuestion(
- presenter: AnswerQuestionPresenter,
- request: AnswerQuestionService.RequestModel<*>,
- context: String?
- ) {
- val user = credentialsService.loadCredentials(request.userId)?.toUser()
-
- val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
- val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
-
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
-
- if (presenter.isDone()) return
-
- val (userId, systematicStudyId, studyReviewId, questionId) = request
-
- val reviewDto = studyReviewRepository.findById(systematicStudyId, studyReviewId)
- if (reviewDto == null) {
- val message = "Review with id $studyReviewId in systematic study $systematicStudyId does not exist!"
- presenter.prepareFailView(EntityNotFoundException(message))
- return
- }
-
- val review = StudyReview.fromDto(reviewDto)
-
- val questionDto = questionRepository.findById(systematicStudyId, questionId)
- if (questionDto == null) {
- val message = "There is no question with id $questionId defined in protocol $systematicStudyId"
- presenter.prepareFailView(EntityNotFoundException(message))
- return
- }
-
- val question = Question.fromDto(questionDto)
-
- if (context == null) {
- val message = "No context defined"
- presenter.prepareFailView(IllegalArgumentException(message))
- return
- }
-
- if (QuestionContextEnum.valueOf(context) != questionDto.context) {
- val message = "Should answer question with the context: $context, found: ${questionDto.context}"
- presenter.prepareFailView(IllegalArgumentException(message))
- return
- }
-
- val answer = answer(questionDto.questionType, request, question)
- if (questionDto.context == QuestionContextEnum.ROB) {
- review.answerQualityQuestionOf(answer)
- } else {
- review.answerFormQuestionOf(answer)
- }
-
- studyReviewRepository.saveOrUpdate(review.toDto())
-
- presenter.prepareSuccessView(
- AnswerQuestionService.ResponseModel(
- userId,
- systematicStudyId,
- studyReviewId
- )
- )
- }
-
- private fun answer(
- type: String,
- request: AnswerQuestionService.RequestModel<*>,
- question: Question<*>,
- ): Answer<*> {
- if (type != request.type) {
- val message = "Answer for ${request.type} has been sent, but question ${question.id} is actually $type"
- throw IllegalArgumentException(message)
- }
- return when {
- type == "TEXTUAL" && request.answer is String -> (question as Textual).answer(request.answer)
- type == "PICK_LIST" && request.answer is String -> (question as PickList).answer(request.answer)
- type == "NUMBERED_SCALE" && request.answer is Int -> (question as NumberScale).answer(request.answer)
- type == "LABELED_SCALE" -> {
- when (val answer = request.answer) {
- is LinkedHashMap<*, *> -> {
- (answer["name"] as? String)?.let { name ->
- (answer["value"] as? Int)?.let { value ->
- (question as LabeledScale).answer(Label(name, value))
- }
- } ?: throw IllegalArgumentException("Invalid labeled scale answer: missing 'name' or 'value'")
- }
- is AnswerQuestionService.LabelDto -> {
- (question as LabeledScale).answer(Label(answer.name, answer.value))
- }
- else -> {
- throw IllegalArgumentException("Unsupported answer type for LABELED_SCALE")
- }
- }
- }
- else -> {
- val message = "Answer type of ${request.answer?.javaClass} is not compatible with question type $type"
- throw IllegalArgumentException(message)
- }
- }
- }
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/BatchAnswerQuestionServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/BatchAnswerQuestionServiceImpl.kt
index 6a8f753eb..640a8a209 100644
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/BatchAnswerQuestionServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/implementation/BatchAnswerQuestionServiceImpl.kt
@@ -1,12 +1,10 @@
package br.all.application.study.update.implementation
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.question.repository.QuestionRepository
import br.all.application.question.repository.fromDto
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.fromDto
@@ -39,24 +37,19 @@ class BatchAnswerQuestionServiceImpl(
private val questionRepository: QuestionRepository,
private val systematicStudyRepository: SystematicStudyRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
): BatchAnswerQuestionService {
@Transactional
override fun batchAnswerQuestion(
presenter: BatchAnswerQuestionPresenter,
- request: RequestModel,
- context: String
+ request: RequestModel
) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val reviewDto = studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId)
@@ -67,7 +60,6 @@ class BatchAnswerQuestionServiceImpl(
}
val review = StudyReview.fromDto(reviewDto)
- val questionContext = QuestionContextEnum.valueOf(context.uppercase())
val successfulQuestionIds = mutableListOf()
val failedAnswers = mutableListOf()
@@ -76,7 +68,6 @@ class BatchAnswerQuestionServiceImpl(
val questionDto = questionRepository.findById(request.systematicStudyId, answerDetail.questionId)
if (questionDto == null) throw EntityNotFoundException("Question with id ${answerDetail.questionId} in systematic study ${request.systematicStudyId} was not found!")
- if (questionDto.context != questionContext) throw IllegalArgumentException("Should answer question with the context: $context, found: ${questionDto.context}")
val question = Question.fromDto(questionDto)
val answer = convertAnswer(question, answerDetail, questionDto.questionType)
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/MarkAsDuplicatedServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/MarkAsDuplicatedServiceImpl.kt
index bd30d294b..a9caa7417 100644
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/MarkAsDuplicatedServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/implementation/MarkAsDuplicatedServiceImpl.kt
@@ -1,10 +1,8 @@
package br.all.application.study.update.implementation
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.fromDto
@@ -19,7 +17,6 @@ class MarkAsDuplicatedServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : MarkAsDuplicatedService {
override fun markAsDuplicated(
@@ -30,11 +27,8 @@ class MarkAsDuplicatedServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val referenceStudyDto = studyReviewRepository.findById(request.systematicStudyId, request.referenceStudyId)
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/RemoveCriteriaServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/RemoveCriteriaServiceImpl.kt
index a31e31ac5..e83475901 100644
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/RemoveCriteriaServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/implementation/RemoveCriteriaServiceImpl.kt
@@ -1,10 +1,8 @@
package br.all.application.study.update.implementation
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.fromDto
@@ -20,18 +18,14 @@ class RemoveCriteriaServiceImpl(
private val studyReviewRepository: StudyReviewRepository,
private val systematicStudyRepository: SystematicStudyRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
): RemoveCriteriaService {
override fun removeCriteria(presenter: RemoveCriteriaPresenter, request: RemoveCriteriaService.RequestModel) {
val user = credentialsService.loadCredentials(request.userId)?.toUser()
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
val studyReviewDto = studyReviewRepository.findById(request.systematicStudyId, request.studyId)
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewExtractionService.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewExtractionService.kt
index 6a97fe409..8f8baf6c2 100644
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewExtractionService.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewExtractionService.kt
@@ -1,10 +1,8 @@
package br.all.application.study.update.implementation
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.fromDto
@@ -22,7 +20,6 @@ class UpdateStudyReviewExtractionService(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : UpdateStudyReviewStatusService {
override fun changeStatus(presenter: UpdateStudyReviewStatusPresenter, request: RequestModel) {
@@ -30,11 +27,8 @@ class UpdateStudyReviewExtractionService(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if (presenter.isDone()) return
for (studyId in request.studyReviewId) {
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewPriorityService.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewPriorityService.kt
index fb898cdfc..4c7bda606 100644
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewPriorityService.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewPriorityService.kt
@@ -1,10 +1,8 @@
package br.all.application.study.update.implementation
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.fromDto
@@ -22,7 +20,6 @@ class UpdateStudyReviewPriorityService(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : UpdateStudyReviewStatusService {
override fun changeStatus(presenter: UpdateStudyReviewStatusPresenter, request: RequestModel) {
@@ -30,11 +27,8 @@ class UpdateStudyReviewPriorityService(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewSelectionService.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewSelectionService.kt
index 3de6b6eb9..eb9719239 100644
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewSelectionService.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewSelectionService.kt
@@ -1,10 +1,8 @@
package br.all.application.study.update.implementation
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.fromDto
@@ -22,7 +20,6 @@ class UpdateStudyReviewSelectionService(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository
) : UpdateStudyReviewStatusService {
override fun changeStatus(presenter: UpdateStudyReviewStatusPresenter, request: RequestModel){
@@ -30,11 +27,8 @@ class UpdateStudyReviewSelectionService(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewServiceImpl.kt b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewServiceImpl.kt
index d04507e11..bf7730c5a 100644
--- a/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewServiceImpl.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/implementation/UpdateStudyReviewServiceImpl.kt
@@ -1,10 +1,8 @@
package br.all.application.study.update.implementation
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.toDomain
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.repository.fromDto
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.repository.fromStudyUpdateRequestModel
@@ -19,7 +17,6 @@ class UpdateStudyReviewServiceImpl(
private val systematicStudyRepository: SystematicStudyRepository,
private val studyReviewRepository: StudyReviewRepository,
private val credentialsService: CredentialsService,
- private val collaborationRepository: CollaborationRepository,
) : UpdateStudyReviewService {
override fun updateFromStudy(presenter: UpdateStudyReviewPresenter, request: UpdateStudyReviewService.RequestModel) {
@@ -27,11 +24,8 @@ class UpdateStudyReviewServiceImpl(
val systematicStudyDto = systematicStudyRepository.findById(request.systematicStudyId)
val systematicStudy = systematicStudyDto?.let { SystematicStudy.fromDto(it) }
- val collaborations = collaborationRepository
- .listAllCollaborationsBySystematicStudyId(request.systematicStudyId)
- .map { it.toDomain() }
- presenter.prepareIfFailsPreconditions(user, systematicStudy, collaborations = collaborations)
+ presenter.prepareIfFailsPreconditions(user, systematicStudy)
if(presenter.isDone()) return
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/AnswerQuestionPresenter.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/AnswerQuestionPresenter.kt
deleted file mode 100644
index a81118761..000000000
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/AnswerQuestionPresenter.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.application.study.update.interfaces
-
-import br.all.application.shared.presenter.GenericPresenter
-import br.all.application.study.update.interfaces.AnswerQuestionService.ResponseModel
-
-interface AnswerQuestionPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/AnswerQuestionService.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/AnswerQuestionService.kt
deleted file mode 100644
index 66320599f..000000000
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/AnswerQuestionService.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package br.all.application.study.update.interfaces
-
-import io.swagger.v3.oas.annotations.media.Schema
-import java.util.*
-
-interface AnswerQuestionService {
- fun answerQuestion(presenter: AnswerQuestionPresenter, request: RequestModel<*>, context: String?)
-
- data class RequestModel(
- val userId: UUID,
- val systematicStudyId: UUID,
- val studyReviewId: Long,
- val questionId: UUID,
- val type: String,
- val answer: T,
- )
-
- data class LabelDto(
- val name: String,
- val value: Int
- )
-
- @Schema(name = "AnswerQuestionServiceResponseModel")
- data class ResponseModel(
- val userId: UUID,
- val systematicStudyId: UUID,
- val studyReviewId: Long,
- )
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionPresenter.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionPresenter.kt
index 627d35bb8..ee19e87bf 100644
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.update.interfaces
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.update.interfaces.BatchAnswerQuestionService.ResponseModel
interface BatchAnswerQuestionPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionService.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionService.kt
index 36c6299d1..1b1e91ecf 100644
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionService.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/interfaces/BatchAnswerQuestionService.kt
@@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema
import java.util.UUID
interface BatchAnswerQuestionService {
- fun batchAnswerQuestion(presenter: BatchAnswerQuestionPresenter, request: RequestModel, context: String)
+ fun batchAnswerQuestion(presenter: BatchAnswerQuestionPresenter, request: RequestModel)
data class RequestModel(
val userId: UUID,
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/MarkAsDuplicatedPresenter.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/MarkAsDuplicatedPresenter.kt
index 341d91e88..233772a2e 100644
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/MarkAsDuplicatedPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/interfaces/MarkAsDuplicatedPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.update.interfaces
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.update.interfaces.MarkAsDuplicatedService.ResponseModel
interface MarkAsDuplicatedPresenter : GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/RemoveCriteriaPresenter.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/RemoveCriteriaPresenter.kt
index ab24adad1..5c289a47a 100644
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/RemoveCriteriaPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/interfaces/RemoveCriteriaPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.update.interfaces
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface RemoveCriteriaPresenter: GenericPresenter
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewPresenter.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewPresenter.kt
index f4156d3dc..096aa4936 100644
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewPresenter.kt
@@ -1,5 +1,5 @@
package br.all.application.study.update.interfaces
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
interface UpdateStudyReviewPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewStatusPresenter.kt b/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewStatusPresenter.kt
index 87d11490a..88c318024 100644
--- a/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewStatusPresenter.kt
+++ b/review/src/main/kotlin/br/all/application/study/update/interfaces/UpdateStudyReviewStatusPresenter.kt
@@ -1,6 +1,6 @@
package br.all.application.study.update.interfaces
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.study.update.interfaces.UpdateStudyReviewStatusService.ResponseModel
interface UpdateStudyReviewStatusPresenter : GenericPresenter
diff --git a/review/src/main/kotlin/br/all/application/user/CredentialsService.kt b/review/src/main/kotlin/br/all/application/user/CredentialsService.kt
index c7bd692d3..36004de22 100644
--- a/review/src/main/kotlin/br/all/application/user/CredentialsService.kt
+++ b/review/src/main/kotlin/br/all/application/user/CredentialsService.kt
@@ -1,8 +1,8 @@
package br.all.application.user
-import br.all.domain.model.user.Researcher
-import br.all.domain.model.user.ResearcherId
-import br.all.domain.model.user.Role
+import br.all.domain.shared.user.Researcher
+import br.all.domain.shared.user.ResearcherId
+import br.all.domain.shared.user.Role
import io.swagger.v3.oas.annotations.media.Schema
import java.util.UUID
diff --git a/review/src/main/kotlin/br/all/application/user/credentials/FakeResearcherCredentialsService.kt b/review/src/main/kotlin/br/all/application/user/credentials/FakeResearcherCredentialsService.kt
index 22e8718da..b10846e5a 100644
--- a/review/src/main/kotlin/br/all/application/user/credentials/FakeResearcherCredentialsService.kt
+++ b/review/src/main/kotlin/br/all/application/user/credentials/FakeResearcherCredentialsService.kt
@@ -1,6 +1,6 @@
package br.all.application.user.credentials
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
import org.springframework.stereotype.Service
@Service
diff --git a/review/src/main/kotlin/br/all/application/user/credentials/ResearcherCredentialsService.kt b/review/src/main/kotlin/br/all/application/user/credentials/ResearcherCredentialsService.kt
index f7cbd4356..2f2615c5d 100644
--- a/review/src/main/kotlin/br/all/application/user/credentials/ResearcherCredentialsService.kt
+++ b/review/src/main/kotlin/br/all/application/user/credentials/ResearcherCredentialsService.kt
@@ -1,6 +1,6 @@
package br.all.application.user.credentials
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
interface ResearcherCredentialsService {
fun isAuthenticated(researcherId: ResearcherId): Boolean
diff --git a/review/src/main/kotlin/br/all/domain/model/collaboration/Collaboration.kt b/review/src/main/kotlin/br/all/domain/model/collaboration/Collaboration.kt
deleted file mode 100644
index 2f9df8507..000000000
--- a/review/src/main/kotlin/br/all/domain/model/collaboration/Collaboration.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package br.all.domain.model.collaboration
-
-import br.all.domain.model.review.SystematicStudyId
-import br.all.domain.model.user.ResearcherId
-import br.all.domain.shared.ddd.Entity
-import br.all.domain.shared.ddd.Notification
-import java.util.*
-
-class Collaboration(
- id: CollaborationId,
- val systematicStudyId: SystematicStudyId,
- val userId: ResearcherId,
- status: CollaborationStatus = CollaborationStatus.ACTIVE,
- permissions: Set = emptySet()
-) : Entity(id) {
-
- private val _permissions = permissions.toMutableSet()
- val permissions: Set
- get() = _permissions.toSet()
-
- var status = status
- private set
-
- init {
- val notification = validate()
- require(notification.hasNoErrors()) { notification.message() }
- }
-
- fun addPermission(permission: CollaborationPermission) {
- _permissions.add(permission)
- }
-
- fun removePermission(permission: CollaborationPermission) {
- _permissions.remove(permission)
- }
-
- fun removeCollaboration() {
- status = CollaborationStatus.REMOVED
- }
-
- private fun validate() = Notification().also {
- if (_permissions.isEmpty())
- it.addError("Collaboration must have at least one permission")
- }
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationId.kt b/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationId.kt
deleted file mode 100644
index da15c73e1..000000000
--- a/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationId.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package br.all.domain.model.collaboration
-
-import br.all.domain.shared.ddd.Identifier
-import br.all.domain.shared.ddd.Notification
-import java.util.*
-
-@JvmInline
-value class CollaborationId(val value: UUID) : Identifier {
- init {
- val notification = validate()
- require(notification.hasNoErrors()) { notification.message() }
- }
-
- override fun validate() = Notification()
-
- override fun value() = value
-
- override fun toString() = value.toString()
-}
-
-fun UUID.toCollaborationId() = CollaborationId(this)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationPermission.kt b/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationPermission.kt
deleted file mode 100644
index 9f87ac2f9..000000000
--- a/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationPermission.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package br.all.domain.model.collaboration
-
-enum class CollaborationPermission {
- EDIT,
- REVIEW_STUDIES,
- VIEW
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationStatus.kt b/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationStatus.kt
deleted file mode 100644
index d48c3431c..000000000
--- a/review/src/main/kotlin/br/all/domain/model/collaboration/CollaborationStatus.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.domain.model.collaboration
-
-enum class CollaborationStatus {
- REMOVED,
- ACTIVE
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/model/collaboration/Invite.kt b/review/src/main/kotlin/br/all/domain/model/collaboration/Invite.kt
deleted file mode 100644
index b2bb0983d..000000000
--- a/review/src/main/kotlin/br/all/domain/model/collaboration/Invite.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package br.all.domain.model.collaboration
-
-import br.all.domain.model.review.SystematicStudyId
-import br.all.domain.model.user.ResearcherId
-import br.all.domain.shared.ddd.Entity
-import br.all.domain.shared.ddd.Notification
-import java.time.LocalDateTime
-import java.util.*
-
-class Invite(
- id: InviteId,
- val systematicStudyId: SystematicStudyId,
- val userId: ResearcherId,
- permissions: Set = emptySet(),
- val inviteDate: LocalDateTime,
- val expirationDate: LocalDateTime = inviteDate.plusDays(30)
-) : Entity(id) {
-
- private val _permissions = permissions.toMutableSet()
- val permissions get() = _permissions
-
- init {
- val notification = validate()
- require(notification.hasNoErrors()) { notification.message() }
- }
-
- fun validate() = Notification().also {
- if (inviteDate.isAfter(expirationDate))
- it.addError("Invite date cannot be after expiration date")
- }
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/model/collaboration/InviteId.kt b/review/src/main/kotlin/br/all/domain/model/collaboration/InviteId.kt
deleted file mode 100644
index cc045b88d..000000000
--- a/review/src/main/kotlin/br/all/domain/model/collaboration/InviteId.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package br.all.domain.model.collaboration
-
-import br.all.domain.shared.ddd.Identifier
-import br.all.domain.shared.ddd.Notification
-import java.util.*
-
-@JvmInline
-value class InviteId(private val value: UUID) : Identifier {
- init {
- val notification = validate()
- require(notification.hasNoErrors()) { notification.message() }
- }
-
- override fun validate() = Notification()
-
- override fun value() = value
-
- override fun toString() = value.toString()
-}
-
-fun UUID.toInviteId() = InviteId(this)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/model/protocol/Criterion.kt b/review/src/main/kotlin/br/all/domain/model/protocol/Criterion.kt
index f88f64879..f5aaae05d 100644
--- a/review/src/main/kotlin/br/all/domain/model/protocol/Criterion.kt
+++ b/review/src/main/kotlin/br/all/domain/model/protocol/Criterion.kt
@@ -2,9 +2,8 @@ package br.all.domain.model.protocol
import br.all.domain.shared.ddd.Notification
import br.all.domain.shared.ddd.ValueObject
-import jakarta.persistence.Embeddable
-data class Criterion internal constructor(
+data class Criterion(
val description: String,
val type: CriterionType,
) : ValueObject() {
diff --git a/review/src/main/kotlin/br/all/domain/model/protocol/Protocol.kt b/review/src/main/kotlin/br/all/domain/model/protocol/Protocol.kt
index 430a97d9d..34f7afc52 100644
--- a/review/src/main/kotlin/br/all/domain/model/protocol/Protocol.kt
+++ b/review/src/main/kotlin/br/all/domain/model/protocol/Protocol.kt
@@ -1,8 +1,8 @@
package br.all.domain.model.protocol
+import br.all.domain.shared.ddd.Entity
import br.all.domain.model.question.QuestionId
import br.all.domain.model.review.SystematicStudyId
-import br.all.domain.shared.ddd.Entity
import br.all.domain.shared.utils.exists
import br.all.domain.shared.valueobject.Language
import java.util.*
diff --git a/review/src/main/kotlin/br/all/domain/model/question/PickList.kt b/review/src/main/kotlin/br/all/domain/model/question/PickList.kt
index 73fc705a7..8a04e5e3e 100644
--- a/review/src/main/kotlin/br/all/domain/model/question/PickList.kt
+++ b/review/src/main/kotlin/br/all/domain/model/question/PickList.kt
@@ -1,6 +1,5 @@
package br.all.domain.model.question
-import br.all.domain.model.protocol.ProtocolId
import br.all.domain.model.review.SystematicStudyId
import br.all.domain.model.study.Answer
import br.all.domain.shared.ddd.Notification
diff --git a/review/src/main/kotlin/br/all/domain/model/question/Question.kt b/review/src/main/kotlin/br/all/domain/model/question/Question.kt
index f5484018b..dcd216b10 100644
--- a/review/src/main/kotlin/br/all/domain/model/question/Question.kt
+++ b/review/src/main/kotlin/br/all/domain/model/question/Question.kt
@@ -1,9 +1,8 @@
package br.all.domain.model.question
-import br.all.domain.model.protocol.ProtocolId
+import br.all.domain.shared.ddd.Entity
import br.all.domain.model.review.SystematicStudyId
import br.all.domain.model.study.Answer
-import br.all.domain.shared.ddd.Entity
import br.all.domain.shared.ddd.Notification
import java.util.*
diff --git a/review/src/main/kotlin/br/all/domain/model/question/QuestionId.kt b/review/src/main/kotlin/br/all/domain/model/question/QuestionId.kt
index 339c6122a..5d232b4c0 100644
--- a/review/src/main/kotlin/br/all/domain/model/question/QuestionId.kt
+++ b/review/src/main/kotlin/br/all/domain/model/question/QuestionId.kt
@@ -2,11 +2,10 @@ package br.all.domain.model.question
import br.all.domain.shared.ddd.Identifier
import br.all.domain.shared.ddd.Notification
-import java.rmi.server.UID
import java.util.UUID
@JvmInline
-value class QuestionId(val value : UUID) : Identifier {
+value class QuestionId(val value : UUID) : Identifier {
override fun validate() = Notification()
override fun value(): UUID = value
override fun toString() = value.toString()
diff --git a/review/src/main/kotlin/br/all/domain/model/review/SystematicStudy.kt b/review/src/main/kotlin/br/all/domain/model/review/SystematicStudy.kt
index d6041339c..69ce0e5c7 100644
--- a/review/src/main/kotlin/br/all/domain/model/review/SystematicStudy.kt
+++ b/review/src/main/kotlin/br/all/domain/model/review/SystematicStudy.kt
@@ -1,11 +1,7 @@
package br.all.domain.model.review
-import br.all.domain.model.collaboration.Collaboration
-import br.all.domain.model.collaboration.CollaborationId
-import br.all.domain.model.collaboration.toCollaborationId
-import br.all.domain.model.user.ResearcherId
-import br.all.domain.model.user.toResearcherId
import br.all.domain.shared.ddd.Entity
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.shared.ddd.Notification
import br.all.domain.shared.utils.exists
import java.util.*
@@ -15,7 +11,7 @@ class SystematicStudy(
title: String,
description: String,
owner: ResearcherId,
- collaborators: Set
+ collaborators: Set = emptySet(),
) : Entity(id) {
private val _collaborators = collaborators.toMutableSet()
@@ -36,6 +32,7 @@ class SystematicStudy(
init {
val notification = validate()
require(notification.hasNoErrors()) { notification.message() }
+ _collaborators.add(owner)
}
private fun validate() = Notification().also {
@@ -45,20 +42,19 @@ class SystematicStudy(
it.addError("Systematic Study description must not be blank!")
}
- fun addCollaborator(collaborationId: CollaborationId) = _collaborators.add(collaborationId)
+ fun addCollaborator(researcherId: ResearcherId) = _collaborators.add(researcherId)
- fun changeOwner(previousOwnerCollaborationId: CollaborationId, newCollaboration: Collaboration) {
- _collaborators.remove(previousOwnerCollaborationId)
- owner = newCollaboration.userId
- _collaborators.add(newCollaboration.id as CollaborationId)
- }
+ fun changeOwner(researcherId: ResearcherId) {
+ _collaborators.add(researcherId)
+ owner = researcherId
+ }
- fun removeCollaborator(collaboration: Collaboration) {
- check(collaboration.id.value().toResearcherId() != owner) { "Cannot remove the Systematic Study owner: $owner" }
- exists(collaboration.id.value().toCollaborationId() in _collaborators) {
- "Cannot remove member that is not part of the collaboration: ${collaboration.id}"
+ fun removeCollaborator(researcherId: ResearcherId) {
+ check(researcherId != owner) { "Cannot remove the Systematic Study owner: $owner" }
+ exists(researcherId in _collaborators) {
+ "Cannot remove member that is not part of the collaboration: $researcherId"
}
- _collaborators.remove(collaboration.id)
+ _collaborators.remove(researcherId)
}
override fun toString() = "SystematicStudy(reviewId=$id, title='$title', description='$description', owner=$owner," +
diff --git a/review/src/main/kotlin/br/all/domain/model/search/SearchSession.kt b/review/src/main/kotlin/br/all/domain/model/search/SearchSession.kt
index 42eca6571..b8ce58d8f 100644
--- a/review/src/main/kotlin/br/all/domain/model/search/SearchSession.kt
+++ b/review/src/main/kotlin/br/all/domain/model/search/SearchSession.kt
@@ -1,9 +1,9 @@
package br.all.domain.model.search
+import br.all.domain.shared.ddd.Entity
import br.all.domain.model.protocol.SearchSource
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.model.review.SystematicStudyId
-import br.all.domain.shared.ddd.Entity
import br.all.domain.shared.ddd.Notification
import java.time.LocalDateTime
import java.util.*
diff --git a/review/src/main/kotlin/br/all/domain/model/search/SearchSessionID.kt b/review/src/main/kotlin/br/all/domain/model/search/SearchSessionID.kt
index 5a1c27d69..bdf029c24 100644
--- a/review/src/main/kotlin/br/all/domain/model/search/SearchSessionID.kt
+++ b/review/src/main/kotlin/br/all/domain/model/search/SearchSessionID.kt
@@ -5,7 +5,7 @@ import br.all.domain.shared.ddd.Notification
import java.util.*
@JvmInline
-value class SearchSessionID(val value: UUID) : Identifier {
+value class SearchSessionID(val value: UUID) : Identifier {
init {
val notification = validate()
diff --git a/review/src/main/kotlin/br/all/domain/model/study/StudyReview.kt b/review/src/main/kotlin/br/all/domain/model/study/StudyReview.kt
index 75e86a626..fec26fef2 100644
--- a/review/src/main/kotlin/br/all/domain/model/study/StudyReview.kt
+++ b/review/src/main/kotlin/br/all/domain/model/study/StudyReview.kt
@@ -1,7 +1,7 @@
package br.all.domain.model.study
-import br.all.domain.model.protocol.Criterion
import br.all.domain.shared.ddd.Entity
+import br.all.domain.model.protocol.Criterion
import br.all.domain.model.review.SystematicStudyId
import br.all.domain.model.search.SearchSessionID
diff --git a/review/src/main/kotlin/br/all/domain/model/study/StudyReviewId.kt b/review/src/main/kotlin/br/all/domain/model/study/StudyReviewId.kt
index e2e900969..4754210c2 100644
--- a/review/src/main/kotlin/br/all/domain/model/study/StudyReviewId.kt
+++ b/review/src/main/kotlin/br/all/domain/model/study/StudyReviewId.kt
@@ -2,11 +2,9 @@ package br.all.domain.model.study
import br.all.domain.shared.ddd.Identifier
import br.all.domain.shared.ddd.Notification
-import java.util.UUID
-import javax.swing.LookAndFeel
@JvmInline
-value class StudyReviewId(val value: Long) : Identifier {
+value class StudyReviewId(val value: Long) : Identifier {
init {
val notification = validate()
diff --git a/review/src/main/kotlin/br/all/domain/shared/ddd/Identifier.kt b/review/src/main/kotlin/br/all/domain/shared/ddd/Identifier.kt
deleted file mode 100644
index 6e5b54bbf..000000000
--- a/review/src/main/kotlin/br/all/domain/shared/ddd/Identifier.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.domain.shared.ddd
-
-interface Identifier {
- fun validate() : Notification
- fun value() : T
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt b/review/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt
deleted file mode 100644
index 298fb9ac3..000000000
--- a/review/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package br.all.domain.shared.ddd
-
-class Notification {
-
- private val errors: MutableList = mutableListOf()
- fun addError(message: String, cause: Exception? = null) = errors.add(Error(message, cause))
- fun hasNoErrors() = errors.isEmpty()
- fun message() = errors.joinToString(" | ") { it.message }
- data class Error(val message: String, val cause: Exception?)
-}
-
-
-
diff --git a/review/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt b/review/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt
deleted file mode 100644
index c22062ab7..000000000
--- a/review/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package br.all.domain.shared.ddd
-
-abstract class ValueObject {
- protected abstract fun validate() : Notification
-}
diff --git a/review/src/main/kotlin/br/all/domain/shared/utils/Phrase.kt b/review/src/main/kotlin/br/all/domain/shared/utils/Phrase.kt
index 4588df4b8..dea9f462f 100644
--- a/review/src/main/kotlin/br/all/domain/shared/utils/Phrase.kt
+++ b/review/src/main/kotlin/br/all/domain/shared/utils/Phrase.kt
@@ -2,6 +2,7 @@ package br.all.domain.shared.utils
import br.all.domain.shared.ddd.Notification
import br.all.domain.shared.ddd.ValueObject
+import kotlin.text.iterator
data class Phrase(private val text: String) : ValueObject() {
init {
diff --git a/review/src/main/kotlin/br/all/infrastructure/collaboration/CollaborationDocument.kt b/review/src/main/kotlin/br/all/infrastructure/collaboration/CollaborationDocument.kt
deleted file mode 100644
index 99f6ff6b7..000000000
--- a/review/src/main/kotlin/br/all/infrastructure/collaboration/CollaborationDocument.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package br.all.infrastructure.collaboration
-
-import org.springframework.data.annotation.Id
-import org.springframework.data.mongodb.core.mapping.Document
-import java.util.*
-
-@Document("collaboration")
-data class CollaborationDocument(
- @Id val id: UUID,
- val systematicStudyId: UUID,
- val userId: UUID,
- val status: String,
- val permissions: Set = emptySet()
-)
diff --git a/review/src/main/kotlin/br/all/infrastructure/collaboration/CollaborationRepositoryImpl.kt b/review/src/main/kotlin/br/all/infrastructure/collaboration/CollaborationRepositoryImpl.kt
deleted file mode 100644
index 4f6152b38..000000000
--- a/review/src/main/kotlin/br/all/infrastructure/collaboration/CollaborationRepositoryImpl.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-package br.all.infrastructure.collaboration
-
-import br.all.application.collaboration.repository.CollaborationDto
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.collaboration.repository.InviteDto
-import org.springframework.stereotype.Repository
-import java.time.LocalDateTime
-import java.util.*
-
-@Repository
-class CollaborationRepositoryImpl(
- private val innerCollaborationRepository: MongoCollaborationRepository,
- private val innerInviteRepository: MongoInviteRepository
-)
- : CollaborationRepository
-{
- override fun saveOrUpdateCollaboration(dto: CollaborationDto) {
- innerCollaborationRepository.save(CollaborationDocument(
- dto.id,
- dto.systematicStudyId,
- dto.userId,
- dto.status,
- dto.permissions
- ))
- }
-
- override fun saveOrUpdateInvite(dto: InviteDto) {
- innerInviteRepository.save(InviteDocument(
- dto.id,
- dto.systematicStudyId,
- dto.userId,
- dto.inviteDate,
- dto.expirationDate
- ))
- }
-
- override fun listAllCollaborationsBySystematicStudyId(id: UUID): List {
- return innerCollaborationRepository.findAll().filter { it.systematicStudyId == id }.map {
- CollaborationDto(it.id, it.systematicStudyId, it.userId, it.status, it.permissions)
- }
- }
-
- override fun listAllInvitesBySystematicStudyId(id: UUID): List {
- return innerInviteRepository.findAll()
- .filter { it.systematicStudyId == id && it.expirationDate.isBefore(LocalDateTime.now()) }
- .map {
- InviteDto(it.id, it.systematicStudyId, it.userId, it.inviteDate, it.expirationDate, it.permissions)
- }
- }
-
- override fun deleteInvite(id: UUID) {
- innerInviteRepository.deleteById(id)
- }
-}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/infrastructure/collaboration/InviteDocument.kt b/review/src/main/kotlin/br/all/infrastructure/collaboration/InviteDocument.kt
deleted file mode 100644
index 3f5b2626e..000000000
--- a/review/src/main/kotlin/br/all/infrastructure/collaboration/InviteDocument.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package br.all.infrastructure.collaboration
-
-import org.springframework.data.annotation.Id
-import org.springframework.data.mongodb.core.mapping.Document
-import java.time.LocalDateTime
-import java.util.*
-
-@Document("invite")
-data class InviteDocument(
- @Id val id: UUID,
- val systematicStudyId: UUID,
- val userId: UUID,
- val inviteDate: LocalDateTime,
- val expirationDate: LocalDateTime,
- val permissions: Set = emptySet()
-)
diff --git a/review/src/main/kotlin/br/all/infrastructure/collaboration/MongoCollaborationRepository.kt b/review/src/main/kotlin/br/all/infrastructure/collaboration/MongoCollaborationRepository.kt
deleted file mode 100644
index 043e6c494..000000000
--- a/review/src/main/kotlin/br/all/infrastructure/collaboration/MongoCollaborationRepository.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.infrastructure.collaboration
-
-import org.springframework.data.mongodb.repository.MongoRepository
-import java.util.*
-
-interface MongoCollaborationRepository: MongoRepository
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/infrastructure/collaboration/MongoInviteRepository.kt b/review/src/main/kotlin/br/all/infrastructure/collaboration/MongoInviteRepository.kt
deleted file mode 100644
index 05358d9fe..000000000
--- a/review/src/main/kotlin/br/all/infrastructure/collaboration/MongoInviteRepository.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package br.all.infrastructure.collaboration
-
-import org.springframework.data.mongodb.repository.MongoRepository
-import java.util.*
-
-interface MongoInviteRepository: MongoRepository
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/infrastructure/study/MongoStudyReviewRepository.kt b/review/src/main/kotlin/br/all/infrastructure/study/MongoStudyReviewRepository.kt
index 984f11917..c6d8893b0 100644
--- a/review/src/main/kotlin/br/all/infrastructure/study/MongoStudyReviewRepository.kt
+++ b/review/src/main/kotlin/br/all/infrastructure/study/MongoStudyReviewRepository.kt
@@ -1,6 +1,8 @@
package br.all.infrastructure.study
import br.all.application.study.repository.AnswerDto
+import org.springframework.data.domain.Page
+import org.springframework.data.domain.Pageable
import org.springframework.data.mongodb.repository.Aggregation
import org.springframework.data.mongodb.repository.MongoRepository
import org.springframework.data.mongodb.repository.Update
@@ -9,7 +11,11 @@ import java.util.*
interface MongoStudyReviewRepository : MongoRepository {
+ fun findAllById_SystematicStudyId(reviewID: UUID, pageable: Pageable): Page
+
fun findAllById_SystematicStudyId(reviewID: UUID): List
+
+ fun countById_SystematicStudyId(reviewID: UUID): Long
fun findAllById_SystematicStudyIdAndSearchSourcesContaining(reviewID: UUID, source: String): List
diff --git a/review/src/main/kotlin/br/all/infrastructure/study/StudyReviewRepositoryImpl.kt b/review/src/main/kotlin/br/all/infrastructure/study/StudyReviewRepositoryImpl.kt
index 01339ba89..838f133cf 100644
--- a/review/src/main/kotlin/br/all/infrastructure/study/StudyReviewRepositoryImpl.kt
+++ b/review/src/main/kotlin/br/all/infrastructure/study/StudyReviewRepositoryImpl.kt
@@ -4,6 +4,9 @@ import br.all.application.study.repository.AnswerDto
import br.all.application.study.repository.StudyReviewDto
import br.all.application.study.repository.StudyReviewRepository
import br.all.infrastructure.shared.toNullable
+import org.springframework.data.domain.Page
+import org.springframework.data.domain.PageImpl
+import org.springframework.data.domain.Pageable
import org.springframework.stereotype.Repository
import java.util.*
@@ -14,8 +17,13 @@ open class StudyReviewRepositoryImpl(private val repository: MongoStudyReviewRe
override fun findById(reviewId: UUID, studyId: Long) =
repository.findById(StudyReviewId(reviewId, studyId)).toNullable()?.toDto()
- override fun findAllFromReview(reviewId: UUID): List =
- repository.findAllById_SystematicStudyId(reviewId).map { it.toDto() }
+ override fun findAllFromReview(reviewId: UUID, pageable: Pageable): List =
+ repository.findAllById_SystematicStudyId(reviewId, pageable).content.map { it.toDto() }
+
+ override fun findAllFromReviewPaged(reviewId: UUID, pageable: Pageable): Page {
+ val documentsPage = repository.findAllById_SystematicStudyId(reviewId, pageable)
+ return documentsPage.map { it.toDto() }
+ }
override fun findAllBySource(reviewId: UUID, source: String): List =
// repository.findAllById_SystematicStudyId(reviewId).map { it.toDto() }
diff --git a/review/src/test/kotlin/br/all/application/protocol/find/FindProtocolServiceImplTest.kt b/review/src/test/kotlin/br/all/application/protocol/find/FindProtocolServiceImplTest.kt
index 378f78244..fcf1ddc42 100644
--- a/review/src/test/kotlin/br/all/application/protocol/find/FindProtocolServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/protocol/find/FindProtocolServiceImplTest.kt
@@ -1,12 +1,11 @@
package br.all.application.protocol.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.protocol.util.TestDataFactory
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -30,8 +29,6 @@ class FindProtocolServiceImplTest {
private lateinit var credentialsService: CredentialsService
@MockK(relaxed = true)
private lateinit var presenter: FindProtocolPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
@InjectMockKs
private lateinit var sut: FindProtocolServiceImpl
@@ -45,10 +42,8 @@ class FindProtocolServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
factory.researcher,
factory.systematicStudy,
- factory.collaboration
)
}
diff --git a/review/src/test/kotlin/br/all/application/protocol/find/GetProtocolStageServiceImplTest.kt b/review/src/test/kotlin/br/all/application/protocol/find/FindProtocolStageServiceImplTest.kt
similarity index 95%
rename from review/src/test/kotlin/br/all/application/protocol/find/GetProtocolStageServiceImplTest.kt
rename to review/src/test/kotlin/br/all/application/protocol/find/FindProtocolStageServiceImplTest.kt
index 4235266af..d803ac572 100644
--- a/review/src/test/kotlin/br/all/application/protocol/find/GetProtocolStageServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/protocol/find/FindProtocolStageServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.protocol.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.protocol.util.TestDataFactory as ProtocolFactory
import br.all.application.study.util.TestDataFactory as StudyReviewFactory
@@ -20,9 +19,9 @@ import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.extension.ExtendWith
import java.util.UUID
import kotlin.test.Test
-import br.all.application.protocol.find.GetProtocolStageService.RequestModel
-import br.all.application.protocol.find.GetProtocolStageService.ResponseModel
-import br.all.application.protocol.find.GetProtocolStageService.ProtocolStage
+import br.all.application.protocol.find.FindProtocolStageService.RequestModel
+import br.all.application.protocol.find.FindProtocolStageService.ResponseModel
+import br.all.application.protocol.find.FindProtocolStageService.ProtocolStage
import br.all.application.protocol.repository.CriterionDto
import br.all.application.protocol.repository.PicocDto
import br.all.application.question.repository.QuestionRepository
@@ -32,7 +31,7 @@ import io.mockk.verify
@Tag("UnitTest")
@Tag("ServiceTest")
@ExtendWith(MockKExtension::class)
-class GetProtocolStageServiceImplTest {
+class FindProtocolStageServiceImplTest {
@MockK(relaxUnitFun = true)
private lateinit var protocolRepository: ProtocolRepository
@@ -50,13 +49,10 @@ class GetProtocolStageServiceImplTest {
private lateinit var credentialsService: CredentialsService
@MockK(relaxUnitFun = true)
- private lateinit var presenter: GetProtocolStagePresenter
-
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
+ private lateinit var presenter: FindProtocolStagePresenter
@InjectMockKs
- private lateinit var sut: GetProtocolStageServiceImpl
+ private lateinit var sut: FindProtocolStageServiceImpl
private lateinit var precondition: PreconditionCheckerMockingNew
private lateinit var protocolFactory: ProtocolFactory
@@ -65,7 +61,6 @@ class GetProtocolStageServiceImplTest {
private lateinit var researcherId: UUID
private lateinit var systematicStudyId: UUID
- private lateinit var collaboration: UUID
@BeforeEach
fun setup() {
@@ -75,16 +70,13 @@ class GetProtocolStageServiceImplTest {
researcherId = protocolFactory.researcher
systematicStudyId = protocolFactory.systematicStudy
- collaboration = protocolFactory.collaboration
precondition = PreconditionCheckerMockingNew(
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- collaboration
+ systematicStudyId
)
precondition.makeEverythingWork()
diff --git a/review/src/test/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImplTest.kt b/review/src/test/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImplTest.kt
index 7371ff32c..dda08ed09 100644
--- a/review/src/test/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/protocol/update/UpdateProtocolServiceImplTest.kt
@@ -1,12 +1,11 @@
package br.all.application.protocol.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.protocol.util.TestDataFactory
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
@@ -36,8 +35,6 @@ class UpdateProtocolServiceImplTest {
private lateinit var scoreCalculatorService: ScoreCalculatorService
@MockK(relaxed = true)
private lateinit var presenter: UpdateProtocolPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
@InjectMockKs
private lateinit var sut: UpdateProtocolServiceImpl
@@ -47,15 +44,13 @@ class UpdateProtocolServiceImplTest {
@BeforeEach
fun setUp() {
factory = TestDataFactory()
- val (researcher, systematicStudy, collaboration) = factory
+ val (researcher, systematicStudy) = factory
preconditionCheckerMocking = PreconditionCheckerMockingNew(
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcher,
systematicStudy,
- collaboration
)
}
diff --git a/review/src/test/kotlin/br/all/application/protocol/util/TestDataFactory.kt b/review/src/test/kotlin/br/all/application/protocol/util/TestDataFactory.kt
index 560d4c038..4e4ad0392 100644
--- a/review/src/test/kotlin/br/all/application/protocol/util/TestDataFactory.kt
+++ b/review/src/test/kotlin/br/all/application/protocol/util/TestDataFactory.kt
@@ -14,7 +14,6 @@ import br.all.application.protocol.update.UpdateProtocolService.ResponseModel as
class TestDataFactory {
val researcher: UUID = UUID.randomUUID()
val systematicStudy: UUID = UUID.randomUUID()
- val collaboration: UUID = UUID.randomUUID()
private val faker = Faker()
@@ -164,6 +163,4 @@ class TestDataFactory {
operator fun component1() = researcher
operator fun component2() = systematicStudy
-
- operator fun component3() = collaboration
}
diff --git a/review/src/test/kotlin/br/all/application/question/create/CreateQuestionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/question/create/CreateQuestionServiceImplTest.kt
index 93d1283e5..c4b539262 100644
--- a/review/src/test/kotlin/br/all/application/question/create/CreateQuestionServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/question/create/CreateQuestionServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.question.create
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.create.CreateQuestionService.QuestionType
import br.all.application.question.create.CreateQuestionService.QuestionType.*
import br.all.application.question.create.CreateQuestionService.ResponseModel
@@ -40,9 +39,6 @@ class CreateQuestionServiceImplTest {
@MockK(relaxed = true)
private lateinit var presenter: CreateQuestionPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
private lateinit var sut: CreateQuestionServiceImpl
@@ -53,13 +49,7 @@ class CreateQuestionServiceImplTest {
fun setUp() {
factory = TestDataFactory()
preconditionCheckerMocking = PreconditionCheckerMockingNew(
- presenter,
- credentialsService,
- systematicRepository,
- collaborationRepository,
- factory.researcher,
- factory.systematicStudy,
- factory.collaboration
+ presenter, credentialsService, systematicRepository, factory.researcher, factory.systematicStudy
)
}
diff --git a/review/src/test/kotlin/br/all/application/question/find/FindQuestionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/question/find/FindQuestionServiceImplTest.kt
index e86dfcbdc..1f09a1877 100644
--- a/review/src/test/kotlin/br/all/application/question/find/FindQuestionServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/question/find/FindQuestionServiceImplTest.kt
@@ -1,12 +1,11 @@
package br.all.application.question.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.create.CreateQuestionService.*
import br.all.application.question.repository.QuestionRepository
import br.all.application.question.util.TestDataFactory
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -36,9 +35,6 @@ class FindQuestionServiceImplTest {
@MockK(relaxed = true)
private lateinit var presenter: FindQuestionPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
private lateinit var sut: FindQuestionServiceImpl
@@ -49,13 +45,7 @@ class FindQuestionServiceImplTest {
fun setUp() {
factory = TestDataFactory()
preconditionCheckerMocking = PreconditionCheckerMockingNew(
- presenter,
- credentialsService,
- systematicRepository,
- collaborationRepository,
- factory.researcher,
- factory.systematicStudy,
- factory.collaboration
+ presenter, credentialsService, systematicRepository, factory.researcher, factory.systematicStudy
)
}
diff --git a/review/src/test/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImplTest.kt
index 67df74bec..17dd479eb 100644
--- a/review/src/test/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/question/update/services/UpdateQuestionServiceImplTest.kt
@@ -1,13 +1,15 @@
package br.all.application.question.update.services
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.create.CreateQuestionService.*
import br.all.application.question.create.CreateQuestionService.QuestionType.*
import br.all.application.question.repository.QuestionRepository
import br.all.application.question.update.presenter.UpdateQuestionPresenter
import br.all.application.question.util.TestDataFactory
+import br.all.application.user.credentials.ResearcherCredentialsService
import br.all.application.review.repository.SystematicStudyRepository
+import br.all.application.search.repository.SearchSessionRepository
import br.all.application.user.CredentialsService
+import br.all.application.util.PreconditionCheckerMocking
import br.all.application.util.PreconditionCheckerMockingNew
import br.all.domain.services.UuidGeneratorService
import io.mockk.every
@@ -33,12 +35,12 @@ class UpdateQuestionServiceImplTest {
@MockK
private lateinit var credentialsService: CredentialsService
+ @MockK
+ private lateinit var uuidGeneratorService: UuidGeneratorService
+
@MockK(relaxed = true)
private lateinit var presenter: UpdateQuestionPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
private lateinit var sut: UpdateQuestionServiceImpl
@@ -52,10 +54,8 @@ class UpdateQuestionServiceImplTest {
presenter,
credentialsService,
systematicRepository,
- collaborationRepository,
factory.researcher,
- factory.systematicStudy,
- factory.collaboration
+ factory.systematicStudy
)
}
diff --git a/review/src/test/kotlin/br/all/application/question/util/TestDataFactory.kt b/review/src/test/kotlin/br/all/application/question/util/TestDataFactory.kt
index 204585c92..f1bdb5c59 100644
--- a/review/src/test/kotlin/br/all/application/question/util/TestDataFactory.kt
+++ b/review/src/test/kotlin/br/all/application/question/util/TestDataFactory.kt
@@ -15,7 +15,6 @@ class TestDataFactory {
val question: UUID = UUID.randomUUID()
val code: String = faker.lorem.words()
val description: String = faker.lorem.words()
- val collaboration: UUID = UUID.randomUUID()
fun generateTextualDto(
questionId: UUID = question,
@@ -234,5 +233,4 @@ class TestDataFactory {
operator fun component1() = researcher
operator fun component2() = systematicStudy
operator fun component3() = question
- operator fun component4() = collaboration
}
diff --git a/review/src/test/kotlin/br/all/application/report/find/AuthorNetworkServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/AuthorNetworkServiceImplTest.kt
index 95617ff0a..196b9cf6a 100644
--- a/review/src/test/kotlin/br/all/application/report/find/AuthorNetworkServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/AuthorNetworkServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.report.find.presenter.AuthorNetworkPresenter
import br.all.application.report.find.service.AuthorNetworkService
import br.all.application.report.find.service.AuthorNetworkService.Edge
@@ -40,9 +39,6 @@ class AuthorNetworkServiceImplTest {
@MockK
lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
lateinit var sut: AuthorNetworkServiceImpl
@@ -58,10 +54,8 @@ class AuthorNetworkServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
}
@@ -169,7 +163,7 @@ class AuthorNetworkServiceImplTest {
sut.findAuthors(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertTrue { presenter.isDone() }
}
@@ -189,7 +183,7 @@ class AuthorNetworkServiceImplTest {
sut.findAuthors(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertTrue { presenter.isDone() }
}
diff --git a/review/src/test/kotlin/br/all/application/report/find/ExportProtocolServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/ExportProtocolServiceImplTest.kt
index 54d83f0ec..23ea0a94a 100644
--- a/review/src/test/kotlin/br/all/application/report/find/ExportProtocolServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/ExportProtocolServiceImplTest.kt
@@ -1,12 +1,11 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.report.find.presenter.ExportProtocolPresenter
import br.all.application.report.find.service.ExportProtocolService
import br.all.application.report.find.service.ExportProtocolServiceImpl
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.protocol.util.TestDataFactory as ProtocolDtoFactory
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
@@ -38,9 +37,6 @@ class ExportProtocolServiceImplTest {
@MockK
private lateinit var formatterFactoryService: FormatterFactoryService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxUnitFun = true)
private lateinit var presenter: ExportProtocolPresenter
@@ -64,10 +60,8 @@ class ExportProtocolServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- factory.collaboration
+ systematicStudyId
)
precondition.makeEverythingWork()
}
diff --git a/review/src/test/kotlin/br/all/application/report/find/FindAnswerServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/FindAnswerServiceImplTest.kt
index 257d5412c..51aacd7fa 100644
--- a/review/src/test/kotlin/br/all/application/report/find/FindAnswerServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/FindAnswerServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.repository.QuestionRepository
import br.all.application.report.find.presenter.FindAnswerPresenter
import br.all.application.report.find.service.FindAnswerService
@@ -44,9 +43,6 @@ class FindAnswerServiceImplTest {
@MockK(relaxUnitFun = true)
private lateinit var presenter: FindAnswerPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
private lateinit var sut: FindAnswerServiceImpl
@@ -71,10 +67,8 @@ class FindAnswerServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
}
diff --git a/review/src/test/kotlin/br/all/application/report/find/FindCriteriaServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/FindCriteriaServiceImplTest.kt
index 4ca1a8de0..1e80d12f2 100644
--- a/review/src/test/kotlin/br/all/application/report/find/FindCriteriaServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/FindCriteriaServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.CriterionDto
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.report.find.presenter.FindCriteriaPresenter
@@ -43,9 +42,6 @@ class FindCriteriaServiceImplTest {
@MockK(relaxUnitFun = true)
private lateinit var studyReviewRepository: StudyReviewRepository
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxUnitFun = true)
private lateinit var presenter: FindCriteriaPresenter
@@ -73,10 +69,8 @@ class FindCriteriaServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
}
diff --git a/review/src/test/kotlin/br/all/application/report/find/FindKeywordsServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/FindKeywordsServiceImplTest.kt
index b065bf70c..9486dccad 100644
--- a/review/src/test/kotlin/br/all/application/report/find/FindKeywordsServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/FindKeywordsServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.report.find.presenter.FindKeywordsPresenter
import br.all.application.report.find.service.FindKeywordsService
import br.all.application.report.find.service.FindKeywordsServiceImpl
@@ -39,9 +38,6 @@ class FindKeywordsServiceImplTest {
@MockK(relaxUnitFun = true)
private lateinit var presenter: FindKeywordsPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
private lateinit var sut: FindKeywordsServiceImpl
@@ -62,10 +58,8 @@ class FindKeywordsServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
}
diff --git a/review/src/test/kotlin/br/all/application/report/find/FindSourceServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/FindSourceServiceImplTest.kt
index e573f0d47..fba84f71a 100644
--- a/review/src/test/kotlin/br/all/application/report/find/FindSourceServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/FindSourceServiceImplTest.kt
@@ -1,12 +1,11 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.report.find.presenter.FindSourcePresenter
import br.all.application.report.find.service.FindSourceService
import br.all.application.report.find.service.FindSourceServiceImpl
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
@@ -42,9 +41,6 @@ class FindSourceServiceImplTest {
@MockK
private lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxUnitFun = true)
private lateinit var presenter: FindSourcePresenter
@@ -70,10 +66,8 @@ class FindSourceServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
diff --git a/review/src/test/kotlin/br/all/application/report/find/FindStudiesByStageServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/FindStudiesByStageServiceImplTest.kt
index 5fcece208..3399013b5 100644
--- a/review/src/test/kotlin/br/all/application/report/find/FindStudiesByStageServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/FindStudiesByStageServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.report.find.presenter.FindStudiesByStagePresenter
import br.all.application.report.find.service.FindStudiesByStageService.RequestModel
import br.all.application.report.find.service.FindStudiesByStageService.ResponseModel
@@ -39,9 +38,6 @@ class FindStudiesByStageServiceImplTest {
@MockK(relaxUnitFun = true)
lateinit var studyReviewRepository: StudyReviewRepository
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK
lateinit var credentialsService: CredentialsService
@@ -60,10 +56,8 @@ class FindStudiesByStageServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
}
@@ -198,7 +192,7 @@ class FindStudiesByStageServiceImplTest {
sut.findStudiesByStage(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertTrue { presenter.isDone() }
}
@@ -216,7 +210,7 @@ class FindStudiesByStageServiceImplTest {
sut.findStudiesByStage(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertTrue { presenter.isDone() }
}
diff --git a/review/src/test/kotlin/br/all/application/report/find/IncludedStudiesAnswersServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/IncludedStudiesAnswersServiceImplTest.kt
index e15093165..5b0c265cc 100644
--- a/review/src/test/kotlin/br/all/application/report/find/IncludedStudiesAnswersServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/IncludedStudiesAnswersServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.repository.QuestionDto
import br.all.application.question.repository.QuestionRepository
import br.all.application.report.find.presenter.IncludedStudiesAnswersPresenter
@@ -12,7 +11,7 @@ import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import br.all.application.report.find.service.IncludedStudiesAnswersService.RequestModel
import br.all.application.report.util.TestDataFactory
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.domain.model.question.QuestionContextEnum
import io.mockk.every
@@ -47,9 +46,6 @@ class IncludedStudiesAnswersServiceImplTest {
@MockK
lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
lateinit var sut: IncludedStudiesAnswersServiceImpl
@@ -75,10 +71,8 @@ class IncludedStudiesAnswersServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
@@ -107,6 +101,7 @@ class IncludedStudiesAnswersServiceImplTest {
when (secondArg()) {
QuestionContextEnum.ROB -> listOf(question1)
QuestionContextEnum.EXTRACTION -> listOf(question2)
+ else -> emptyList()
}
}
@@ -151,6 +146,7 @@ class IncludedStudiesAnswersServiceImplTest {
when (secondArg()) {
QuestionContextEnum.ROB -> robQuestions
QuestionContextEnum.EXTRACTION -> extractionQuestions
+ else -> emptyList()
}
}
@@ -194,6 +190,7 @@ class IncludedStudiesAnswersServiceImplTest {
when (secondArg()) {
QuestionContextEnum.ROB -> robQuestions
QuestionContextEnum.EXTRACTION -> extractionQuestions
+ else -> emptyList()
}
}
@@ -227,6 +224,7 @@ class IncludedStudiesAnswersServiceImplTest {
when (secondArg()) {
QuestionContextEnum.ROB -> robQuestions
QuestionContextEnum.EXTRACTION -> extractionQuestions
+ else -> emptyList()
}
}
@@ -269,6 +267,7 @@ class IncludedStudiesAnswersServiceImplTest {
when (secondArg()) {
QuestionContextEnum.ROB -> robQuestions
QuestionContextEnum.EXTRACTION -> extractionQuestions
+ else -> emptyList()
}
}
@@ -281,7 +280,7 @@ class IncludedStudiesAnswersServiceImplTest {
sut.findAnswers(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertEquals(true, presenter.isDone())
@@ -309,6 +308,7 @@ class IncludedStudiesAnswersServiceImplTest {
when (secondArg()) {
QuestionContextEnum.ROB -> listOf(question1)
QuestionContextEnum.EXTRACTION -> listOf(question2)
+ else -> emptyList()
}
}
@@ -317,7 +317,7 @@ class IncludedStudiesAnswersServiceImplTest {
sut.findAnswers(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertEquals(true, presenter.isDone())
diff --git a/review/src/test/kotlin/br/all/application/report/find/StudiesFunnelServiceImplTest.kt b/review/src/test/kotlin/br/all/application/report/find/StudiesFunnelServiceImplTest.kt
index 310899e8d..4bdc31f3a 100644
--- a/review/src/test/kotlin/br/all/application/report/find/StudiesFunnelServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/report/find/StudiesFunnelServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.report.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.report.find.presenter.StudiesFunnelPresenter
import br.all.application.report.find.service.StudiesFunnelService
import br.all.application.report.find.service.StudiesFunnelServiceImpl
@@ -40,9 +39,6 @@ class StudiesFunnelServiceImplTest {
@MockK
lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
lateinit var sut: StudiesFunnelServiceImpl
@@ -58,10 +54,8 @@ class StudiesFunnelServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
researcherId,
- systematicStudyId,
- UUID.randomUUID()
+ systematicStudyId
)
precondition.makeEverythingWork()
}
@@ -197,7 +191,7 @@ class StudiesFunnelServiceImplTest {
sut.studiesFunnel(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertTrue { presenter.isDone() }
}
@@ -217,7 +211,7 @@ class StudiesFunnelServiceImplTest {
sut.studiesFunnel(presenter, request)
verify(exactly = 1) {
- presenter.prepareIfFailsPreconditions(any(), any(), any(), any())
+ presenter.prepareIfFailsPreconditions(any(), any())
}
assertTrue { presenter.isDone() }
}
diff --git a/review/src/test/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImplTest.kt b/review/src/test/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImplTest.kt
index d37450856..7e4b6ac44 100644
--- a/review/src/test/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/review/create/CreateSystematicStudyServiceImplTest.kt
@@ -1,11 +1,10 @@
package br.all.application.review.create
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.util.TestDataFactory
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import br.all.domain.services.UuidGeneratorService
@@ -17,7 +16,6 @@ import io.mockk.verify
import io.mockk.verifyOrder
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -31,8 +29,6 @@ class CreateSystematicStudyServiceImplTest {
private lateinit var uuidGeneratorService: UuidGeneratorService
@MockK
private lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
@MockK(relaxed = true)
private lateinit var presenter: CreateSystematicStudyPresenter
@InjectMockKs
@@ -48,13 +44,9 @@ class CreateSystematicStudyServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
factory.researcher,
- factory.systematicStudy,
- UUID.randomUUID(),
+ factory.systematicStudy
)
-
- every { collaborationRepository.saveOrUpdateCollaboration(any()) } returns Unit
}
@Nested
@@ -66,6 +58,7 @@ class CreateSystematicStudyServiceImplTest {
val (_, systematicStudy) = factory
val request = factory.createRequestModel()
val response = factory.createResponseModel()
+ val dto = factory.dtoFromCreateRequest(request)
val protocolDto = factory.protocolDto()
preconditionCheckerMocking.makeEverythingWork()
@@ -74,7 +67,8 @@ class CreateSystematicStudyServiceImplTest {
sut.create(presenter, request)
verify(exactly = 1) {
- systematicStudyRepository.saveOrUpdate(any())
+ uuidGeneratorService.next()
+ systematicStudyRepository.saveOrUpdate(dto)
protocolRepository.saveOrUpdate(protocolDto)
presenter.prepareSuccessView(response)
}
diff --git a/review/src/test/kotlin/br/all/application/review/find/services/FindAllSystematicStudiesServiceImplTest.kt b/review/src/test/kotlin/br/all/application/review/find/services/FindAllSystematicStudiesServiceImplTest.kt
index d274582ef..ab2d61ff9 100644
--- a/review/src/test/kotlin/br/all/application/review/find/services/FindAllSystematicStudiesServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/review/find/services/FindAllSystematicStudiesServiceImplTest.kt
@@ -1,11 +1,10 @@
package br.all.application.review.find.services
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.find.presenter.FindAllSystematicStudyPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.util.TestDataFactory
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -16,7 +15,6 @@ import io.mockk.verify
import io.mockk.verifyOrder
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -28,8 +26,6 @@ class FindAllSystematicStudiesServiceImplTest {
private lateinit var credentialsService: CredentialsService
@MockK(relaxed = true)
private lateinit var presenter: FindAllSystematicStudyPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
@InjectMockKs
private lateinit var sut: FindAllSystematicStudiesServiceImpl
@@ -43,10 +39,8 @@ class FindAllSystematicStudiesServiceImplTest {
presenter,
credentialsService,
repository,
- collaborationRepository,
factory.researcher,
factory.systematicStudy,
- UUID.randomUUID(),
)
}
diff --git a/review/src/test/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImplTest.kt b/review/src/test/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImplTest.kt
index 9ec3ed37f..edf0046aa 100644
--- a/review/src/test/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/review/find/services/FindSystematicStudyServiceImplTest.kt
@@ -1,12 +1,11 @@
package br.all.application.review.find.services
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.find.presenter.FindSystematicStudyPresenter
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.util.TestDataFactory
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -17,7 +16,6 @@ import io.mockk.verify
import io.mockk.verifyOrder
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -29,8 +27,6 @@ class FindSystematicStudyServiceImplTest {
private lateinit var credentialsService: CredentialsService
@MockK(relaxed = true)
private lateinit var presenter: FindSystematicStudyPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
@InjectMockKs
private lateinit var sut: FindSystematicStudyServiceImpl
@@ -44,10 +40,8 @@ class FindSystematicStudyServiceImplTest {
presenter,
credentialsService,
repository,
- collaborationRepository,
factory.researcher,
factory.systematicStudy,
- UUID.randomUUID(),
)
}
diff --git a/review/src/test/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImplTest.kt b/review/src/test/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImplTest.kt
index 2f77f6ab0..e7dbf1944 100644
--- a/review/src/test/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/review/update/services/UpdateSystematicStudyServiceImplTest.kt
@@ -1,13 +1,12 @@
package br.all.application.review.update.services
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyDto
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.review.update.presenter.UpdateSystematicStudyPresenter
import br.all.application.review.util.TestDataFactory
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -18,7 +17,6 @@ import io.mockk.verify
import io.mockk.verifyOrder
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -30,8 +28,6 @@ class UpdateSystematicStudyServiceImplTest {
private lateinit var credentialsService: CredentialsService
@MockK(relaxed = true)
private lateinit var presenter: UpdateSystematicStudyPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
@InjectMockKs
private lateinit var sut: UpdateSystematicStudyServiceImpl
@@ -45,10 +41,8 @@ class UpdateSystematicStudyServiceImplTest {
presenter,
credentialsService,
repository,
- collaborationRepository,
factory.researcher,
factory.systematicStudy,
- UUID.randomUUID(),
)
}
diff --git a/review/src/test/kotlin/br/all/application/review/util/TestDataFactory.kt b/review/src/test/kotlin/br/all/application/review/util/TestDataFactory.kt
index 61039c7cf..fd03b3921 100644
--- a/review/src/test/kotlin/br/all/application/review/util/TestDataFactory.kt
+++ b/review/src/test/kotlin/br/all/application/review/util/TestDataFactory.kt
@@ -6,7 +6,6 @@ import br.all.application.review.repository.SystematicStudyDto
import br.all.application.review.repository.fromRequestModel
import br.all.application.review.repository.toDto
import br.all.application.review.update.services.UpdateSystematicStudyService.ResponseModel
-import br.all.domain.model.collaboration.CollaborationId
import br.all.domain.model.protocol.Protocol
import br.all.domain.model.review.SystematicStudy
import br.all.domain.model.review.toSystematicStudyId
@@ -47,14 +46,20 @@ class TestDataFactory {
fun createRequestModel(
researcherId: UUID = researcher,
title: String = faker.book.title(),
- description: String = faker.lorem.words()
- ) = CreateRequestModel(researcherId, title, description)
+ description: String = faker.lorem.words(),
+ collaborators: Set = emptySet()
+ ) = CreateRequestModel(researcherId, title, description, collaborators)
fun createResponseModel(
researcherId: UUID = researcher,
systematicStudyId: UUID = systematicStudy,
) = CreateResponseModel(researcherId, systematicStudyId)
+ fun dtoFromCreateRequest(
+ request: CreateRequestModel,
+ systematicStudyId: UUID = systematicStudy,
+ ) = SystematicStudy.fromRequestModel(systematicStudyId, request).toDto()
+
fun findOneRequestModel(
researcherId: UUID = researcher,
systematicStudyId: UUID = systematicStudy,
diff --git a/review/src/test/kotlin/br/all/application/search/create/CreateSearchSessionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/search/create/CreateSearchSessionServiceImplTest.kt
index e6b18ed3c..4b3511aab 100644
--- a/review/src/test/kotlin/br/all/application/search/create/CreateSearchSessionServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/search/create/CreateSearchSessionServiceImplTest.kt
@@ -1,13 +1,12 @@
package br.all.application.search.create
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.search.util.TestDataFactory
import br.all.application.search.repository.SearchSessionRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
@@ -25,7 +24,6 @@ import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
import kotlin.test.Test
@Tag("UnitTest")
@@ -60,9 +58,6 @@ class CreateSearchSessionServiceImplTest {
@MockK
private lateinit var reviewSimilarityService: ReviewSimilarityService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxed = true)
private lateinit var presenter: CreateSearchSessionPresenter
@@ -82,18 +77,15 @@ class CreateSearchSessionServiceImplTest {
studyReviewRepository,
credentialsService,
scoreCalculatorService,
- reviewSimilarityService,
- collaborationRepository,
+ reviewSimilarityService
)
testDataFactory = TestDataFactory()
preconditionCheckerMocking = PreconditionCheckerMockingNew(
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
testDataFactory.userId,
testDataFactory.systematicStudyId,
- UUID.randomUUID()
)
}
diff --git a/review/src/test/kotlin/br/all/application/search/delete/DeleteSearchSessionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/search/delete/DeleteSearchSessionServiceImplTest.kt
deleted file mode 100644
index 4a839031c..000000000
--- a/review/src/test/kotlin/br/all/application/search/delete/DeleteSearchSessionServiceImplTest.kt
+++ /dev/null
@@ -1,145 +0,0 @@
-@file:Suppress("ktlint:standard:no-wildcard-imports")
-
-package br.all.application.search.delete
-
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.search.repository.SearchSessionRepository
-import br.all.application.search.util.TestDataFactory
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
-import br.all.application.user.CredentialsService
-import br.all.application.util.PreconditionCheckerMockingNew
-import io.mockk.*
-import io.mockk.impl.annotations.InjectMockKs
-import io.mockk.impl.annotations.MockK
-import io.mockk.junit5.MockKExtension
-import org.junit.jupiter.api.BeforeEach
-import org.junit.jupiter.api.DisplayName
-import org.junit.jupiter.api.Nested
-import org.junit.jupiter.api.Test
-import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
-
-@ExtendWith(MockKExtension::class)
-class DeleteSearchSessionServiceImplTest {
- @MockK(relaxUnitFun = true)
- private lateinit var systematicStudyRepository: SystematicStudyRepository
-
- @MockK(relaxUnitFun = true)
- private lateinit var searchSessionRepository: SearchSessionRepository
-
- @MockK(relaxed = true)
- private lateinit var presenter: DeleteSearchSessionPresenter
-
- @MockK
- private lateinit var credentialService: CredentialsService
-
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
- @InjectMockKs
- private lateinit var sut: DeleteSearchSessionServiceImpl
-
- private lateinit var factory: TestDataFactory
- private lateinit var preconditionCheckerMocking: PreconditionCheckerMockingNew
-
- @BeforeEach
- fun setUp() {
- factory = TestDataFactory()
- preconditionCheckerMocking =
- PreconditionCheckerMockingNew(
- presenter,
- credentialService,
- systematicStudyRepository,
- collaborationRepository,
- factory.userId,
- factory.systematicStudyId,
- UUID.randomUUID()
- )
- }
-
- @Nested
- @DisplayName("When successfully deleting search session")
- inner class WhenSuccessfullyDeletingSearchSession {
- @BeforeEach
- fun setUp() {
- preconditionCheckerMocking.makeEverythingWork()
- }
-
- @Test
- fun `should successfully delete search session`() {
- val request = factory.deleteRequestModel()
- val response = factory.deleteResponseModel()
-
- every { searchSessionRepository.findById(factory.searchSessionId) } returns factory.generateDto()
- every { searchSessionRepository.deleteById(factory.searchSessionId) } just Runs
-
- sut.delete(presenter, request)
-
- verify {
- searchSessionRepository.deleteById(factory.searchSessionId)
- presenter.prepareSuccessView(response)
- }
- }
- }
-
- @Nested
- @DisplayName("When unable to delete search session")
- inner class WhenUnableToDeleteSearchSession {
- @Test
- fun `should fail with EntityNotFoundException when session does not exist`() {
- val request = factory.deleteRequestModel()
-
- preconditionCheckerMocking.makeEverythingWork()
- every { searchSessionRepository.findById(factory.searchSessionId) } returns null
-
- sut.delete(presenter, request)
-
- verify {
- presenter.prepareFailView(any())
- presenter.isDone()
- }
- }
-
- @Test
- fun `should the researcher be unauthorized if they are not a collaborator`() {
- val request = factory.deleteRequestModel()
-
- preconditionCheckerMocking.makeUserUnauthorized()
- sut.delete(presenter, request)
-
- verifyOrder {
- presenter.prepareFailView(any())
- presenter.isDone()
- }
- }
-
- @Test
- fun `should prepare fail view if the researcher is unauthenticated`() {
- val request = factory.deleteRequestModel()
-
- preconditionCheckerMocking.makeUserUnauthenticated()
- sut.delete(presenter, request)
-
- verifyOrder {
- presenter.prepareFailView(any())
- presenter.isDone()
- }
- }
-
- @Test
- fun `should prepare fail view if the researcher is unauthorized`() {
- val request = factory.deleteRequestModel()
-
- preconditionCheckerMocking.makeUserUnauthorized()
- sut.delete(presenter, request)
-
- verifyOrder {
- presenter.prepareFailView(any())
- presenter.isDone()
- }
- }
- }
-}
diff --git a/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsBySourceServiceImplTest.kt b/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsBySourceServiceImplTest.kt
index 380fd7b27..ca198e87a 100644
--- a/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsBySourceServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsBySourceServiceImplTest.kt
@@ -1,14 +1,13 @@
package br.all.application.search.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.search.find.presenter.FindAllSearchSessionsBySourcePresenter
import br.all.application.search.find.service.FindAllSearchSessionsBySourceService
import br.all.application.search.find.service.FindAllSearchSessionsBySourceServiceImpl
import br.all.application.search.repository.SearchSessionRepository
import br.all.application.search.util.TestDataFactory
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -21,7 +20,6 @@ import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -37,9 +35,6 @@ class FindAllSearchSessionsBySourceServiceImplTest {
@MockK
private lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxed = true)
private lateinit var presenter: FindAllSearchSessionsBySourcePresenter
@@ -54,10 +49,8 @@ class FindAllSearchSessionsBySourceServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
factory.userId,
factory.systematicStudyId,
- UUID.randomUUID()
)
}
@@ -69,8 +62,7 @@ class FindAllSearchSessionsBySourceServiceImplTest {
sut = FindAllSearchSessionsBySourceServiceImpl(
systematicStudyRepository,
searchSessionRepository,
- credentialsService,
- collaborationRepository,
+ credentialsService
)
run { preconditionCheckerMocking.makeEverythingWork() }
}
@@ -105,8 +97,7 @@ class FindAllSearchSessionsBySourceServiceImplTest {
sut = FindAllSearchSessionsBySourceServiceImpl(
systematicStudyRepository,
searchSessionRepository,
- credentialsService,
- collaborationRepository,
+ credentialsService
)
}
@Test
diff --git a/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsServiceImplTest.kt b/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsServiceImplTest.kt
index fb67a5bfe..be7c474b1 100644
--- a/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/search/find/FindAllSearchSessionsServiceImplTest.kt
@@ -1,13 +1,12 @@
package br.all.application.search.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.search.find.presenter.FindAllSearchSessionsPresenter
import br.all.application.search.find.service.FindAllSearchSessionsServiceImpl
import br.all.application.search.repository.SearchSessionRepository
import br.all.application.search.util.TestDataFactory
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -20,7 +19,6 @@ import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -36,9 +34,6 @@ class FindAllSearchSessionsServiceImplTest {
@MockK
private lateinit var credentialService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxed = true)
private lateinit var presenter: FindAllSearchSessionsPresenter
@@ -53,10 +48,8 @@ class FindAllSearchSessionsServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.userId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
}
@@ -68,8 +61,7 @@ class FindAllSearchSessionsServiceImplTest {
sut = FindAllSearchSessionsServiceImpl(
systematicStudyRepository,
searchSessionRepository,
- credentialService,
- collaborationRepository,
+ credentialService
)
run { preconditionCheckerMocking.makeEverythingWork() }
}
@@ -100,8 +92,7 @@ class FindAllSearchSessionsServiceImplTest {
sut = FindAllSearchSessionsServiceImpl(
systematicStudyRepository,
searchSessionRepository,
- credentialService,
- collaborationRepository,
+ credentialService
)
}
@Test
diff --git a/review/src/test/kotlin/br/all/application/search/find/FindSearchSessionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/search/find/FindSearchSessionServiceImplTest.kt
index 5ebadabb0..491dd62a6 100644
--- a/review/src/test/kotlin/br/all/application/search/find/FindSearchSessionServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/search/find/FindSearchSessionServiceImplTest.kt
@@ -1,14 +1,13 @@
package br.all.application.search.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.search.find.presenter.FindSearchSessionPresenter
import br.all.application.search.find.service.FindSearchSessionServiceImpl
import br.all.application.search.repository.SearchSessionRepository
import br.all.application.search.util.TestDataFactory
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.every
@@ -21,7 +20,6 @@ import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -36,9 +34,6 @@ class FindSearchSessionServiceImplTest {
@MockK
private lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxed = true)
private lateinit var presenter: FindSearchSessionPresenter
@@ -53,10 +48,8 @@ class FindSearchSessionServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
factory.userId,
factory.systematicStudyId,
- UUID.randomUUID()
)
}
@@ -68,8 +61,7 @@ class FindSearchSessionServiceImplTest {
sut = FindSearchSessionServiceImpl(
systematicStudyRepository,
searchSessionRepository,
- credentialsService,
- collaborationRepository,
+ credentialsService
)
run { preconditionCheckerMocking.makeEverythingWork() }
}
@@ -94,8 +86,7 @@ class FindSearchSessionServiceImplTest {
sut = FindSearchSessionServiceImpl(
systematicStudyRepository,
searchSessionRepository,
- credentialsService,
- collaborationRepository,
+ credentialsService
)
}
diff --git a/review/src/test/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImplTest.kt
index 81d3043cd..7b0d6ea83 100644
--- a/review/src/test/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/search/update/UpdateSearchSessionServiceImplTest.kt
@@ -1,13 +1,12 @@
package br.all.application.search.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.search.repository.SearchSessionDto
import br.all.application.search.repository.SearchSessionRepository
import br.all.application.search.util.TestDataFactory
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
import io.mockk.*
@@ -20,7 +19,6 @@ import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -38,10 +36,6 @@ class UpdateSearchSessionServiceImplTest {
@MockK(relaxed = true)
private lateinit var presenter: UpdateSearchSessionPresenter
-
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@InjectMockKs
private lateinit var sut: UpdateSearchSessionServiceImpl
@@ -55,10 +49,8 @@ class UpdateSearchSessionServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.userId,
factory.systematicStudyId,
- UUID.randomUUID()
)
}
diff --git a/review/src/test/kotlin/br/all/application/search/util/TestDataFactory.kt b/review/src/test/kotlin/br/all/application/search/util/TestDataFactory.kt
index 3053801d0..1bb4debdb 100644
--- a/review/src/test/kotlin/br/all/application/search/util/TestDataFactory.kt
+++ b/review/src/test/kotlin/br/all/application/search/util/TestDataFactory.kt
@@ -3,7 +3,6 @@ package br.all.application.search.util
import br.all.application.protocol.repository.CriterionDto
import br.all.application.protocol.repository.PicocDto
import br.all.application.protocol.repository.ProtocolDto
-import br.all.application.search.delete.DeleteSearchSessionService
import br.all.application.search.find.service.FindAllSearchSessionsBySourceService
import br.all.application.search.find.service.FindAllSearchSessionsService
import br.all.application.search.find.service.FindSearchSessionService
@@ -11,7 +10,7 @@ import br.all.application.search.repository.SearchSessionDto
import br.all.application.search.update.UpdateSearchSessionService
import br.all.application.search.update.UpdateSearchSessionService.RequestModel
import br.all.domain.model.protocol.SearchSource
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.model.review.SystematicStudyId
import br.all.domain.model.search.SearchSession
import br.all.domain.model.search.SearchSessionID
@@ -65,26 +64,6 @@ class TestDataFactory {
invalidEntries: List = emptyList()
) = CreateResponseModel(userId, systematicStudyId, sessionId, invalidEntries)
- fun deleteRequestModel(
- userId: UUID = this.userId,
- systematicStudyId: UUID = this.systematicStudyId,
- sessionId: UUID = this.searchSessionId,
- ) = DeleteSearchSessionService.RequestModel(
- userId,
- systematicStudyId,
- sessionId,
- )
-
- fun deleteResponseModel(
- userId: UUID = this.userId,
- systematicStudyId: UUID = this.systematicStudyId,
- sessionId: UUID = this.searchSessionId,
- ) = DeleteSearchSessionService.ResponseModel(
- userId,
- systematicStudyId,
- sessionId,
- )
-
fun findOneRequestModel(
userId: UUID = this.userId,
systematicStudyId: UUID = this.systematicStudyId,
diff --git a/review/src/test/kotlin/br/all/application/shared/presenter/PreconditionCheckerTest.kt b/review/src/test/kotlin/br/all/application/shared/presenter/PreconditionCheckerTest.kt
index c69609d0a..3ec130153 100644
--- a/review/src/test/kotlin/br/all/application/shared/presenter/PreconditionCheckerTest.kt
+++ b/review/src/test/kotlin/br/all/application/shared/presenter/PreconditionCheckerTest.kt
@@ -2,11 +2,12 @@ package br.all.application.shared.presenter
import br.all.application.user.credentials.ResearcherCredentialsService
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.model.review.SystematicStudyId
+import br.all.domain.shared.presenter.GenericPresenter
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
diff --git a/review/src/test/kotlin/br/all/application/study/create/CreateStudyReviewServiceImplTest.kt b/review/src/test/kotlin/br/all/application/study/create/CreateStudyReviewServiceImplTest.kt
index 8690f0787..c4d2934f3 100644
--- a/review/src/test/kotlin/br/all/application/study/create/CreateStudyReviewServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/create/CreateStudyReviewServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.study.create
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.util.TestDataFactory
@@ -12,8 +11,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
-
@Tag("UnitTest")
@Tag("ServiceTest")
@ExtendWith(MockKExtension::class)
@@ -27,8 +24,6 @@ class CreateStudyReviewServiceImplTest {
private lateinit var idGenerator: IdGeneratorService
@MockK
private lateinit var credentialService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
@MockK(relaxUnitFun = true)
private lateinit var presenter: CreateStudyReviewPresenter
@@ -44,17 +39,14 @@ class CreateStudyReviewServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = CreateStudyReviewServiceImpl(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- idGenerator,
- collaborationRepository,
+ idGenerator
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsBySourceServiceImplTest.kt b/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsBySourceServiceImplTest.kt
index 11a78a184..5bb7dda53 100644
--- a/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsBySourceServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsBySourceServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.study.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.study.find.presenter.FindAllStudyReviewsBySourcePresenter
import br.all.application.study.find.service.FindAllStudyReviewsBySourceServiceImpl
@@ -13,7 +12,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -28,8 +26,6 @@ class FindAllStudyReviewsBySourceServiceImplTest {
private lateinit var credentialService: CredentialsService
@MockK(relaxed = true)
private lateinit var presenter: FindAllStudyReviewsBySourcePresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: FindAllStudyReviewsBySourceServiceImpl
@@ -43,16 +39,13 @@ class FindAllStudyReviewsBySourceServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = FindAllStudyReviewsBySourceServiceImpl(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository,
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsServiceImplTest.kt b/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsServiceImplTest.kt
index 97d8eda9c..45124d901 100644
--- a/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/find/FindAllStudyReviewsServiceImplTest.kt
@@ -1,9 +1,9 @@
package br.all.application.study.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.study.find.presenter.FindAllStudyReviewsPresenter
import br.all.application.study.find.service.FindAllStudyReviewsServiceImpl
+import br.all.application.study.repository.StudyReviewDto
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.util.TestDataFactory
import br.all.application.user.CredentialsService
@@ -13,7 +13,9 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
+import org.springframework.data.domain.Page
+import org.springframework.data.domain.PageImpl
+import org.springframework.data.domain.Pageable
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -28,8 +30,6 @@ class FindAllStudyReviewsServiceImplTest {
private lateinit var credentialService: CredentialsService
@MockK(relaxed = true)
private lateinit var presenter: FindAllStudyReviewsPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: FindAllStudyReviewsServiceImpl
@@ -43,16 +43,13 @@ class FindAllStudyReviewsServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = FindAllStudyReviewsServiceImpl(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository,
)
}
@@ -69,7 +66,7 @@ class FindAllStudyReviewsServiceImplTest {
preconditionCheckerMocking.makeEverythingWork()
- every { studyReviewRepository.findAllFromReview(request.systematicStudyId) } returns response.studyReviews
+ every { studyReviewRepository.findAllFromReviewPaged(request.systematicStudyId, any()) } returns PageImpl(response.studyReviews)
sut.findAllFromReview(presenter, request)
@@ -85,7 +82,7 @@ class FindAllStudyReviewsServiceImplTest {
preconditionCheckerMocking.makeEverythingWork()
- every { studyReviewRepository.findAllFromReview(request.systematicStudyId) } returns response.studyReviews
+ every { studyReviewRepository.findAllFromReviewPaged(request.systematicStudyId, any()) } returns PageImpl(response.studyReviews)
sut.findAllFromReview(presenter, request)
@@ -102,7 +99,7 @@ class FindAllStudyReviewsServiceImplTest {
val request = factory.findAllRequestModel()
preconditionCheckerMocking.makeEverythingWork()
- every {studyReviewRepository.findAllFromReview(factory.systematicStudyId)} returns emptyList()
+ every {studyReviewRepository.findAllFromReviewPaged(factory.systematicStudyId, any())} returns PageImpl(emptyList())
sut.findAllFromReview(presenter, request)
diff --git a/review/src/test/kotlin/br/all/application/study/find/FindStudyReviewServiceImplTest.kt b/review/src/test/kotlin/br/all/application/study/find/FindStudyReviewServiceImplTest.kt
index 25fa3b44d..092eeaf82 100644
--- a/review/src/test/kotlin/br/all/application/study/find/FindStudyReviewServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/find/FindStudyReviewServiceImplTest.kt
@@ -1,6 +1,5 @@
package br.all.application.study.find
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.study.find.presenter.FindStudyReviewPresenter
import br.all.application.study.find.service.FindStudyReviewServiceImpl
@@ -13,8 +12,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
-
@Tag("UnitTest")
@Tag("ServiceTest")
@ExtendWith(MockKExtension::class)
@@ -24,8 +21,6 @@ class FindStudyReviewServiceImplTest {
@MockK private lateinit var systematicStudyRepository: SystematicStudyRepository
@MockK private lateinit var credentialService: CredentialsService
@MockK(relaxed = true) private lateinit var presenter: FindStudyReviewPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: FindStudyReviewServiceImpl
@@ -39,16 +34,13 @@ class FindStudyReviewServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = FindStudyReviewServiceImpl(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository,
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/update/AnswerQuestionImplTest.kt b/review/src/test/kotlin/br/all/application/study/update/AnswerQuestionImplTest.kt
deleted file mode 100644
index cda44c8df..000000000
--- a/review/src/test/kotlin/br/all/application/study/update/AnswerQuestionImplTest.kt
+++ /dev/null
@@ -1,340 +0,0 @@
-package br.all.application.study.update
-
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.question.repository.QuestionRepository
-import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.study.repository.StudyReviewRepository
-import br.all.application.study.update.implementation.AnswerQuestionImpl
-import br.all.application.study.update.interfaces.AnswerQuestionPresenter
-import br.all.application.study.update.interfaces.AnswerQuestionService
-import br.all.application.study.util.TestDataFactory
-import br.all.application.user.CredentialsService
-import br.all.application.util.PreconditionCheckerMockingNew
-import io.mockk.*
-import io.mockk.impl.annotations.MockK
-import io.mockk.junit5.MockKExtension
-import org.junit.jupiter.api.*
-import org.junit.jupiter.api.extension.ExtendWith
-import java.util.*
-
-@Tag("UnitTest")
-@Tag("ServiceTest")
-@ExtendWith(MockKExtension::class)
-class AnswerQuestionImplTest {
-
- @MockK(relaxed = true) private lateinit var studyReviewRepository: StudyReviewRepository
- @MockK private lateinit var systematicStudyRepository: SystematicStudyRepository
- @MockK private lateinit var questionRepository: QuestionRepository
- @MockK private lateinit var credentialService: CredentialsService
- @MockK(relaxed = true) private lateinit var presenter: AnswerQuestionPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
- private lateinit var sut: AnswerQuestionService
-
- private lateinit var factory: TestDataFactory
- private lateinit var preconditionCheckerMocking: PreconditionCheckerMockingNew
-
- private lateinit var questionId: UUID
-
- @BeforeEach
- fun setUp() {
- factory = TestDataFactory()
- preconditionCheckerMocking = PreconditionCheckerMockingNew(
- presenter,
- credentialService,
- systematicStudyRepository,
- collaborationRepository,
- factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
- )
- sut = AnswerQuestionImpl(
- studyReviewRepository,
- questionRepository,
- systematicStudyRepository,
- credentialService,
- collaborationRepository,
- )
- questionId = UUID.randomUUID()
- }
-
- @Nested
- @Tag("ValidClasses")
- @DisplayName("When successfully answering a question")
- inner class WhenSuccessfullyAnsweringAQuestion {
- @Test
- fun `should successfully answer a textual question`() {
- val dto = factory.generateDto()
- val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = "ROB")
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "Answer Test")
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- sut.answerQuestion(presenter, request, context)
-
- verify(exactly = 1) {
- studyReviewRepository.saveOrUpdate(any())
- presenter.prepareSuccessView(any())
- }
- }
-
- @Test
- fun `should successfully answer a labeled scale question`() {
- val dto = factory.generateDto()
- val answer = factory.questionLabelDto("Test Name", 1)
- val questionDto = factory.generateQuestionLabeledScaleDto(questionId, labelDto = answer, questionContext = "ROB")
- val request = factory.answerQuestionModel(questionId, "LABELED_SCALE", answer)
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- sut.answerQuestion(presenter, request, context)
-
- verify(exactly = 1) {
- studyReviewRepository.saveOrUpdate(any())
- presenter.prepareSuccessView(any())
- }
- }
-
- @Test
- fun `should successfully answer a numbered scale question`() {
- val dto = factory.generateDto()
- val answer = 9
- val questionDto = factory.generateQuestionNumberedScaleDto(
- questionId, factory.systematicStudyId, higher = 10, lower = 1, questionContext = "EXTRACTION"
- )
- val request = factory.answerQuestionModel(questionId, "NUMBERED_SCALE", answer)
- val context = "EXTRACTION"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- sut.answerQuestion(presenter, request, context)
-
- verify(exactly = 1) {
- studyReviewRepository.saveOrUpdate(any())
- presenter.prepareSuccessView(any())
- }
- }
-
- @Test
- fun `should successfully answer a pick one question`() {
- val dto = factory.generateDto()
- val questionDto = factory.generateQuestionPickListDto(questionId, factory.systematicStudyId, options = listOf("op1", "op2", "op3"), questionContext = "EXTRACTION")
- val answer = "op1"
- val request = factory.answerQuestionModel(questionId, "PICK_LIST", answer)
- val context = "EXTRACTION"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- sut.answerQuestion(presenter, request, context)
-
- verify(exactly = 1) {
- studyReviewRepository.saveOrUpdate(any())
- }
- }
-
- @Test
- fun `should handle labeled scale answer as LinkedHashMap`() {
- val dto = factory.generateDto()
- val labelDto = factory.questionLabelDto("Test Name", 1)
- val questionDto = factory.generateQuestionLabeledScaleDto(
- questionId,
- factory.systematicStudyId,
- questionContext = "ROB",
- labelDto = labelDto,
- )
- val request = factory.answerQuestionModel(
- questionId,
- "LABELED_SCALE",
- mapOf("name" to "Test Name", "value" to 1)
- )
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- sut.answerQuestion(presenter, request, context)
-
- verify(exactly = 1) {
- studyReviewRepository.saveOrUpdate(any())
- presenter.prepareSuccessView(any())
- }
- }
- }
-
- @Nested
- @Tag("InvalidClasses")
- @DisplayName("When failing to answer a question")
- inner class WhenFailingToAnswerAQuestion {
- @Test
- fun `should not work if study doesn't exist`() {
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "Answer")
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns null
- sut.answerQuestion(presenter, request, context)
-
- verify {
- presenter.prepareFailView(any())
- }
- }
-
- @Test
- fun `should not work if question doesn't exist`() {
- val dto = factory.generateDto()
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "Testing")
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns null
-
- sut.answerQuestion(presenter, request, context)
-
- verify {
- presenter.prepareFailView(any())
- }
- }
-
- @Test
- fun `should not answer when unauthorized`() {
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "failure test")
- val context = "ROB"
-
- preconditionCheckerMocking.testForUnauthenticatedUser(presenter, request) { _, _ ->
- sut.answerQuestion(presenter, request, context)
- }
- }
-
- @Test
- fun `should not answer when unauthenticated`() {
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "nono")
- val context = "ROB"
-
- preconditionCheckerMocking.testForUnauthenticatedUser(presenter, request) { _, _ ->
- sut.answerQuestion(presenter, request, context)
- }
- }
-
- @Test
- fun `should not answer when systematic study does not exist`() {
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "not real")
- val context = "ROB"
-
- preconditionCheckerMocking.testForNonexistentSystematicStudy(presenter, request) { _, _ ->
- sut.answerQuestion(presenter, request, context)
- }
- }
-
- @Test
- fun `should not answer question of diferent context`() {
- val dto = factory.generateDto()
- val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = "ROB")
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "Answer Test")
- val context = "EXTRACTION"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- sut.answerQuestion(presenter, request, context)
-
- verify {
- presenter.prepareFailView(any())
- }
- }
-
- @Test
- fun `should not answer question with null context`() {
- val dto = factory.generateDto()
- val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = "ROB")
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", "Answer Test")
- val context = null
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- sut.answerQuestion(presenter, request, context)
-
- verify {
- presenter.prepareFailView(any())
- }
- }
-
- @Test
- fun `should not answer question with conflicting types`() {
- val dto = factory.generateDto()
- val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = "ROB")
- val request = factory.answerQuestionModel(questionId, "PICK_LIST", "Answer Test")
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- assertThrows {
- sut.answerQuestion(presenter, request, context)
- }
- }
-
- @Test
- fun `should not answer labeled scale if answer is of unsupported type`() {
- val dto = factory.generateDto()
- val labelDto = factory.questionLabelDto("Test Name", 1)
- val questionDto = factory.generateQuestionLabeledScaleDto(questionId, labelDto = labelDto, questionContext = "ROB")
- val answer = "wrong answer"
- val request = factory.answerQuestionModel(questionId, "LABELED_SCALE", answer)
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
-
- assertThrows {
- sut.answerQuestion(presenter, request, context)
- }
- }
-
- @Test
- fun `should not answer question if answer if of unsupported type`() {
- val dto = factory.generateDto()
- val questionDto =
- factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = "ROB")
- val request = factory.answerQuestionModel(questionId, "TEXTUAL", 1)
- val context = "ROB"
-
- preconditionCheckerMocking.makeEverythingWork()
-
- every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns dto
- every { questionRepository.findById(request.systematicStudyId, questionId) } returns questionDto
- assertThrows {
- sut.answerQuestion(presenter, request, context)
- }
- }
- }
-}
diff --git a/review/src/test/kotlin/br/all/application/study/update/BatchAnswerQuestionServiceImplTest.kt b/review/src/test/kotlin/br/all/application/study/update/BatchAnswerQuestionServiceImplTest.kt
index 724c42018..c32915128 100644
--- a/review/src/test/kotlin/br/all/application/study/update/BatchAnswerQuestionServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/update/BatchAnswerQuestionServiceImplTest.kt
@@ -1,12 +1,11 @@
package br.all.application.study.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.repository.QuestionRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.update.implementation.BatchAnswerQuestionServiceImpl
-import br.all.application.study.update.interfaces.AnswerQuestionService
import br.all.application.study.update.interfaces.BatchAnswerQuestionPresenter
+import br.all.application.study.update.interfaces.BatchAnswerQuestionService
import br.all.application.study.util.TestDataFactory
import br.all.application.user.CredentialsService
import br.all.application.util.PreconditionCheckerMockingNew
@@ -18,9 +17,9 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Tag
+import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import java.util.UUID
-import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
@@ -41,16 +40,12 @@ class BatchAnswerQuestionServiceImplTest {
@MockK
private lateinit var credentialsService: CredentialsService
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
-
@MockK(relaxed = true)
private lateinit var presenter: BatchAnswerQuestionPresenter
private lateinit var sut: BatchAnswerQuestionServiceImpl
private lateinit var factory: TestDataFactory
private lateinit var preconditionCheckerMocking: PreconditionCheckerMockingNew
- private lateinit var questionId: UUID
@BeforeEach
fun setUp() {
@@ -59,19 +54,15 @@ class BatchAnswerQuestionServiceImplTest {
presenter,
credentialsService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = BatchAnswerQuestionServiceImpl(
studyReviewRepository,
questionRepository,
systematicStudyRepository,
- credentialsService,
- collaborationRepository,
+ credentialsService
)
- questionId = UUID.randomUUID()
}
@Nested
@@ -81,18 +72,17 @@ class BatchAnswerQuestionServiceImplTest {
@Test
fun `should successfully answer multiple questions of different types`() {
val reviewDto = factory.generateDto()
- val context = "EXTRACTION"
val textualQId = UUID.randomUUID()
- val textualQDto = factory.generateQuestionTextualDto(textualQId, factory.systematicStudyId, questionContext = context)
+ val textualQDto = factory.generateQuestionTextualDto(textualQId, factory.systematicStudyId, questionContext = "EXTRACTION")
val textualAnswer = factory.answerDetail(questionId = textualQId, type = "TEXTUAL", answer = "Valid textual answer")
val numberedQId = UUID.randomUUID()
- val numberedQDto = factory.generateQuestionNumberedScaleDto(numberedQId, factory.systematicStudyId, questionContext = context, higher = 5, lower = 1)
+ val numberedQDto = factory.generateQuestionNumberedScaleDto(numberedQId, factory.systematicStudyId, higher = 5, lower = 1, questionContext = "EXTRACTION")
val numberedAnswer = factory.answerDetail(questionId = numberedQId, type = "NUMBERED_SCALE", answer = 5)
val pickListQId = UUID.randomUUID()
- val pickListQDto = factory.generateQuestionPickListDto(pickListQId, factory.systematicStudyId, options = listOf("A", "B"), questionContext = context)
+ val pickListQDto = factory.generateQuestionPickListDto(pickListQId, factory.systematicStudyId, options = listOf("A", "B"), questionContext = "EXTRACTION")
val pickListAnswer = factory.answerDetail(questionId = pickListQId, type = "PICK_LIST", answer = "A")
val request = factory.batchAnswerRequest(listOf(textualAnswer, numberedAnswer, pickListAnswer))
@@ -104,7 +94,7 @@ class BatchAnswerQuestionServiceImplTest {
every { questionRepository.findById(request.systematicStudyId, numberedQId) } returns numberedQDto
every { questionRepository.findById(request.systematicStudyId, pickListQId) } returns pickListQDto
- sut.batchAnswerQuestion(presenter, request, context)
+ sut.batchAnswerQuestion(presenter, request)
verify(exactly = 1) { studyReviewRepository.saveOrUpdate(any()) }
verify(exactly = 1) {
@@ -120,39 +110,67 @@ class BatchAnswerQuestionServiceImplTest {
@Test
fun `should handle a mix of successful and failed answers`() {
val reviewDto = factory.generateDto()
- val context = "ROB"
val successQId = UUID.randomUUID()
- val successQDto = factory.generateQuestionTextualDto(successQId, factory.systematicStudyId, questionContext = context)
+ val successQDto = factory.generateQuestionTextualDto(successQId, factory.systematicStudyId, questionContext = "ROB")
val successAnswer = factory.answerDetail(questionId = successQId, type = "TEXTUAL", answer = "This will work")
val notFoundQId = UUID.randomUUID()
val notFoundAnswer = factory.answerDetail(questionId = notFoundQId, type = "TEXTUAL", answer = "This will fail")
- val wrongContextQId = UUID.randomUUID()
- val wrongContextQDto = factory.generateQuestionTextualDto(wrongContextQId, factory.systematicStudyId, questionContext = "EXTRACTION")
- val wrongContextAnswer = factory.answerDetail(questionId = wrongContextQId, type = "TEXTUAL", answer = "Wrong context")
-
- val request = factory.batchAnswerRequest(listOf(successAnswer, notFoundAnswer, wrongContextAnswer))
+ val request = factory.batchAnswerRequest(listOf(successAnswer, notFoundAnswer))
preconditionCheckerMocking.makeEverythingWork()
every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns reviewDto
every { questionRepository.findById(request.systematicStudyId, successQId) } returns successQDto
every { questionRepository.findById(request.systematicStudyId, notFoundQId) } returns null
- every { questionRepository.findById(request.systematicStudyId, wrongContextQId) } returns wrongContextQDto
- sut.batchAnswerQuestion(presenter, request, context)
+ sut.batchAnswerQuestion(presenter, request)
verify(exactly = 1) { studyReviewRepository.saveOrUpdate(any()) }
verify(exactly = 1) {
presenter.prepareSuccessView(withArg { response ->
assertEquals(1, response.succeededAnswers.size)
- assertEquals(2, response.failedAnswers.size)
+ assertEquals(1, response.failedAnswers.size)
assertEquals(1, response.totalAnswered)
assertTrue(response.succeededAnswers.contains(successQId))
assertTrue(response.failedAnswers.any { it.questionId == notFoundQId })
- assertTrue(response.failedAnswers.any { it.questionId == wrongContextQId })
+ })
+ }
+ }
+
+ @Test
+ fun `should successfully answer a mix of ROB and EXTRACTION questions`() {
+ val reviewDto = factory.generateDto()
+
+ val robQId = UUID.randomUUID()
+ val robQDto = factory.generateQuestionTextualDto(robQId, factory.systematicStudyId, questionContext = "ROB")
+ val robAnswer = factory.answerDetail(questionId = robQId, type = "TEXTUAL", answer = "Valid ROB answer")
+
+ val extractionQId = UUID.randomUUID()
+ val extractionQDto = factory.generateQuestionPickListDto(extractionQId, factory.systematicStudyId, options = listOf("X", "Y"), questionContext = "EXTRACTION")
+ val extractionAnswer = factory.answerDetail(questionId = extractionQId, type = "PICK_LIST", answer = "X")
+
+ val request = factory.batchAnswerRequest(listOf(robAnswer, extractionAnswer))
+
+ preconditionCheckerMocking.makeEverythingWork()
+ every { studyReviewRepository.findById(request.systematicStudyId, request.studyReviewId) } returns reviewDto
+ every { questionRepository.findById(request.systematicStudyId, robQId) } returns robQDto
+ every { questionRepository.findById(request.systematicStudyId, extractionQId) } returns extractionQDto
+
+ sut.batchAnswerQuestion(presenter, request)
+
+ verify(exactly = 1) { studyReviewRepository.saveOrUpdate(any()) }
+ verify(exactly = 1) {
+ presenter.prepareSuccessView(withArg { response ->
+ assertEquals(2, response.succeededAnswers.size, "Should have 2 successful answers")
+ assertTrue(response.failedAnswers.isEmpty(), "Should have no failed answers")
+ assertEquals(2, response.totalAnswered, "Total answered should be 2")
+ assertTrue(
+ response.succeededAnswers.containsAll(listOf(robQId, extractionQId)),
+ "Response should contain both ROB and EXTRACTION question IDs"
+ )
})
}
}
@@ -164,10 +182,8 @@ class BatchAnswerQuestionServiceImplTest {
@Test
fun `should create a failed answer entry for a question with conflicting types`() {
val reviewDto = factory.generateDto()
- val context = "ROB"
val questionId = UUID.randomUUID()
- val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = context)
-
+ val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = "ROB")
val answerDetail = factory.answerDetail(questionId, "PICK_LIST", "Some answer")
val request = factory.batchAnswerRequest(listOf(answerDetail))
@@ -175,7 +191,7 @@ class BatchAnswerQuestionServiceImplTest {
every { studyReviewRepository.findById(any(), any()) } returns reviewDto
every { questionRepository.findById(any(), questionId) } returns questionDto
- sut.batchAnswerQuestion(presenter, request, context)
+ sut.batchAnswerQuestion(presenter, request)
verify(exactly = 1) {
presenter.prepareSuccessView(withArg { response ->
@@ -190,19 +206,17 @@ class BatchAnswerQuestionServiceImplTest {
@Test
fun `should create a failed answer entry when answer value type is incompatible`() {
val reviewDto = factory.generateDto()
- val context = "EXTRACTION"
val questionId = UUID.randomUUID()
- val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = context)
+ val questionDto = factory.generateQuestionTextualDto(questionId, factory.systematicStudyId, questionContext = "ROB")
val answerDetail = factory.answerDetail(questionId, "TEXTUAL", 12345)
val request = factory.batchAnswerRequest(listOf(answerDetail))
preconditionCheckerMocking.makeEverythingWork()
-
every { studyReviewRepository.findById(any(), any()) } returns reviewDto
every { questionRepository.findById(any(), questionId) } returns questionDto
- sut.batchAnswerQuestion(presenter, request, context)
+ sut.batchAnswerQuestion(presenter, request) // Updated call
verify(exactly = 1) {
presenter.prepareSuccessView(withArg { response ->
@@ -217,13 +231,9 @@ class BatchAnswerQuestionServiceImplTest {
@Test
fun `should create a failed answer entry for unsupported labeled scale answer type`() {
val reviewDto = factory.generateDto()
- val context = "ROB"
val questionId = UUID.randomUUID()
- val labelDto = AnswerQuestionService.LabelDto(
- "LabelTest",
- 1
- )
- val questionDto = factory.generateQuestionLabeledScaleDto(questionId, factory.systematicStudyId, questionContext = context, labelDto = labelDto)
+ val labelDto = BatchAnswerQuestionService.LabelDto("LabelTest", 1)
+ val questionDto = factory.generateQuestionLabeledScaleDto(questionId, factory.systematicStudyId, labelDto = labelDto, questionContext = "ROB")
val answerDetail = factory.answerDetail(questionId, "LABELED_SCALE", "invalid answer format")
val request = factory.batchAnswerRequest(listOf(answerDetail))
@@ -232,7 +242,7 @@ class BatchAnswerQuestionServiceImplTest {
every { studyReviewRepository.findById(any(), any()) } returns reviewDto
every { questionRepository.findById(any(), questionId) } returns questionDto
- sut.batchAnswerQuestion(presenter, request, context)
+ sut.batchAnswerQuestion(presenter, request) // Updated call
verify(exactly = 1) {
presenter.prepareSuccessView(withArg { response ->
diff --git a/review/src/test/kotlin/br/all/application/study/update/MarkAsDuplicatedServiceImplTest.kt b/review/src/test/kotlin/br/all/application/study/update/MarkAsDuplicatedServiceImplTest.kt
index 76a21c603..9b29c5a69 100644
--- a/review/src/test/kotlin/br/all/application/study/update/MarkAsDuplicatedServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/update/MarkAsDuplicatedServiceImplTest.kt
@@ -1,8 +1,7 @@
package br.all.application.study.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.update.implementation.MarkAsDuplicatedServiceImpl
import br.all.application.study.update.interfaces.MarkAsDuplicatedPresenter
@@ -14,7 +13,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.*
@Tag("UnitTest")
@Tag("ServiceTest")
@@ -25,8 +23,6 @@ class MarkAsDuplicatedServiceImplTest {
@MockK(relaxUnitFun = true) private lateinit var systematicStudyRepository: SystematicStudyRepository
@MockK private lateinit var credentialService: CredentialsService
@MockK(relaxed = true) private lateinit var presenter: MarkAsDuplicatedPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: MarkAsDuplicatedServiceImpl
@@ -40,16 +36,13 @@ class MarkAsDuplicatedServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = MarkAsDuplicatedServiceImpl(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewExtractionServiceTest.kt b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewExtractionServiceTest.kt
index 2585cfd5a..87ccc5c04 100644
--- a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewExtractionServiceTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewExtractionServiceTest.kt
@@ -1,8 +1,7 @@
package br.all.application.study.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.update.implementation.UpdateStudyReviewExtractionService
import br.all.application.study.update.interfaces.UpdateStudyReviewStatusPresenter
@@ -14,7 +13,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
import kotlin.test.assertFailsWith
@Tag("UnitTest")
@@ -26,8 +24,6 @@ class UpdateStudyReviewExtractionServiceTest {
@MockK(relaxUnitFun = true) private lateinit var systematicStudyRepository: SystematicStudyRepository
@MockK private lateinit var credentialService: CredentialsService
@MockK(relaxed = true) private lateinit var presenter: UpdateStudyReviewStatusPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: UpdateStudyReviewExtractionService
@@ -41,16 +37,13 @@ class UpdateStudyReviewExtractionServiceTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = UpdateStudyReviewExtractionService(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewPriorityServiceTest.kt b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewPriorityServiceTest.kt
index b8e76cb77..d9c3a467d 100644
--- a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewPriorityServiceTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewPriorityServiceTest.kt
@@ -1,8 +1,7 @@
package br.all.application.study.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.update.implementation.UpdateStudyReviewPriorityService
import br.all.application.study.update.interfaces.UpdateStudyReviewStatusPresenter
@@ -14,8 +13,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
-
@Tag("UnitTest")
@Tag("ServiceTest")
@ExtendWith(MockKExtension::class)
@@ -25,8 +22,6 @@ class UpdateStudyReviewPriorityServiceTest {
@MockK(relaxUnitFun = true) private lateinit var systematicStudyRepository: SystematicStudyRepository
@MockK private lateinit var credentialService: CredentialsService
@MockK(relaxed = true) private lateinit var presenter: UpdateStudyReviewStatusPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: UpdateStudyReviewPriorityService
@@ -40,16 +35,13 @@ class UpdateStudyReviewPriorityServiceTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = UpdateStudyReviewPriorityService(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewSelectionStatusServiceTest.kt b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewSelectionStatusServiceTest.kt
index b075c2fcf..092d4b3df 100644
--- a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewSelectionStatusServiceTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewSelectionStatusServiceTest.kt
@@ -1,8 +1,7 @@
package br.all.application.study.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.update.implementation.UpdateStudyReviewSelectionService
import br.all.application.study.update.interfaces.UpdateStudyReviewStatusPresenter
@@ -14,7 +13,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
import kotlin.test.assertFailsWith
@Tag("UnitTest")
@@ -26,8 +24,6 @@ class UpdateStudyReviewSelectionStatusServiceTest {
@MockK(relaxUnitFun = true) private lateinit var systematicStudyRepository: SystematicStudyRepository
@MockK private lateinit var credentialService: CredentialsService
@MockK(relaxed = true) private lateinit var presenter: UpdateStudyReviewStatusPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: UpdateStudyReviewSelectionService
@@ -41,16 +37,13 @@ class UpdateStudyReviewSelectionStatusServiceTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = UpdateStudyReviewSelectionService(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewServiceImplTest.kt b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewServiceImplTest.kt
index cfb5b1588..90658b4c4 100644
--- a/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewServiceImplTest.kt
+++ b/review/src/test/kotlin/br/all/application/study/update/UpdateStudyReviewServiceImplTest.kt
@@ -1,8 +1,7 @@
package br.all.application.study.update
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
+import br.all.domain.shared.exception.EntityNotFoundException
import br.all.application.study.repository.StudyReviewRepository
import br.all.application.study.update.implementation.UpdateStudyReviewServiceImpl
import br.all.application.study.update.interfaces.UpdateStudyReviewPresenter
@@ -14,8 +13,6 @@ import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import org.junit.jupiter.api.*
import org.junit.jupiter.api.extension.ExtendWith
-import java.util.UUID
-
@Tag("UnitTest")
@Tag("ServiceTest")
@ExtendWith(MockKExtension::class)
@@ -25,8 +22,6 @@ class UpdateStudyReviewServiceImplTest {
@MockK(relaxUnitFun = true) private lateinit var systematicStudyRepository: SystematicStudyRepository
@MockK private lateinit var credentialService: CredentialsService
@MockK(relaxed = true) private lateinit var presenter: UpdateStudyReviewPresenter
- @MockK
- private lateinit var collaborationRepository: CollaborationRepository
private lateinit var sut: UpdateStudyReviewServiceImpl
@@ -40,16 +35,13 @@ class UpdateStudyReviewServiceImplTest {
presenter,
credentialService,
systematicStudyRepository,
- collaborationRepository,
factory.researcherId,
- factory.systematicStudyId,
- UUID.randomUUID()
+ factory.systematicStudyId
)
sut = UpdateStudyReviewServiceImpl(
systematicStudyRepository,
studyReviewRepository,
credentialService,
- collaborationRepository
)
}
diff --git a/review/src/test/kotlin/br/all/application/study/util/TestDataFactory.kt b/review/src/test/kotlin/br/all/application/study/util/TestDataFactory.kt
index 63640d153..7cc0bbc18 100644
--- a/review/src/test/kotlin/br/all/application/study/util/TestDataFactory.kt
+++ b/review/src/test/kotlin/br/all/application/study/util/TestDataFactory.kt
@@ -80,10 +80,18 @@ class TestDataFactory {
fun findAllResponseModel(
amountOfStudies: Int,
+ page: Int = 0,
+ size: Int = 20,
+ totalElements: Long = amountOfStudies.toLong(),
+ totalPages: Int = if (amountOfStudies == 0) 0 else (amountOfStudies + size - 1) / size
) = FindAllStudyReviewsService.ResponseModel(
researcherId,
systematicStudyId,
- List(amountOfStudies) { generateDto(studyReviewId = Random(1).nextLong()) }
+ List(amountOfStudies) { generateDto(studyReviewId = Random(1).nextLong()) },
+ page,
+ size,
+ totalElements,
+ totalPages
)
fun findAllBySourceRequestModel(
@@ -125,17 +133,6 @@ class TestDataFactory {
duplicateIds: List
) = MarkAsDuplicatedService.RequestModel(researcherId, systematicStudyId, keptStudyReviewId, duplicateIds)
- fun answerQuestionModel(
- questionId: UUID,
- type: String,
- answer: T,
- ) = AnswerQuestionService.RequestModel(researcherId, systematicStudyId, studyReviewId, questionId, type, answer)
-
- fun questionLabelDto(
- name: String,
- value: Int,
- ) = AnswerQuestionService.LabelDto(name, value)
-
fun generateQuestionTextualDto(
questionId: UUID,
systematicStudyId: UUID = this.systematicStudyId,
@@ -161,7 +158,7 @@ class TestDataFactory {
systematicStudyId: UUID = this.systematicStudyId,
code: String = faker.lorem.words(),
description: String = faker.lorem.words(),
- labelDto: AnswerQuestionService.LabelDto,
+ labelDto: BatchAnswerQuestionService.LabelDto,
questionContext: String
) =
QuestionDto(
diff --git a/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMocking.kt b/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMocking.kt
index e41dab172..80b63fa7f 100644
--- a/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMocking.kt
+++ b/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMocking.kt
@@ -3,8 +3,8 @@ package br.all.application.util
import br.all.application.question.repository.QuestionRepository
import br.all.application.user.credentials.ResearcherCredentialsService
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.presenter.GenericPresenter
-import br.all.domain.model.user.toResearcherId
+import br.all.domain.shared.presenter.GenericPresenter
+import br.all.domain.shared.user.toResearcherId
import br.all.domain.model.review.toSystematicStudyId
import io.mockk.every
import java.util.*
diff --git a/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMockingNew.kt b/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMockingNew.kt
index 1ca3c0967..350e3865d 100644
--- a/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMockingNew.kt
+++ b/review/src/test/kotlin/br/all/application/util/PreconditionCheckerMockingNew.kt
@@ -1,14 +1,12 @@
package br.all.application.util
-import br.all.application.collaboration.repository.CollaborationDto
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.repository.QuestionRepository
import br.all.application.review.repository.SystematicStudyDto
import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
-import br.all.application.shared.presenter.GenericPresenter
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
+import br.all.domain.shared.presenter.GenericPresenter
import br.all.application.shared.presenter.prepareIfFailsPreconditions
import br.all.application.user.CredentialsService
import io.github.serpro69.kfaker.Faker
@@ -21,38 +19,24 @@ class PreconditionCheckerMockingNew(
private val presenter: GenericPresenter<*>,
private val credentialsService: CredentialsService,
private val systematicStudyRepository: SystematicStudyRepository,
- private val collaborationRepository: CollaborationRepository,
private val userId: UUID,
private val systematicStudyId: UUID,
- private val collaborationId: UUID,
) {
private val faker = Faker()
private val systematicStudy = generateSystematicStudy()
- private val collaboration = generateCollaborationDto()
fun makeEverythingWork() {
val user = generateUserDto()
mockkStatic(GenericPresenter<*>::prepareIfFailsPreconditions)
every { credentialsService.loadCredentials(userId) } returns user
every { systematicStudyRepository.findById(systematicStudyId) } returns systematicStudy
- every { presenter.prepareIfFailsPreconditions(
- any(),
- any(),
- allowedRoles = any(),
- collaborations = any()
- ) } returns Unit
- every { collaborationRepository.
- listAllCollaborationsBySystematicStudyId(systematicStudyId)
- } returns listOf(collaboration)
+ every { presenter.prepareIfFailsPreconditions(any(), any()) } returns Unit
every { presenter.isDone() } returns false
}
fun makeUserUnauthenticated() {
every { credentialsService.loadCredentials(userId) } returns null
every { systematicStudyRepository.findById(systematicStudyId) } returns systematicStudy
- every { collaborationRepository.
- listAllCollaborationsBySystematicStudyId(systematicStudyId)
- } returns listOf(collaboration)
every { presenter.isDone() } returns true
}
@@ -60,9 +44,6 @@ class PreconditionCheckerMockingNew(
val user = generateUnauthorizedUserDto()
every { credentialsService.loadCredentials(userId) } returns user
every { systematicStudyRepository.findById(systematicStudyId) } returns systematicStudy
- every { collaborationRepository.
- listAllCollaborationsBySystematicStudyId(systematicStudyId)
- } returns listOf(collaboration)
every { presenter.isDone() } returns true
}
@@ -70,9 +51,6 @@ class PreconditionCheckerMockingNew(
val user = generateUserDto()
every { credentialsService.loadCredentials(userId) } returns user
every { systematicStudyRepository.findById(systematicStudyId) } returns null
- every { collaborationRepository.
- listAllCollaborationsBySystematicStudyId(systematicStudyId)
- } returns emptyList()
every { presenter.isDone() } returns false andThen true
}
@@ -80,9 +58,6 @@ class PreconditionCheckerMockingNew(
val user = generateUserDto()
every { credentialsService.loadCredentials(userId) } returns user
every { systematicStudyRepository.findById(systematicStudyId) } returns systematicStudy
- every { collaborationRepository.
- listAllCollaborationsBySystematicStudyId(systematicStudyId)
- } returns listOf(collaboration)
every { repository.findById(systematicStudyId, questionId) } returns null
every { presenter.isDone() } returns false andThen false andThen true
}
@@ -155,18 +130,6 @@ class PreconditionCheckerMockingNew(
mutableSetOf(ownerId).also { it.addAll(collaborators) },
)
- private fun generateCollaborationDto(
- id: UUID = collaborationId,
- status: String = "ACTIVE",
- permissions: Set = setOf("EDIT")
- ) = CollaborationDto(
- id = id,
- systematicStudyId = systematicStudyId,
- userId = userId,
- status = status,
- permissions = permissions
- )
-
private fun generateUserDto(
userId: UUID = this.userId,
userName: String = faker.name.firstName(),
diff --git a/review/src/test/kotlin/br/all/domain/model/review/SystematicStudyTest.kt b/review/src/test/kotlin/br/all/domain/model/review/SystematicStudyTest.kt
index d37a5f2b6..664865e91 100644
--- a/review/src/test/kotlin/br/all/domain/model/review/SystematicStudyTest.kt
+++ b/review/src/test/kotlin/br/all/domain/model/review/SystematicStudyTest.kt
@@ -1,9 +1,6 @@
package br.all.domain.model.review
-import br.all.domain.model.collaboration.Collaboration
-import br.all.domain.model.collaboration.CollaborationId
-import br.all.domain.model.collaboration.CollaborationPermission
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
import org.junit.jupiter.api.*
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.assertDoesNotThrow
@@ -20,7 +17,7 @@ class SystematicStudyTest {
fun setUp() {
val systematicStudyId = SystematicStudyId(UUID.randomUUID())
val owner = ResearcherId(UUID.randomUUID())
- sut = SystematicStudy(systematicStudyId, "Some title", "Some description", owner, setOf())
+ sut = SystematicStudy(systematicStudyId, "Some title", "Some description", owner)
}
@Nested
@@ -34,10 +31,19 @@ class SystematicStudyTest {
fun `should successfully create an systematic study`() {
val id = SystematicStudyId(UUID.randomUUID())
val owner = ResearcherId(UUID.randomUUID())
- val collaborators = mutableSetOf(CollaborationId(UUID.randomUUID()))
+ val collaborators = mutableSetOf(ResearcherId(UUID.randomUUID()))
assertDoesNotThrow { SystematicStudy(id, "Title", "Description", owner, collaborators) }
}
+
+ @Test
+ fun `should owner be a collaborator`() {
+ val id = SystematicStudyId(UUID.randomUUID())
+ val ownerId = ResearcherId(UUID.randomUUID())
+ val sut = SystematicStudy(id, "Title", "Description", ownerId, mutableSetOf())
+
+ assertTrue(ownerId in sut.collaborators)
+ }
}
@Nested
@@ -50,7 +56,7 @@ class SystematicStudyTest {
val id = SystematicStudyId(UUID.randomUUID())
val owner = ResearcherId(UUID.randomUUID())
- assertThrows { SystematicStudy(id, title, description, owner, setOf()) }
+ assertThrows { SystematicStudy(id, title, description, owner) }
}
}
}
@@ -58,10 +64,17 @@ class SystematicStudyTest {
@Nested
@DisplayName("When adding new collaborators")
inner class WhenAddingNewCollaborators {
+ @Test
+ @Tag("ValidClasses")
+ fun `should add new collaborator`() {
+ sut.addCollaborator(ResearcherId(UUID.randomUUID()))
+ assertEquals(2, sut.collaborators.size)
+ }
+
@Test
@Tag("InvalidClasses")
fun `should not add duplicated researchers`() {
- val duplicatedResearcher = CollaborationId(UUID.randomUUID())
+ val duplicatedResearcher = ResearcherId(UUID.randomUUID())
sut.addCollaborator(duplicatedResearcher)
sut.addCollaborator(duplicatedResearcher)
@@ -80,14 +93,12 @@ class SystematicStudyTest {
@Test
fun `should remove valid collaborator`() {
val researcherId = ResearcherId(UUID.randomUUID())
- val collabId = CollaborationId(UUID.randomUUID())
- val collaboration = Collaboration(collabId, sut.id as SystematicStudyId, researcherId, permissions = setOf(CollaborationPermission.VIEW))
- sut.addCollaborator(collabId)
- assertTrue(collabId in sut.collaborators, "researcher was not even added" )
+ sut.addCollaborator(researcherId)
+ assertTrue(researcherId in sut.collaborators, "researcher was not even added" )
- sut.removeCollaborator(collaboration)
- assertFalse(collabId in sut.collaborators, "researcher was not removed")
+ sut.removeCollaborator(researcherId)
+ assertFalse(researcherId in sut.collaborators, "researcher was not removed")
}
}
@@ -98,19 +109,33 @@ class SystematicStudyTest {
@Test
fun `should not allow removing owner from collaborators`(){
val ownerId = sut.owner
- val collaboration = Collaboration(CollaborationId(UUID.randomUUID()), sut.id as SystematicStudyId, ownerId, permissions = setOf(CollaborationPermission.VIEW))
- assertThrows { sut.removeCollaborator(collaboration) }
+ assertThrows { sut.removeCollaborator(ownerId) }
}
@Test
fun `should throw if try to remove absent collaborator`(){
val absentResearcher = ResearcherId(UUID.randomUUID())
- val collaboration = Collaboration(CollaborationId(UUID.randomUUID()), sut.id as SystematicStudyId, absentResearcher, permissions = setOf(CollaborationPermission.VIEW))
- assertThrows { sut.removeCollaborator(collaboration) }
+ assertThrows { sut.removeCollaborator(absentResearcher) }
}
}
}
+ @Nested
+ @DisplayName("When changing the owner")
+ inner class WhenChangingTheOwner {
+ @Test
+ @Tag("ValidClasses")
+ fun `should add new owner to collaborators if not present yet`(){
+ val newOwner = ResearcherId(UUID.randomUUID())
+ sut.changeOwner(newOwner)
+
+ Assertions.assertAll("change owner",
+ { assertTrue(newOwner in sut.collaborators) },
+ { assertEquals(sut.owner, newOwner) }
+ )
+ }
+ }
+
@Nested
@DisplayName("When changing the title")
inner class WhenChangingTheTitle {
diff --git a/review/src/test/kotlin/br/all/domain/model/search/SearchSessionTest.kt b/review/src/test/kotlin/br/all/domain/model/search/SearchSessionTest.kt
index dcb7de383..f7fa3540b 100644
--- a/review/src/test/kotlin/br/all/domain/model/search/SearchSessionTest.kt
+++ b/review/src/test/kotlin/br/all/domain/model/search/SearchSessionTest.kt
@@ -1,7 +1,7 @@
package br.all.domain.model.search
import br.all.domain.model.protocol.SearchSource
-import br.all.domain.model.user.ResearcherId
+import br.all.domain.shared.user.ResearcherId
import br.all.domain.model.review.SystematicStudyId
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
diff --git a/scas/pom.xml b/scas/pom.xml
index b8ddb39a2..c05350760 100644
--- a/scas/pom.xml
+++ b/scas/pom.xml
@@ -26,7 +26,7 @@
src/main/kotlin
- src/test/kotlin
+
org.jetbrains.kotlin
@@ -78,11 +78,6 @@
5.10.0
test
-
- org.jetbrains.kotlin
- kotlin-stdlib
- 1.9.0
-
br.all
review
diff --git a/shared/pom.xml b/shared/pom.xml
new file mode 100644
index 000000000..c94b5f019
--- /dev/null
+++ b/shared/pom.xml
@@ -0,0 +1,38 @@
+
+
+ 4.0.0
+
+ br.all
+ systematic
+ 1.0-SNAPSHOT
+
+
+ shared
+
+
+ UTF-8
+ official
+ 1.8
+
+
+
+
+ mavenCentral
+ https://repo1.maven.org/maven2/
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-mongodb
+
+
+ org.springframework
+ spring-web
+
+
+
+
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt b/shared/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt
similarity index 99%
rename from review/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt
rename to shared/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt
index 417d8d3f4..f67a9a28e 100644
--- a/review/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/ddd/Entity.kt
@@ -1,7 +1,6 @@
package br.all.domain.shared.ddd
abstract class Entity (val id: Identifier) {
-
final override fun equals(other: Any?) = when {
this === other -> true
other !is Entity<*> -> false
diff --git a/account/src/main/kotlin/br/all/domain/shared/ddd/Identifier.kt b/shared/src/main/kotlin/br/all/domain/shared/ddd/Identifier.kt
similarity index 100%
rename from account/src/main/kotlin/br/all/domain/shared/ddd/Identifier.kt
rename to shared/src/main/kotlin/br/all/domain/shared/ddd/Identifier.kt
diff --git a/account/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt b/shared/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt
similarity index 98%
rename from account/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt
rename to shared/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt
index 298fb9ac3..33c434bcd 100644
--- a/account/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/ddd/Notification.kt
@@ -1,13 +1,9 @@
package br.all.domain.shared.ddd
class Notification {
-
private val errors: MutableList = mutableListOf()
fun addError(message: String, cause: Exception? = null) = errors.add(Error(message, cause))
fun hasNoErrors() = errors.isEmpty()
fun message() = errors.joinToString(" | ") { it.message }
data class Error(val message: String, val cause: Exception?)
}
-
-
-
diff --git a/account/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt b/shared/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt
similarity index 98%
rename from account/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt
rename to shared/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt
index c22062ab7..0b820a04b 100644
--- a/account/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/ddd/ValueObject.kt
@@ -2,4 +2,4 @@ package br.all.domain.shared.ddd
abstract class ValueObject {
protected abstract fun validate() : Notification
-}
+}
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/shared/exceptions/EntityNotFoundException.kt b/shared/src/main/kotlin/br/all/domain/shared/exception/EntityNotFoundException.kt
similarity index 70%
rename from review/src/main/kotlin/br/all/application/shared/exceptions/EntityNotFoundException.kt
rename to shared/src/main/kotlin/br/all/domain/shared/exception/EntityNotFoundException.kt
index 2c09a0a70..56f438bac 100644
--- a/review/src/main/kotlin/br/all/application/shared/exceptions/EntityNotFoundException.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/exception/EntityNotFoundException.kt
@@ -1,3 +1,3 @@
-package br.all.application.shared.exceptions
+package br.all.domain.shared.exception
class EntityNotFoundException(message: String? = null, cause: Throwable? = null) : Exception(message, cause)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/shared/exceptions/UnauthenticatedUserException.kt b/shared/src/main/kotlin/br/all/domain/shared/exception/UnauthenticatedUserException.kt
similarity index 71%
rename from review/src/main/kotlin/br/all/application/shared/exceptions/UnauthenticatedUserException.kt
rename to shared/src/main/kotlin/br/all/domain/shared/exception/UnauthenticatedUserException.kt
index 4ae3f28b7..c7a095474 100644
--- a/review/src/main/kotlin/br/all/application/shared/exceptions/UnauthenticatedUserException.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/exception/UnauthenticatedUserException.kt
@@ -1,3 +1,3 @@
-package br.all.application.shared.exceptions
+package br.all.domain.shared.exception
class UnauthenticatedUserException (message: String? = null, cause: Throwable? = null) : Exception(message, cause)
\ No newline at end of file
diff --git a/review/src/main/kotlin/br/all/application/shared/exceptions/UnauthorizedUserException.kt b/shared/src/main/kotlin/br/all/domain/shared/exception/UnauthorizedUserException.kt
similarity index 71%
rename from review/src/main/kotlin/br/all/application/shared/exceptions/UnauthorizedUserException.kt
rename to shared/src/main/kotlin/br/all/domain/shared/exception/UnauthorizedUserException.kt
index b3b50ada4..08293f6bd 100644
--- a/review/src/main/kotlin/br/all/application/shared/exceptions/UnauthorizedUserException.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/exception/UnauthorizedUserException.kt
@@ -1,3 +1,3 @@
-package br.all.application.shared.exceptions
+package br.all.domain.shared.exception
class UnauthorizedUserException (message: String? = null, cause: Throwable? = null) : Exception(message, cause)
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/application/shared/UniquenessViolationException.kt b/shared/src/main/kotlin/br/all/domain/shared/exception/UniquenessViolationException.kt
similarity index 74%
rename from account/src/main/kotlin/br/all/application/shared/UniquenessViolationException.kt
rename to shared/src/main/kotlin/br/all/domain/shared/exception/UniquenessViolationException.kt
index 95e38b127..6b3f10373 100644
--- a/account/src/main/kotlin/br/all/application/shared/UniquenessViolationException.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/exception/UniquenessViolationException.kt
@@ -1,3 +1,3 @@
-package br.all.application.shared
+package br.all.domain.shared.exception
class UniquenessViolationException(message: String? = null, cause: Throwable? = null) : Exception(message, cause)
\ No newline at end of file
diff --git a/account/src/main/kotlin/br/all/application/shared/GenericPresenter.kt b/shared/src/main/kotlin/br/all/domain/shared/presenter/GenericPresenter.kt
similarity index 79%
rename from account/src/main/kotlin/br/all/application/shared/GenericPresenter.kt
rename to shared/src/main/kotlin/br/all/domain/shared/presenter/GenericPresenter.kt
index b340d32da..bdc877976 100644
--- a/account/src/main/kotlin/br/all/application/shared/GenericPresenter.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/presenter/GenericPresenter.kt
@@ -1,4 +1,4 @@
-package br.all.application.shared
+package br.all.domain.shared.presenter
interface GenericPresenter {
fun prepareSuccessView(response: T)
diff --git a/review/src/main/kotlin/br/all/domain/shared/valueobject/Email.kt b/shared/src/main/kotlin/br/all/domain/shared/user/Email.kt
similarity index 98%
rename from review/src/main/kotlin/br/all/domain/shared/valueobject/Email.kt
rename to shared/src/main/kotlin/br/all/domain/shared/user/Email.kt
index aa332b362..903c10af5 100644
--- a/review/src/main/kotlin/br/all/domain/shared/valueobject/Email.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/user/Email.kt
@@ -1,4 +1,4 @@
-package br.all.domain.shared.valueobject
+package br.all.domain.shared.user
import br.all.domain.shared.ddd.Notification
import br.all.domain.shared.ddd.ValueObject
diff --git a/review/src/main/kotlin/br/all/domain/model/user/Researcher.kt b/shared/src/main/kotlin/br/all/domain/shared/user/Researcher.kt
similarity index 83%
rename from review/src/main/kotlin/br/all/domain/model/user/Researcher.kt
rename to shared/src/main/kotlin/br/all/domain/shared/user/Researcher.kt
index 32bbfce0b..992cc2484 100644
--- a/review/src/main/kotlin/br/all/domain/model/user/Researcher.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/user/Researcher.kt
@@ -1,4 +1,4 @@
-package br.all.domain.model.user
+package br.all.domain.shared.user
import br.all.domain.shared.ddd.Entity
import java.util.UUID
diff --git a/review/src/main/kotlin/br/all/domain/model/user/ResearcherId.kt b/shared/src/main/kotlin/br/all/domain/shared/user/ResearcherId.kt
similarity index 75%
rename from review/src/main/kotlin/br/all/domain/model/user/ResearcherId.kt
rename to shared/src/main/kotlin/br/all/domain/shared/user/ResearcherId.kt
index e9391c101..67e6b4b5e 100644
--- a/review/src/main/kotlin/br/all/domain/model/user/ResearcherId.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/user/ResearcherId.kt
@@ -1,11 +1,11 @@
-package br.all.domain.model.user
+package br.all.domain.shared.user
import br.all.domain.shared.ddd.Identifier
import br.all.domain.shared.ddd.Notification
import java.util.*
@JvmInline
-value class ResearcherId(val value : UUID ) : Identifier {
+value class ResearcherId(val value : UUID ) : Identifier {
override fun validate() = Notification()
diff --git a/review/src/main/kotlin/br/all/domain/model/user/Role.kt b/shared/src/main/kotlin/br/all/domain/shared/user/Role.kt
similarity index 58%
rename from review/src/main/kotlin/br/all/domain/model/user/Role.kt
rename to shared/src/main/kotlin/br/all/domain/shared/user/Role.kt
index 8e6ed2dde..2546921df 100644
--- a/review/src/main/kotlin/br/all/domain/model/user/Role.kt
+++ b/shared/src/main/kotlin/br/all/domain/shared/user/Role.kt
@@ -1,4 +1,4 @@
-package br.all.domain.model.user
+package br.all.domain.shared.user
enum class Role {
COLLABORATOR,
diff --git a/review/src/test/kotlin/br/all/domain/shared/ddd/EntityTest.kt b/shared/src/test/kotlin/br/all/domain/shared/ddd/EntityTest.kt
similarity index 58%
rename from review/src/test/kotlin/br/all/domain/shared/ddd/EntityTest.kt
rename to shared/src/test/kotlin/br/all/domain/shared/ddd/EntityTest.kt
index bbf2ae3b7..9f1aff62a 100644
--- a/review/src/test/kotlin/br/all/domain/shared/ddd/EntityTest.kt
+++ b/shared/src/test/kotlin/br/all/domain/shared/ddd/EntityTest.kt
@@ -1,59 +1,61 @@
package br.all.domain.shared.ddd
-import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Assertions.assertFalse
+import org.junit.jupiter.api.Assertions.assertNotEquals
import org.junit.jupiter.api.Tag
-import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test
@Tag("UnitTest")
-class EntityTest{
+class EntityTest {
@JvmInline
- private value class EntityId(val value: Long) : Identifier {
- override fun validate() = Notification ()
+ private value class EntityId(val value: Long) : Identifier {
+ override fun validate() = Notification()
override fun value() = value
}
- private class EntityA(id: EntityId) : Entity (id)
- private class EntityB(id: EntityId) : Entity (id)
+ private class EntityA(id: EntityId) : Entity(id)
+ private class EntityB(id: EntityId) : Entity(id)
@Test
- fun `Should two entities of same class and id be equal`(){
+ fun `Should two entities of same class and id be equal`() {
val entityA1 = EntityA(EntityId(10L))
val entityA2 = EntityA(EntityId(10L))
assertEquals(entityA1, entityA2)
}
@Test
- fun `Should two entities of same class and different ids be different`(){
+ fun `Should two entities of same class and different ids be different`() {
val entityA1 = EntityA(EntityId(10L))
val entityA2 = EntityA(EntityId(11L))
assertNotEquals(entityA1, entityA2)
}
@Test
- fun `Should an entity be different from a not entity`(){
+ fun `Should an entity be different from a not entity`() {
data class OtherClass(val id: Long)
- val otherObject = OtherClass(10L);
+
+ val otherObject = OtherClass(10L)
val entityA = EntityA(EntityId(10L))
assertNotEquals(otherObject, entityA)
}
@Test
- fun `Should two entities of different classes and same index be different`(){
+ fun `Should two entities of different classes and same index be different`() {
val entityA = EntityA(EntityId(10L))
val entityB = EntityB(EntityId(10L))
assertNotEquals(entityA, entityB)
}
@Test
- fun `Should entity be different from null`(){
+ fun `Should entity be different from null`() {
val entityA = EntityA(EntityId(10L))
- assertFalse(entityA.equals(null));
+ assertFalse(entityA.equals(null))
}
@Test
- fun `Should two variables of same object be equal`(){
+ fun `Should two variables of same object be equal`() {
val entityA = EntityA(EntityId(10L))
val entityB = entityA
assertEquals(entityA, entityB)
diff --git a/review/src/test/kotlin/br/all/domain/shared/ddd/NotificationTest.kt b/shared/src/test/kotlin/br/all/domain/shared/ddd/NotificationTest.kt
similarity index 100%
rename from review/src/test/kotlin/br/all/domain/shared/ddd/NotificationTest.kt
rename to shared/src/test/kotlin/br/all/domain/shared/ddd/NotificationTest.kt
diff --git a/review/src/test/kotlin/br/all/domain/shared/ddd/EmailTest.kt b/shared/src/test/kotlin/br/all/domain/shared/user/EmailTest.kt
similarity index 98%
rename from review/src/test/kotlin/br/all/domain/shared/ddd/EmailTest.kt
rename to shared/src/test/kotlin/br/all/domain/shared/user/EmailTest.kt
index 55959a529..b94e23685 100644
--- a/review/src/test/kotlin/br/all/domain/shared/ddd/EmailTest.kt
+++ b/shared/src/test/kotlin/br/all/domain/shared/user/EmailTest.kt
@@ -1,10 +1,9 @@
-package br.all.domain.shared.ddd
+package br.all.domain.shared.user
-import br.all.domain.shared.valueobject.Email
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
-import org.junit.jupiter.api.assertDoesNotThrow
import org.junit.jupiter.api.assertThrows
+import org.junit.jupiter.api.assertDoesNotThrow
import kotlin.test.assertEquals
import kotlin.test.assertNotEquals
import kotlin.test.assertTrue
@@ -146,4 +145,4 @@ class EmailTest {
val exception = assertThrows { Email("user@domain@com") }
exception.message?.contains("Wrong Email format")?.let { assertTrue(it) }
}
-}
+}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/collaboration/controller/CollaborationController.kt b/web/src/main/kotlin/br/all/collaboration/controller/CollaborationController.kt
deleted file mode 100644
index f171f0955..000000000
--- a/web/src/main/kotlin/br/all/collaboration/controller/CollaborationController.kt
+++ /dev/null
@@ -1,57 +0,0 @@
-package br.all.collaboration.controller
-
-import br.all.application.collaboration.create.AcceptInviteService
-import br.all.application.collaboration.create.CreateInviteService
-import br.all.collaboration.presenter.RestfulAcceptInvitePresenter
-import br.all.collaboration.presenter.RestfulCreateInvitePresenter
-import br.all.collaboration.requests.PostInviteRequest
-import br.all.security.service.AuthenticationInfoService
-import io.swagger.v3.oas.annotations.Operation
-import org.springframework.http.HttpStatus
-import org.springframework.http.ResponseEntity
-import org.springframework.web.bind.annotation.*
-import java.util.*
-
-@RestController
-@RequestMapping("/api/v1/systematic-study/{systematicStudy}")
-class CollaborationController(
- private val createInviteService: CreateInviteService,
- private val acceptInviteService: AcceptInviteService,
- private val authenticationInfoService: AuthenticationInfoService,
- ) {
-
- @PostMapping("/invite")
- @Operation(summary = "Invite an user in a systematic study")
- fun createInvite(
- @PathVariable systematicStudy: UUID,
- @RequestBody postRequest: PostInviteRequest
- ): ResponseEntity<*> {
- val presenter = RestfulCreateInvitePresenter()
- val userId = authenticationInfoService.getAuthenticatedUserId()
- val request = CreateInviteService.RequestModel(
- systematicStudy,
- userId,
- postRequest.inviteeId,
- postRequest.permissions.toSet()
- )
- createInviteService.createInvite(presenter, request)
- return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
- }
-
- @PostMapping("/invite/{inviteId}/accept")
- @Operation(summary = "Invite an user in a systematic study")
- fun acceptInvite(
- @PathVariable systematicStudy: UUID,
- @PathVariable inviteId: UUID
- ): ResponseEntity<*> {
- val presenter = RestfulAcceptInvitePresenter()
- val userId = authenticationInfoService.getAuthenticatedUserId()
- val request = AcceptInviteService.RequestModel(
- systematicStudy,
- userId,
- inviteId
- )
- acceptInviteService.acceptInvite(presenter, request)
- return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
- }
-}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/collaboration/controller/CollaborationServicesConfiguration.kt b/web/src/main/kotlin/br/all/collaboration/controller/CollaborationServicesConfiguration.kt
deleted file mode 100644
index 6f1536a57..000000000
--- a/web/src/main/kotlin/br/all/collaboration/controller/CollaborationServicesConfiguration.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package br.all.collaboration.controller
-
-import br.all.application.collaboration.create.AcceptInviteServiceImpl
-import br.all.application.collaboration.create.CreateInviteServiceImpl
-import br.all.application.collaboration.repository.CollaborationRepository
-import br.all.application.review.repository.SystematicStudyRepository
-import br.all.application.user.CredentialsService
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.Configuration
-
-@Configuration
-class CollaborationServicesConfiguration {
-
- @Bean
- fun createInviteService(
- systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
- ) = CreateInviteServiceImpl(
- systematicStudyRepository, credentialsService, collaborationRepository
- )
-
- @Bean
- fun acceptInviteService(
- systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
- ) = AcceptInviteServiceImpl(
- systematicStudyRepository, credentialsService, collaborationRepository
- )
-}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/collaboration/presenter/RestfulAcceptInvitePresenter.kt b/web/src/main/kotlin/br/all/collaboration/presenter/RestfulAcceptInvitePresenter.kt
deleted file mode 100644
index a86487f50..000000000
--- a/web/src/main/kotlin/br/all/collaboration/presenter/RestfulAcceptInvitePresenter.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package br.all.collaboration.presenter
-
-import br.all.application.collaboration.create.AcceptInvitePresenter
-import br.all.application.collaboration.create.AcceptInviteService
-import br.all.application.collaboration.create.CreateInvitePresenter
-import br.all.application.collaboration.create.CreateInviteService
-import br.all.shared.error.createErrorResponseFrom
-import org.springframework.hateoas.RepresentationModel
-import org.springframework.http.HttpStatus
-import org.springframework.http.ResponseEntity
-import java.util.*
-
-class RestfulAcceptInvitePresenter : AcceptInvitePresenter {
- var responseEntity: ResponseEntity<*>? = null
-
- override fun prepareSuccessView(response: AcceptInviteService.ResponseModel) {
- responseEntity = ResponseEntity.status(HttpStatus.CREATED).body(ViewModel(response.collaborationId))
- }
-
- override fun prepareFailView(throwable: Throwable) {
- responseEntity = createErrorResponseFrom(throwable)
- }
-
- override fun isDone() = responseEntity != null
-
- private data class ViewModel(
- val collaborationId: UUID,
- ) : RepresentationModel()
-
-}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/collaboration/presenter/RestfulCreateInvitePresenter.kt b/web/src/main/kotlin/br/all/collaboration/presenter/RestfulCreateInvitePresenter.kt
deleted file mode 100644
index aac75f54b..000000000
--- a/web/src/main/kotlin/br/all/collaboration/presenter/RestfulCreateInvitePresenter.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package br.all.collaboration.presenter
-
-import br.all.application.collaboration.create.CreateInvitePresenter
-import br.all.application.collaboration.create.CreateInviteService
-import br.all.shared.error.createErrorResponseFrom
-import org.springframework.hateoas.RepresentationModel
-import org.springframework.http.HttpStatus
-import org.springframework.http.ResponseEntity
-import java.util.*
-
-class RestfulCreateInvitePresenter : CreateInvitePresenter {
- var responseEntity: ResponseEntity<*>? = null
-
- override fun prepareSuccessView(response: CreateInviteService.ResponseModel) {
- responseEntity = ResponseEntity.status(HttpStatus.CREATED).body(ViewModel(response.inviteId))
- }
-
- override fun prepareFailView(throwable: Throwable) {
- responseEntity = createErrorResponseFrom(throwable)
- }
-
- override fun isDone() = responseEntity != null
-
- private data class ViewModel(
- val inviteId: UUID,
- ) : RepresentationModel()
-
-}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/collaboration/requests/PostInviteRequest.kt b/web/src/main/kotlin/br/all/collaboration/requests/PostInviteRequest.kt
deleted file mode 100644
index ad12991af..000000000
--- a/web/src/main/kotlin/br/all/collaboration/requests/PostInviteRequest.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package br.all.collaboration.requests
-
-import java.util.UUID
-
-data class PostInviteRequest(
- val inviteeId: UUID,
- val permissions: List
-)
diff --git a/web/src/main/kotlin/br/all/protocol/controller/ProtocolController.kt b/web/src/main/kotlin/br/all/protocol/controller/ProtocolController.kt
index 8ef4aef3a..2a23e29f2 100644
--- a/web/src/main/kotlin/br/all/protocol/controller/ProtocolController.kt
+++ b/web/src/main/kotlin/br/all/protocol/controller/ProtocolController.kt
@@ -1,10 +1,10 @@
package br.all.protocol.controller
import br.all.application.protocol.find.FindProtocolService
-import br.all.application.protocol.find.GetProtocolStageService
+import br.all.application.protocol.find.FindProtocolStageService
import br.all.application.protocol.update.UpdateProtocolService
import br.all.protocol.presenter.RestfulFindProtocolPresenter
-import br.all.protocol.presenter.RestfulGetProtocolStagePresenter
+import br.all.protocol.presenter.RestfulFindProtocolStagePresenter
import br.all.protocol.presenter.RestfulUpdateProtocolPresenter
import br.all.protocol.requests.PutRequest
import br.all.security.service.AuthenticationInfoService
@@ -19,14 +19,14 @@ import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
import java.util.*
import br.all.application.protocol.find.FindProtocolService.RequestModel as FindOneRequestModel
-import br.all.application.protocol.find.GetProtocolStageService.RequestModel as FindStageRequestModel
+import br.all.application.protocol.find.FindProtocolStageService.RequestModel as FindStageRequestModel
@RestController
@RequestMapping("/systematic-study/{systematicStudyId}/protocol")
class ProtocolController(
private val findProtocolService: FindProtocolService,
private val updateProtocolService: UpdateProtocolService,
- private val getProtocolStageService: GetProtocolStageService,
+ private val findProtocolStageService: FindProtocolStageService,
private val authenticationInfoService: AuthenticationInfoService,
private val linksFactory: LinksFactory
) {
@@ -96,7 +96,7 @@ class ProtocolController(
ApiResponse(responseCode = "200", description = "Success getting the protocol stage",
content = [Content(
mediaType = "application/json",
- schema = Schema(implementation = GetProtocolStageService.ResponseModel::class)
+ schema = Schema(implementation = FindProtocolStageService.ResponseModel::class)
)]),
ApiResponse(
responseCode = "401",
@@ -114,14 +114,14 @@ class ProtocolController(
content = [Content(schema = Schema(hidden = true))]
),
])
- fun getStage(
+ fun findStage(
@PathVariable systematicStudyId: UUID
) : ResponseEntity<*> {
- val presenter = RestfulGetProtocolStagePresenter(linksFactory)
+ val presenter = RestfulFindProtocolStagePresenter(linksFactory)
val userId = authenticationInfoService.getAuthenticatedUserId()
val request = FindStageRequestModel(userId, systematicStudyId)
- getProtocolStageService.getStage(presenter, request)
+ findProtocolStageService.getStage(presenter, request)
return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
}
}
diff --git a/web/src/main/kotlin/br/all/protocol/controller/ProtocolServicesConfiguration.kt b/web/src/main/kotlin/br/all/protocol/controller/ProtocolServicesConfiguration.kt
index de05097c6..8603480d2 100644
--- a/web/src/main/kotlin/br/all/protocol/controller/ProtocolServicesConfiguration.kt
+++ b/web/src/main/kotlin/br/all/protocol/controller/ProtocolServicesConfiguration.kt
@@ -1,8 +1,7 @@
package br.all.protocol.controller
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.find.FindProtocolServiceImpl
-import br.all.application.protocol.find.GetProtocolStageServiceImpl
+import br.all.application.protocol.find.FindProtocolStageServiceImpl
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.protocol.update.UpdateProtocolServiceImpl
import br.all.application.question.repository.QuestionRepository
@@ -20,8 +19,7 @@ class ProtocolServicesConfiguration {
protocolRepository: ProtocolRepository,
systematicStudyRepository: SystematicStudyRepository,
credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
- ) = FindProtocolServiceImpl(protocolRepository, systematicStudyRepository, credentialsService, collaborationRepository)
+ ) = FindProtocolServiceImpl(protocolRepository, systematicStudyRepository, credentialsService)
@Bean
fun updateProtocolService(
@@ -29,31 +27,15 @@ class ProtocolServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
credentialsService: CredentialsService,
studyReviewRepository: StudyReviewRepository,
- scoreCalculatorService: ScoreCalculatorService,
- collaborationRepository: CollaborationRepository
- ) = UpdateProtocolServiceImpl(
- protocolRepository,
- systematicStudyRepository,
- credentialsService,
- studyReviewRepository,
- scoreCalculatorService,
- collaborationRepository
- )
+ scoreCalculatorService: ScoreCalculatorService
+ ) = UpdateProtocolServiceImpl(protocolRepository, systematicStudyRepository, credentialsService, studyReviewRepository, scoreCalculatorService)
@Bean
- fun getProtocolStageService(
+ fun findProtocolStageService(
protocolRepository: ProtocolRepository,
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
- questionRepository: QuestionRepository,
- collaborationRepository: CollaborationRepository
- ) = GetProtocolStageServiceImpl(
- protocolRepository,
- systematicStudyRepository,
- studyReviewRepository,
- credentialsService,
- questionRepository,
- collaborationRepository
- )
+ questionRepository: QuestionRepository
+ ) = FindProtocolStageServiceImpl(protocolRepository, systematicStudyRepository, studyReviewRepository, credentialsService, questionRepository)
}
diff --git a/web/src/main/kotlin/br/all/protocol/presenter/RestfulGetProtocolStagePresenter.kt b/web/src/main/kotlin/br/all/protocol/presenter/RestfulFindProtocolStagePresenter.kt
similarity index 76%
rename from web/src/main/kotlin/br/all/protocol/presenter/RestfulGetProtocolStagePresenter.kt
rename to web/src/main/kotlin/br/all/protocol/presenter/RestfulFindProtocolStagePresenter.kt
index 760cb5f3f..34132c31b 100644
--- a/web/src/main/kotlin/br/all/protocol/presenter/RestfulGetProtocolStagePresenter.kt
+++ b/web/src/main/kotlin/br/all/protocol/presenter/RestfulFindProtocolStagePresenter.kt
@@ -1,8 +1,8 @@
package br.all.protocol.presenter
-import br.all.application.protocol.find.GetProtocolStagePresenter
-import br.all.application.protocol.find.GetProtocolStageService.ResponseModel
-import br.all.application.protocol.find.GetProtocolStageService.ProtocolStage
+import br.all.application.protocol.find.FindProtocolStagePresenter
+import br.all.application.protocol.find.FindProtocolStageService.ResponseModel
+import br.all.application.protocol.find.FindProtocolStageService.ProtocolStage
import br.all.shared.error.createErrorResponseFrom
import br.all.utils.LinksFactory
import org.springframework.hateoas.RepresentationModel
@@ -10,9 +10,9 @@ import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import java.util.UUID
-class RestfulGetProtocolStagePresenter(
+class RestfulFindProtocolStagePresenter(
private val linksFactory: LinksFactory
-) : GetProtocolStagePresenter {
+) : FindProtocolStagePresenter {
var responseEntity: ResponseEntity<*>? = null
override fun prepareSuccessView(response: ResponseModel) {
diff --git a/web/src/main/kotlin/br/all/question/controller/QuestionServicesConfiguration.kt b/web/src/main/kotlin/br/all/question/controller/QuestionServicesConfiguration.kt
index 067374cc6..11e3dacd6 100644
--- a/web/src/main/kotlin/br/all/question/controller/QuestionServicesConfiguration.kt
+++ b/web/src/main/kotlin/br/all/question/controller/QuestionServicesConfiguration.kt
@@ -1,11 +1,12 @@
package br.all.question.controller
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.create.CreateQuestionServiceImpl
import br.all.application.question.find.FindQuestionServiceImpl
import br.all.application.question.findAll.FindAllBySystematicStudyIdServiceImpl
import br.all.application.question.repository.QuestionRepository
+import br.all.application.question.update.presenter.UpdateQuestionPresenter
import br.all.application.question.update.services.UpdateQuestionServiceImpl
+import br.all.application.user.credentials.ResearcherCredentialsService
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.user.CredentialsService
import br.all.domain.services.UuidGeneratorService
@@ -20,42 +21,37 @@ class QuestionServicesConfiguration {
questionRepository: QuestionRepository,
credentialsService: CredentialsService,
idGenerator: UuidGeneratorService,
- collaborationRepository: CollaborationRepository
) = CreateQuestionServiceImpl(
systematicStudyRepository,
questionRepository,
idGenerator,
- credentialsService,
- collaborationRepository
+ credentialsService
)
@Bean
fun findQuestionService(
systematicStudyRepository: SystematicStudyRepository,
questionRepository: QuestionRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindQuestionServiceImpl(
- systematicStudyRepository, questionRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, questionRepository, credentialsService
)
@Bean
fun findAllBySystematicStudyIdService(
systematicStudyRepository: SystematicStudyRepository,
questionRepository: QuestionRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindAllBySystematicStudyIdServiceImpl(
- systematicStudyRepository, questionRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, questionRepository, credentialsService
)
@Bean
fun updateQuestionService(
systematicStudyRepository: SystematicStudyRepository,
questionRepository: QuestionRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = UpdateQuestionServiceImpl(
- systematicStudyRepository, questionRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, questionRepository, credentialsService
)
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/report/controller/ReportControllerConfiguration.kt b/web/src/main/kotlin/br/all/report/controller/ReportControllerConfiguration.kt
index ff9bd1961..2edc0fc1c 100644
--- a/web/src/main/kotlin/br/all/report/controller/ReportControllerConfiguration.kt
+++ b/web/src/main/kotlin/br/all/report/controller/ReportControllerConfiguration.kt
@@ -1,6 +1,5 @@
package br.all.report.controller
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.question.repository.QuestionRepository
import br.all.application.report.find.service.*
@@ -36,13 +35,11 @@ class ReportControllerConfiguration {
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
systematicStudyRepository: SystematicStudyRepository,
- collaborationRepository: CollaborationRepository
) = IncludedStudiesAnswersServiceImpl(
questionRepository,
studyReviewRepository,
credentialsService,
systematicStudyRepository,
- collaborationRepository
)
@Bean
@@ -50,14 +47,12 @@ class ReportControllerConfiguration {
protocolRepository: ProtocolRepository,
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
- systematicStudyRepository: SystematicStudyRepository,
- collaborationRepository: CollaborationRepository
+ systematicStudyRepository: SystematicStudyRepository
) = FindCriteriaServiceImpl(
protocolRepository,
systematicStudyRepository,
credentialsService,
studyReviewRepository,
- collaborationRepository
)
@Bean
@@ -66,13 +61,11 @@ class ReportControllerConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
) = FindSourceServiceImpl(
protocolRepository,
systematicStudyRepository,
studyReviewRepository,
credentialsService,
- collaborationRepository
)
@Bean
@@ -80,12 +73,10 @@ class ReportControllerConfiguration {
credentialsService: CredentialsService,
studyReviewRepository: StudyReviewRepository,
systematicStudyRepository: SystematicStudyRepository,
- collaborationRepository: CollaborationRepository
) = AuthorNetworkServiceImpl(
credentialsService,
studyReviewRepository,
systematicStudyRepository,
- collaborationRepository
)
@Bean
@@ -93,12 +84,10 @@ class ReportControllerConfiguration {
credentialsService: CredentialsService,
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
- collaborationRepository: CollaborationRepository
) = FindKeywordsServiceImpl(
systematicStudyRepository,
studyReviewRepository,
- credentialsService,
- collaborationRepository
+ credentialsService
)
@Bean
@@ -107,13 +96,11 @@ class ReportControllerConfiguration {
systematicStudyRepository: SystematicStudyRepository,
formatterFactoryService: FormatterFactoryService,
protocolRepository: ProtocolRepository,
- collaborationRepository: CollaborationRepository
) = ExportProtocolServiceImpl(
credentialsService,
systematicStudyRepository,
formatterFactoryService,
- protocolRepository,
- collaborationRepository
+ protocolRepository
)
@Bean
@@ -121,12 +108,10 @@ class ReportControllerConfiguration {
credentialsService: CredentialsService,
studyReviewRepository: StudyReviewRepository,
systematicStudyRepository: SystematicStudyRepository,
- collaborationRepository: CollaborationRepository
) = FindStudiesByStageServiceImpl(
credentialsService,
studyReviewRepository,
systematicStudyRepository,
- collaborationRepository
)
@Bean
@@ -134,12 +119,10 @@ class ReportControllerConfiguration {
credentialsService: CredentialsService,
studyReviewRepository: StudyReviewRepository,
systematicStudyRepository: SystematicStudyRepository,
- collaborationRepository: CollaborationRepository
) = StudiesFunnelServiceImpl(
credentialsService,
studyReviewRepository,
systematicStudyRepository,
- collaborationRepository
)
@Bean
@@ -147,14 +130,12 @@ class ReportControllerConfiguration {
credentialsService: CredentialsService,
studyReviewRepository: StudyReviewRepository,
systematicStudyRepository: SystematicStudyRepository,
- questionRepository: QuestionRepository,
- collaborationRepository: CollaborationRepository
+ questionRepository: QuestionRepository
) = FindAnswerServiceImpl(
credentialsService,
studyReviewRepository,
systematicStudyRepository,
- questionRepository,
- collaborationRepository
+ questionRepository
)
@Bean
@@ -163,12 +144,10 @@ class ReportControllerConfiguration {
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
protocolRepository: ProtocolRepository,
- collaborationRepository: CollaborationRepository
) = FindStudyReviewCriteriaServiceImpl(
systematicStudyRepository,
studyReviewRepository,
credentialsService,
- protocolRepository,
- collaborationRepository
+ protocolRepository
)
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/review/controller/SystematicStudyServicesConfiguration.kt b/web/src/main/kotlin/br/all/review/controller/SystematicStudyServicesConfiguration.kt
index cfa3c20d8..61335937e 100644
--- a/web/src/main/kotlin/br/all/review/controller/SystematicStudyServicesConfiguration.kt
+++ b/web/src/main/kotlin/br/all/review/controller/SystematicStudyServicesConfiguration.kt
@@ -1,6 +1,5 @@
package br.all.review.controller
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.user.CredentialsService
import br.all.application.review.create.CreateSystematicStudyServiceImpl
@@ -20,13 +19,11 @@ class SystematicStudyServicesConfiguration {
protocolRepository: ProtocolRepository,
uuidGeneratorService: UuidGeneratorService,
credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
) = CreateSystematicStudyServiceImpl(
systematicStudyRepository,
protocolRepository,
uuidGeneratorService,
credentialsService,
- collaborationRepository,
)
@Bean
diff --git a/web/src/main/kotlin/br/all/review/requests/PostRequest.kt b/web/src/main/kotlin/br/all/review/requests/PostRequest.kt
index 9f66aca77..b617549f6 100644
--- a/web/src/main/kotlin/br/all/review/requests/PostRequest.kt
+++ b/web/src/main/kotlin/br/all/review/requests/PostRequest.kt
@@ -9,5 +9,5 @@ data class PostRequest(
val collaborators: Set,
) {
fun toCreateRequestModel(userId: UUID) =
- RequestModel(userId, title, description)
+ RequestModel(userId, title, description, collaborators)
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/search/controller/SearchSessionServicesConfiguration.kt b/web/src/main/kotlin/br/all/search/controller/SearchSessionServicesConfiguration.kt
index 9c482d214..14412925a 100644
--- a/web/src/main/kotlin/br/all/search/controller/SearchSessionServicesConfiguration.kt
+++ b/web/src/main/kotlin/br/all/search/controller/SearchSessionServicesConfiguration.kt
@@ -1,6 +1,5 @@
package br.all.search.controller
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.protocol.repository.ProtocolRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.search.create.CreateSearchSessionServiceImpl
@@ -49,7 +48,6 @@ class SearchSessionServicesConfiguration {
protocolRepository: ProtocolRepository,
scoreCalculatorService: ScoreCalculatorService,
reviewSimilarityService: ReviewSimilarityService,
- collaborationRepository: CollaborationRepository
) = PatchSearchSessionServiceImpl(
systematicStudyRepository,
searchSessionRepository,
@@ -58,8 +56,7 @@ class SearchSessionServicesConfiguration {
converterFactoryService,
protocolRepository,
scoreCalculatorService,
- reviewSimilarityService,
- collaborationRepository
+ reviewSimilarityService
)
@Bean
@@ -72,8 +69,7 @@ class SearchSessionServicesConfiguration {
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
scoreCalculatorService: ScoreCalculatorService,
- reviewSimilarityService: ReviewSimilarityService,
- collaborationRepository: CollaborationRepository
+ reviewSimilarityService: ReviewSimilarityService
) = CreateSearchSessionServiceImpl(
searchSessionRepository,
systematicStudyRepository,
@@ -83,64 +79,56 @@ class SearchSessionServicesConfiguration {
studyReviewRepository,
credentialsService,
scoreCalculatorService,
- reviewSimilarityService,
- collaborationRepository
+ reviewSimilarityService
)
@Bean
fun findSearchSession(
searchSessionRepository: SearchSessionRepository,
systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindSearchSessionServiceImpl (
systematicStudyRepository,
searchSessionRepository,
- credentialsService,
- collaborationRepository
+ credentialsService
)
@Bean
fun findAllSessionService(
searchSessionRepository: SearchSessionRepository,
systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindAllSearchSessionsServiceImpl (
- systematicStudyRepository, searchSessionRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, searchSessionRepository, credentialsService
)
@Bean
fun findAllSearchSessionsBySourceService(
searchSessionRepository: SearchSessionRepository,
systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindAllSearchSessionsBySourceServiceImpl (
- systematicStudyRepository, searchSessionRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, searchSessionRepository, credentialsService
)
@Bean
fun updateSessionService(
searchSessionRepository: SearchSessionRepository,
systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = UpdateSearchSessionServiceImpl (
- systematicStudyRepository, searchSessionRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, searchSessionRepository, credentialsService
)
@Bean
fun deleteSearchSessionService(
credentialsService: CredentialsService,
searchSessionRepository: SearchSessionRepository,
- systematicStudyRepository: SystematicStudyRepository,
- collaborationRepository: CollaborationRepository
+ systematicStudyRepository: SystematicStudyRepository
) = DeleteSearchSessionServiceImpl(
systematicStudyRepository,
searchSessionRepository,
- credentialsService,
- collaborationRepository
+ credentialsService
)
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/security/config/JwtAuthenticationFilter.kt b/web/src/main/kotlin/br/all/security/config/JwtAuthenticationFilter.kt
index e8988bf86..a1b181363 100644
--- a/web/src/main/kotlin/br/all/security/config/JwtAuthenticationFilter.kt
+++ b/web/src/main/kotlin/br/all/security/config/JwtAuthenticationFilter.kt
@@ -21,7 +21,7 @@ class JwtAuthenticationFilter(
) : OncePerRequestFilter() {
private val matchersToSkip: List = listOf(
- AntPathRequestMatcher("/api/v1/user"),
+ AntPathRequestMatcher("/api/v1/user", "POST"),
AntPathRequestMatcher("/api/v1/auth/"),
AntPathRequestMatcher("/api/v1/auth/logout/"),
AntPathRequestMatcher("/webjars/**"),
diff --git a/web/src/main/kotlin/br/all/security/config/SecurityConfiguration.kt b/web/src/main/kotlin/br/all/security/config/SecurityConfiguration.kt
index 9f373a709..06d34bc97 100644
--- a/web/src/main/kotlin/br/all/security/config/SecurityConfiguration.kt
+++ b/web/src/main/kotlin/br/all/security/config/SecurityConfiguration.kt
@@ -44,6 +44,7 @@ class SecurityConfiguration(
"/webjars/**"
).permitAll()
.requestMatchers(HttpMethod.POST, "/api/v1/user").permitAll()
+ .requestMatchers(HttpMethod.GET, "/api/v1/user").authenticated()
.anyRequest().fullyAuthenticated()
}
diff --git a/web/src/main/kotlin/br/all/security/service/AuthenticationInfoService.kt b/web/src/main/kotlin/br/all/security/service/AuthenticationInfoService.kt
index d0e17a1f6..98c10eece 100644
--- a/web/src/main/kotlin/br/all/security/service/AuthenticationInfoService.kt
+++ b/web/src/main/kotlin/br/all/security/service/AuthenticationInfoService.kt
@@ -1,10 +1,8 @@
package br.all.security.service
-import br.all.application.shared.exceptions.UnauthorizedUserException
-import org.springframework.http.HttpStatus
+import br.all.domain.shared.exception.UnauthorizedUserException
import org.springframework.security.core.context.SecurityContextHolder
import org.springframework.stereotype.Service
-import org.springframework.web.server.ResponseStatusException
import java.util.*
@Service
diff --git a/web/src/main/kotlin/br/all/security/service/AuthenticationService.kt b/web/src/main/kotlin/br/all/security/service/AuthenticationService.kt
index 9af5d9942..e52ffc323 100644
--- a/web/src/main/kotlin/br/all/security/service/AuthenticationService.kt
+++ b/web/src/main/kotlin/br/all/security/service/AuthenticationService.kt
@@ -1,6 +1,6 @@
package br.all.security.service
-import br.all.application.shared.exceptions.UnauthorizedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
import br.all.application.user.find.LoadAccountCredentialsService
import br.all.application.user.update.UpdateRefreshTokenService
import br.all.application.user.update.UpdateRefreshTokenService.RequestModel
diff --git a/web/src/main/kotlin/br/all/shared/error/ErrorResponseEntityFactory.kt b/web/src/main/kotlin/br/all/shared/error/ErrorResponseEntityFactory.kt
index 6d283101b..9ec454572 100644
--- a/web/src/main/kotlin/br/all/shared/error/ErrorResponseEntityFactory.kt
+++ b/web/src/main/kotlin/br/all/shared/error/ErrorResponseEntityFactory.kt
@@ -1,9 +1,9 @@
package br.all.shared.error
-import br.all.application.shared.exceptions.EntityNotFoundException
-import br.all.application.shared.exceptions.UnauthenticatedUserException
-import br.all.application.shared.exceptions.UnauthorizedUserException
-import br.all.application.shared.exceptions.UniquenessViolationException
+import br.all.domain.shared.exception.EntityNotFoundException
+import br.all.domain.shared.exception.UnauthenticatedUserException
+import br.all.domain.shared.exception.UnauthorizedUserException
+import br.all.domain.shared.exception.UniquenessViolationException
import org.springframework.http.HttpStatus.*
import org.springframework.http.ResponseEntity
diff --git a/web/src/main/kotlin/br/all/study/controller/StudyReviewController.kt b/web/src/main/kotlin/br/all/study/controller/StudyReviewController.kt
index f2005b0aa..3ccce027c 100644
--- a/web/src/main/kotlin/br/all/study/controller/StudyReviewController.kt
+++ b/web/src/main/kotlin/br/all/study/controller/StudyReviewController.kt
@@ -40,7 +40,6 @@ class StudyReviewController(
private val updateReadingPriorityService: UpdateStudyReviewPriorityService,
private val removeCriteriaService: RemoveCriteriaService,
private val markAsDuplicatedService: MarkAsDuplicatedService,
- private val answerQuestionService: AnswerQuestionService,
private val batchAnswerQuestionService: BatchAnswerQuestionService,
private val authenticationInfoService: AuthenticationInfoService,
private val linksFactory: LinksFactory
@@ -95,10 +94,13 @@ class StudyReviewController(
)
fun findAllStudyReviews(
@PathVariable systematicStudy: UUID,
+ @RequestParam("page", required = false, defaultValue = "0") page: Int,
+ @RequestParam("size", required = false, defaultValue = "20") size: Int,
+ @RequestParam("sort", required = false, defaultValue = "id,asc") sort: String,
): ResponseEntity<*> {
val presenter = RestfulFindAllStudyReviewsPresenter(linksFactory)
val userId = authenticationInfoService.getAuthenticatedUserId()
- val request = FindAllStudyReviewsService.RequestModel(userId, systematicStudy)
+ val request = FindAllStudyReviewsService.RequestModel(userId, systematicStudy, page, size, sort)
findAllService.findAllFromReview(presenter, request)
return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
}
@@ -368,129 +370,11 @@ class StudyReviewController(
return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
}
- @PatchMapping("/study-review/{studyReview}/riskOfBias-answer")
- @Operation(summary = "Update the answer of a risk of bias question")
+ @PatchMapping("/study-review/{studyReview}/batch-answer-question")
+ @Operation(summary = "Update a batch of answers for both rob and/or extraction questions")
@ApiResponses(
value = [
- ApiResponse(responseCode = "200", description = "Success updating answer to risk of bias question",
- content = [Content(
- mediaType = "application/json",
- schema = Schema(implementation = AnswerQuestionService.ResponseModel::class)
- )]
- ),
- ApiResponse(
- responseCode = "400",
- description = "Fail updating answer to risk of bias question",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ApiResponse(
- responseCode = "401",
- description = "Fail updating answer to risk of bias question - unauthenticated user",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ApiResponse(
- responseCode = "403",
- description = "Fail updating answer to risk of bias question - unauthorized user",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ]
- )
- fun riskOfBiasAnswer(
- @PathVariable systematicStudy: UUID,
- @PathVariable studyReview: Long,
- @RequestBody patchRequest: PatchAnswerQuestionStudyReviewRequest<*>,
- ) : ResponseEntity<*> {
- val presenter = RestfulAnswerQuestionPresenter(linksFactory)
- val userId = authenticationInfoService.getAuthenticatedUserId()
- val request = patchRequest.toRequestModel(userId, systematicStudy, studyReview)
- answerQuestionService.answerQuestion(presenter, request, context = "ROB")
- return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
- }
-
- @PatchMapping("/study-review/{studyReview}/extraction-answer")
- @Operation(summary = "Update the answer of a extraction question")
- @ApiResponses(
- value = [
- ApiResponse(responseCode = "200", description = "Success updating answer to extraction question",
- content = [Content(
- mediaType = "application/json",
- schema = Schema(implementation = AnswerQuestionService.ResponseModel::class)
- )]
- ),
- ApiResponse(
- responseCode = "400",
- description = "Fail updating answer to extraction question",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ApiResponse(
- responseCode = "401",
- description = "Fail updating answer to extraction question - unauthenticated user",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ApiResponse(
- responseCode = "403",
- description = "Fail updating answer to extraction question - unauthorized user",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ]
- )
- fun extractionAnswer(
- @PathVariable systematicStudy: UUID,
- @PathVariable studyReview: Long,
- @RequestBody patchRequest: PatchAnswerQuestionStudyReviewRequest<*>,
- ) : ResponseEntity<*> {
- val presenter = RestfulAnswerQuestionPresenter(linksFactory)
- val userId = authenticationInfoService.getAuthenticatedUserId()
- val request = patchRequest.toRequestModel(userId, systematicStudy, studyReview)
- answerQuestionService.answerQuestion(presenter, request, context = "EXTRACTION")
- return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
- }
-
- @PatchMapping("/study-review/{studyReview}/batch-riskOfBias-answers")
- @Operation(summary = "Update a batch of answers for risk of bias questions")
- @ApiResponses(
- value = [
- ApiResponse(responseCode = "200", description = "Success updating a batch of answers to risk of bias questions",
- content = [Content(
- mediaType = "application/json",
- schema = Schema(implementation = BatchAnswerQuestionService.ResponseModel::class)
- )]
- ),
- ApiResponse(
- responseCode = "400",
- description = "Fail updating answers - invalid payload",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ApiResponse(
- responseCode = "401",
- description = "Fail updating answers - unauthenticated user",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ApiResponse(
- responseCode = "403",
- description = "Fail updating answers - unauthorized user",
- content = [Content(schema = Schema(hidden = true))]
- ),
- ]
- )
- fun batchRiskOfBiasAnswers(
- @PathVariable systematicStudy: UUID,
- @PathVariable studyReview: Long,
- @RequestBody requestBody: PatchBatchAnswerQuestionStudyReviewRequest
- ): ResponseEntity<*> {
- val presenter = RestfulBatchAnswerQuestionPresenter(linksFactory)
- val userId = authenticationInfoService.getAuthenticatedUserId()
- val request = requestBody.toRequestModel(userId, systematicStudy, studyReview)
-
- batchAnswerQuestionService.batchAnswerQuestion(presenter, request, "ROB")
- return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
- }
-
- @PatchMapping("/study-review/{studyReview}/batch-extraction-answers")
- @Operation(summary = "Update a batch of answers for extraction questions")
- @ApiResponses(
- value = [
- ApiResponse(responseCode = "200", description = "Success updating a batch of answers to extraction questions",
+ ApiResponse(responseCode = "200", description = "Success updating a batch of answers",
content = [Content(
mediaType = "application/json",
schema = Schema(implementation = BatchAnswerQuestionService.ResponseModel::class)
@@ -513,7 +397,7 @@ class StudyReviewController(
),
]
)
- fun batchExtractionAnswers(
+ fun batchAnswerQuestions(
@PathVariable systematicStudy: UUID,
@PathVariable studyReview: Long,
@RequestBody requestBody: PatchBatchAnswerQuestionStudyReviewRequest
@@ -522,7 +406,7 @@ class StudyReviewController(
val userId = authenticationInfoService.getAuthenticatedUserId()
val request = requestBody.toRequestModel(userId, systematicStudy, studyReview)
- batchAnswerQuestionService.batchAnswerQuestion(presenter, request, "EXTRACTION")
+ batchAnswerQuestionService.batchAnswerQuestion(presenter, request)
return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
}
diff --git a/web/src/main/kotlin/br/all/study/controller/StudyReviewServicesConfiguration.kt b/web/src/main/kotlin/br/all/study/controller/StudyReviewServicesConfiguration.kt
index 42b5c6f66..54d9e3f2d 100644
--- a/web/src/main/kotlin/br/all/study/controller/StudyReviewServicesConfiguration.kt
+++ b/web/src/main/kotlin/br/all/study/controller/StudyReviewServicesConfiguration.kt
@@ -1,6 +1,5 @@
package br.all.study.controller
-import br.all.application.collaboration.repository.CollaborationRepository
import br.all.application.question.repository.QuestionRepository
import br.all.application.review.repository.SystematicStudyRepository
import br.all.application.study.create.CreateStudyReviewServiceImpl
@@ -24,10 +23,9 @@ class StudyReviewServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
- idGenerator: IdGeneratorService,
- collaborationRepository: CollaborationRepository
+ idGenerator: IdGeneratorService
) = CreateStudyReviewServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, idGenerator, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService, idGenerator
)
@Bean
@@ -35,9 +33,8 @@ class StudyReviewServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
) = UpdateStudyReviewServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService,
)
@Bean
@@ -45,10 +42,9 @@ class StudyReviewServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
findAllStudyReviewsPresenter: FindAllStudyReviewsPresenter,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindAllStudyReviewsServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
@@ -57,40 +53,36 @@ class StudyReviewServicesConfiguration {
studyReviewRepository: StudyReviewRepository,
//protocolRepository: ProtocolRepository,
findAllStudyReviewsBySourcePresenter: FindAllStudyReviewsBySourcePresenter,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindAllStudyReviewsBySourceServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
fun findAllReviewBySessionService(
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindAllStudyReviewsBySessionServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
fun findReviewService(
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
findStudyReviewPresenter: FindStudyReviewPresenter,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindStudyReviewServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
fun findAllByAuthorService(
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = FindAllStudyReviewsByAuthorServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@@ -99,10 +91,9 @@ class StudyReviewServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
updateStudyReviewStatusPresenter: UpdateStudyReviewStatusPresenter,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = UpdateStudyReviewSelectionService(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
@@ -110,10 +101,9 @@ class StudyReviewServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
updateStudyReviewStatusPresenter: UpdateStudyReviewStatusPresenter,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = UpdateStudyReviewExtractionService(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
@@ -121,10 +111,9 @@ class StudyReviewServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
updateStudyReviewStatusPresenter: UpdateStudyReviewStatusPresenter,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = UpdateStudyReviewPriorityService(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
@@ -132,25 +121,9 @@ class StudyReviewServicesConfiguration {
systematicStudyRepository: SystematicStudyRepository,
studyReviewRepository: StudyReviewRepository,
updateStudyReviewStatusPresenter: UpdateStudyReviewStatusPresenter,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = MarkAsDuplicatedServiceImpl(
- systematicStudyRepository, studyReviewRepository, credentialsService, collaborationRepository
- )
-
- @Bean
- fun answerQuestionService(
- studyReviewRepository: StudyReviewRepository,
- questionRepository: QuestionRepository,
- systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
- ) = AnswerQuestionImpl(
- studyReviewRepository,
- questionRepository,
- systematicStudyRepository,
- credentialsService,
- collaborationRepository
+ systematicStudyRepository, studyReviewRepository, credentialsService
)
@Bean
@@ -158,14 +131,12 @@ class StudyReviewServicesConfiguration {
studyReviewRepository: StudyReviewRepository,
questionRepository: QuestionRepository,
systematicStudyRepository: SystematicStudyRepository,
- credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
+ credentialsService: CredentialsService
) = BatchAnswerQuestionServiceImpl(
studyReviewRepository,
questionRepository,
systematicStudyRepository,
- credentialsService,
- collaborationRepository
+ credentialsService
)
@Bean
@@ -173,11 +144,9 @@ class StudyReviewServicesConfiguration {
studyReviewRepository: StudyReviewRepository,
systematicStudyRepository: SystematicStudyRepository,
credentialsService: CredentialsService,
- collaborationRepository: CollaborationRepository
) = RemoveCriteriaServiceImpl(
studyReviewRepository,
systematicStudyRepository,
- credentialsService,
- collaborationRepository
+ credentialsService
)
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/study/presenter/RestfulAnswerQuestionPresenter.kt b/web/src/main/kotlin/br/all/study/presenter/RestfulAnswerQuestionPresenter.kt
deleted file mode 100644
index 413c7810c..000000000
--- a/web/src/main/kotlin/br/all/study/presenter/RestfulAnswerQuestionPresenter.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package br.all.study.presenter
-
-import br.all.application.study.update.interfaces.AnswerQuestionPresenter
-import br.all.application.study.update.interfaces.AnswerQuestionService
-import br.all.shared.error.createErrorResponseFrom
-import br.all.utils.LinksFactory
-import org.springframework.hateoas.RepresentationModel
-import org.springframework.http.HttpStatus
-import org.springframework.http.ResponseEntity
-import java.util.*
-
-class RestfulAnswerQuestionPresenter(
- private val linksFactory: LinksFactory,
-): AnswerQuestionPresenter {
- var responseEntity: ResponseEntity<*>?= null
-
- override fun prepareSuccessView(response: AnswerQuestionService.ResponseModel) {
- val viewModel = ViewModel(response.userId, response.systematicStudyId, response.studyReviewId)
-
- val link = linksFactory.findStudy(response.systematicStudyId, response.studyReviewId)
- viewModel.add(link)
-
- responseEntity = ResponseEntity.status(HttpStatus.OK).body(viewModel)
- }
-
- override fun prepareFailView(throwable: Throwable) = run { responseEntity = createErrorResponseFrom(throwable) }
-
- override fun isDone() = responseEntity != null
-
- data class ViewModel(
- val researcherId: UUID,
- val systematicStudyId: UUID,
- val studyReviewId: Long,
- ): RepresentationModel()
-}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/study/presenter/RestfulFindAllStudyReviewsPresenter.kt b/web/src/main/kotlin/br/all/study/presenter/RestfulFindAllStudyReviewsPresenter.kt
index 6aab812d7..859660342 100644
--- a/web/src/main/kotlin/br/all/study/presenter/RestfulFindAllStudyReviewsPresenter.kt
+++ b/web/src/main/kotlin/br/all/study/presenter/RestfulFindAllStudyReviewsPresenter.kt
@@ -19,9 +19,31 @@ class RestfulFindAllStudyReviewsPresenter(
var responseEntity: ResponseEntity<*>? = null
override fun prepareSuccessView(response: ResponseModel) {
- val restfulResponse = ViewModel(response.systematicStudyId, response.studyReviews.size, response.studyReviews)
+ val restfulResponse = ViewModel(
+ systematicStudyId = response.systematicStudyId,
+ size = response.studyReviews.size,
+ studyReviews = response.studyReviews,
+ page = response.page,
+ totalElements = response.totalElements,
+ totalPages = response.totalPages
+ )
- val selfRef = linksFactory.findAllStudies(response.systematicStudyId)
+ val selfRef = linksFactory.findAllStudies(response.systematicStudyId, response.page, response.size)
+
+ // Add pagination links
+ if (response.totalPages > 0) {
+ restfulResponse.add(linksFactory.findAllStudiesFirstPage(response.systematicStudyId, response.size))
+ restfulResponse.add(linksFactory.findAllStudiesLastPage(response.systematicStudyId, response.totalPages, response.size))
+
+ if (response.page < response.totalPages - 1) {
+ restfulResponse.add(linksFactory.findAllStudiesNextPage(response.systematicStudyId, response.page, response.size))
+ }
+
+ if (response.page > 0) {
+ restfulResponse.add(linksFactory.findAllStudiesPrevPage(response.systematicStudyId, response.page, response.size))
+ }
+ }
+
val sources = getSources(response.studyReviews)
for (source in sources) {
restfulResponse.add(linksFactory.findAllStudiesBySource(response.systematicStudyId, source))
@@ -42,5 +64,8 @@ class RestfulFindAllStudyReviewsPresenter(
val systematicStudyId : UUID,
val size: Int,
val studyReviews: List,
+ val page: Int,
+ val totalElements: Long,
+ val totalPages: Int
) : RepresentationModel()
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/study/requests/PatchAnswerQuestionStudyReviewRequest.kt b/web/src/main/kotlin/br/all/study/requests/PatchAnswerQuestionStudyReviewRequest.kt
deleted file mode 100644
index 4d39a56a1..000000000
--- a/web/src/main/kotlin/br/all/study/requests/PatchAnswerQuestionStudyReviewRequest.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package br.all.study.requests
-
-import br.all.application.study.update.interfaces.AnswerQuestionService
-import java.util.*
-
-class PatchAnswerQuestionStudyReviewRequest(
- val questionId: UUID,
- val type: String,
- val answer: T
-) {
- fun toRequestModel(userId: UUID, systematicStudyId: UUID, studyReviewId: Long)
- = AnswerQuestionService.RequestModel(
- userId,
- systematicStudyId,
- studyReviewId,
- questionId,
- type,
- answer
- )
-}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/user/controller/UserAccountConfiguration.kt b/web/src/main/kotlin/br/all/user/controller/UserAccountConfiguration.kt
index b5113266f..44d088719 100644
--- a/web/src/main/kotlin/br/all/user/controller/UserAccountConfiguration.kt
+++ b/web/src/main/kotlin/br/all/user/controller/UserAccountConfiguration.kt
@@ -1,6 +1,7 @@
package br.all.user.controller
import br.all.application.user.create.RegisterUserAccountServiceImpl
+import br.all.application.user.find.RetrieveUserProfileServiceImpl
import br.all.application.user.repository.UserAccountRepository
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
@@ -10,4 +11,7 @@ class UserAccountConfiguration {
@Bean
fun registerUser(repository: UserAccountRepository) = RegisterUserAccountServiceImpl(repository)
+
+ @Bean
+ fun retrieveUserProfile(repository: UserAccountRepository) = RetrieveUserProfileServiceImpl(repository)
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/user/controller/UserAccountController.kt b/web/src/main/kotlin/br/all/user/controller/UserAccountController.kt
index e5973fa04..3919eaef8 100644
--- a/web/src/main/kotlin/br/all/user/controller/UserAccountController.kt
+++ b/web/src/main/kotlin/br/all/user/controller/UserAccountController.kt
@@ -3,7 +3,10 @@ package br.all.user.controller
import br.all.application.user.CredentialsService
import br.all.application.user.create.RegisterUserAccountService
import br.all.application.user.create.RegisterUserAccountService.RequestModel
-import br.all.user.presenter.RestfullRegisterUserAccountPresenter
+import br.all.application.user.find.RetrieveUserProfileService
+import br.all.security.service.AuthenticationInfoService
+import br.all.user.presenter.RestfulRegisterUserAccountPresenter
+import br.all.user.presenter.RestfulRetrieveUserProfilePresenter
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.media.Content
import io.swagger.v3.oas.annotations.media.Schema
@@ -12,6 +15,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.security.crypto.password.PasswordEncoder
+import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
@@ -21,7 +25,9 @@ import org.springframework.web.bind.annotation.RestController
@RequestMapping("api/v1/user")
class UserAccountController(
private val registerUserAccountService: RegisterUserAccountService,
- private val encoder: PasswordEncoder
+ private val encoder: PasswordEncoder,
+ private val retrieveUserProfileService: RetrieveUserProfileService,
+ private val authenticationInfoService: AuthenticationInfoService
) {
@PostMapping
@@ -49,9 +55,46 @@ class UserAccountController(
]
)
fun registerUser(@RequestBody request: RequestModel): ResponseEntity<*> {
- val presenter = RestfullRegisterUserAccountPresenter()
+ val presenter = RestfulRegisterUserAccountPresenter()
val encodedPasswordRequest = request.copy(password = encoder.encode(request.password))
registerUserAccountService.register(presenter, encodedPasswordRequest)
return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
}
+
+ @GetMapping("/profile")
+ @Operation(summary = "Retrieve public information of a user")
+ @ApiResponses(
+ value = [
+ ApiResponse(
+ responseCode = "200",
+ description = "Success retrieving user profile",
+ content = [Content(
+ mediaType = "application/json",
+ schema = Schema(implementation = RetrieveUserProfileService.ResponseModel::class)
+ )]
+ ),
+ ApiResponse(
+ responseCode = "401",
+ description = "Fail retrieving user profile - unauthenticated collaborator",
+ content = [Content(schema = Schema(hidden = true))]
+ ),
+ ApiResponse(
+ responseCode = "403",
+ description = "Fail retrieving user profile - unauthorized collaborator",
+ content = [Content(schema = Schema(hidden = true))]
+ ),
+ ApiResponse(
+ responseCode = "404",
+ description = "Fail retrieving user profile - nonexistent user",
+ content = [Content(schema = Schema(hidden = true))]
+ ),
+ ])
+ fun retrieveUserPublicData(): ResponseEntity<*> {
+ val presenter = RestfulRetrieveUserProfilePresenter()
+ val userId = authenticationInfoService.getAuthenticatedUserId()
+ val request = RetrieveUserProfileService.RequestModel(userId)
+
+ retrieveUserProfileService.retrieveData(presenter, request)
+ return presenter.responseEntity ?: ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR)
+ }
}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/user/presenter/RestfullRegisterUserAccountPresenter.kt b/web/src/main/kotlin/br/all/user/presenter/RestfulRegisterUserAccountPresenter.kt
similarity index 93%
rename from web/src/main/kotlin/br/all/user/presenter/RestfullRegisterUserAccountPresenter.kt
rename to web/src/main/kotlin/br/all/user/presenter/RestfulRegisterUserAccountPresenter.kt
index b42879b01..03f83317a 100644
--- a/web/src/main/kotlin/br/all/user/presenter/RestfullRegisterUserAccountPresenter.kt
+++ b/web/src/main/kotlin/br/all/user/presenter/RestfulRegisterUserAccountPresenter.kt
@@ -9,7 +9,7 @@ import org.springframework.http.ResponseEntity
import org.springframework.http.ResponseEntity.status
import java.util.*
-class RestfullRegisterUserAccountPresenter : RegisterUserAccountPresenter {
+class RestfulRegisterUserAccountPresenter : RegisterUserAccountPresenter {
var responseEntity: ResponseEntity<*>? = null
diff --git a/web/src/main/kotlin/br/all/user/presenter/RestfulRetrieveUserProfilePresenter.kt b/web/src/main/kotlin/br/all/user/presenter/RestfulRetrieveUserProfilePresenter.kt
new file mode 100644
index 000000000..9e3fc3156
--- /dev/null
+++ b/web/src/main/kotlin/br/all/user/presenter/RestfulRetrieveUserProfilePresenter.kt
@@ -0,0 +1,39 @@
+package br.all.user.presenter
+
+import br.all.application.user.find.RetrieveUserProfileService.ResponseModel
+import br.all.application.user.find.RetrieveUserProfilePresenter
+import br.all.shared.error.createErrorResponseFrom
+import org.springframework.hateoas.RepresentationModel
+import org.springframework.http.ResponseEntity
+import org.springframework.http.ResponseEntity.ok
+import java.util.*
+
+class RestfulRetrieveUserProfilePresenter : RetrieveUserProfilePresenter {
+
+ var responseEntity: ResponseEntity<*>? = null
+
+ override fun prepareSuccessView(response: ResponseModel) {
+ val restfulResponse = ViewModel(
+ response.userId,
+ response.username,
+ response.email,
+ response.affiliation,
+ response.country,
+ response.authorities
+ )
+ responseEntity = ok(restfulResponse)
+ }
+
+ override fun prepareFailView(throwable: Throwable) = run { responseEntity = createErrorResponseFrom(throwable) }
+
+ override fun isDone() = responseEntity != null
+
+ private data class ViewModel(
+ val userId: UUID,
+ val username: String,
+ val email: String,
+ val affiliation: String,
+ val country: String,
+ val authorities: Set
+ ) : RepresentationModel()
+}
\ No newline at end of file
diff --git a/web/src/main/kotlin/br/all/utils/LinksFactory.kt b/web/src/main/kotlin/br/all/utils/LinksFactory.kt
index 205d590f6..e2ed2eb30 100644
--- a/web/src/main/kotlin/br/all/utils/LinksFactory.kt
+++ b/web/src/main/kotlin/br/all/utils/LinksFactory.kt
@@ -187,9 +187,21 @@ class LinksFactory {
findStudyReview(systematicStudyId, studyId)
}.withRel("find-study").withType("GET")
- fun findAllStudies(systematicStudyId: UUID): Link = linkTo {
- findAllStudyReviews(systematicStudyId)
+ fun findAllStudies(systematicStudyId: UUID, page: Int = 0, size: Int = 20, sort: String = "id,asc"): Link = linkTo {
+ findAllStudyReviews(systematicStudyId, page, size, sort)
}.withRel("find-all-studies").withType("GET")
+
+ fun findAllStudiesFirstPage(systematicStudyId: UUID, size: Int = 20, sort: String = "id,asc"): Link =
+ findAllStudies(systematicStudyId, 0, size, sort).withRel("first").withType("GET")
+
+ fun findAllStudiesLastPage(systematicStudyId: UUID, totalPages: Int, size: Int = 20, sort: String = "id,asc"): Link =
+ findAllStudies(systematicStudyId, totalPages - 1, size, sort).withRel("last").withType("GET")
+
+ fun findAllStudiesNextPage(systematicStudyId: UUID, currentPage: Int, size: Int = 20, sort: String = "id,asc"): Link =
+ findAllStudies(systematicStudyId, currentPage + 1, size, sort).withRel("next").withType("GET")
+
+ fun findAllStudiesPrevPage(systematicStudyId: UUID, currentPage: Int, size: Int = 20, sort: String = "id,asc"): Link =
+ findAllStudies(systematicStudyId, currentPage - 1, size, sort).withRel("prev").withType("GET")
fun findAllStudiesBySource(systematicStudyId: UUID, source: String): Link = linkTo {
findAllStudyReviewsBySource(systematicStudyId, source)
diff --git a/web/src/main/kotlin/br/all/utils/example/RegisterUserExampleService.kt b/web/src/main/kotlin/br/all/utils/example/RegisterUserExampleService.kt
index 13cd68ab6..8c61d6b1c 100644
--- a/web/src/main/kotlin/br/all/utils/example/RegisterUserExampleService.kt
+++ b/web/src/main/kotlin/br/all/utils/example/RegisterUserExampleService.kt
@@ -2,6 +2,7 @@ package br.all.utils.example
import br.all.application.user.repository.UserAccountRepository
import br.all.application.user.repository.toDto
+import br.all.domain.shared.user.Email
import br.all.domain.user.*
import org.springframework.stereotype.Service
import java.util.*
diff --git a/web/src/test/kotlin/br/all/protocol/controller/ProtocolControllerTest.kt b/web/src/test/kotlin/br/all/protocol/controller/ProtocolControllerTest.kt
index 05770fe0e..315c98db0 100644
--- a/web/src/test/kotlin/br/all/protocol/controller/ProtocolControllerTest.kt
+++ b/web/src/test/kotlin/br/all/protocol/controller/ProtocolControllerTest.kt
@@ -1,7 +1,6 @@
package br.all.protocol.controller
import br.all.application.protocol.repository.CriterionDto
-import br.all.infrastructure.collaboration.MongoCollaborationRepository
import br.all.infrastructure.protocol.MongoProtocolRepository
import br.all.infrastructure.review.MongoSystematicStudyRepository
import br.all.infrastructure.review.SystematicStudyDocument
@@ -30,7 +29,6 @@ import br.all.review.shared.TestDataFactory as SystematicStudyTestDataFactory
class ProtocolControllerTest(
@Autowired private val protocolRepository: MongoProtocolRepository,
@Autowired private val systematicStudyRepository: MongoSystematicStudyRepository,
- @Autowired val collaborationRepository: MongoCollaborationRepository,
@Autowired private val mockMvc: MockMvc,
@Autowired private val testHelperService: TestHelperService
) {
@@ -55,13 +53,6 @@ class ProtocolControllerTest(
collaborators = mutableSetOf(user.id)
)
systematicStudyRepository.save(systematicStudy)
- collaborationRepository.deleteAll()
- collaborationRepository.save(
- br.all.review.shared.TestDataFactory().createCollaborationDocument(
- systematicStudyId = systematicStudyId,
- researcherId = user.id
- )
- )
}
@AfterEach
@@ -77,7 +68,7 @@ class ProtocolControllerTest(
private fun putUrl(systematicStudyId: UUID = factory.protocol) =
"/systematic-study/$systematicStudyId/protocol"
- private fun getStage(systematicStudy: UUID = factory.protocol) =
+ private fun findStage(systematicStudy: UUID = factory.protocol) =
"/systematic-study/$systematicStudy/protocol/stage"
@Nested
@@ -276,7 +267,7 @@ class ProtocolControllerTest(
val document = factory.createProtocolDocument()
protocolRepository.save(document)
- mockMvc.perform(get(getStage())
+ mockMvc.perform(get(findStage())
.with(SecurityMockMvcRequestPostProcessors.user(user))
.contentType(MediaType.APPLICATION_JSON)
)
@@ -287,7 +278,7 @@ class ProtocolControllerTest(
@Test
fun `should return 404 when protocol does not exist`() {
- mockMvc.perform(get(getStage())
+ mockMvc.perform(get(findStage())
.with(SecurityMockMvcRequestPostProcessors.user(user))
.contentType(MediaType.APPLICATION_JSON)
)
@@ -298,12 +289,12 @@ class ProtocolControllerTest(
@Test
fun `should not authorize researchers that are not collaborators to get protocol stage`() {
- testHelperService.testForUnauthorizedUser(mockMvc, get(getStage()))
+ testHelperService.testForUnauthorizedUser(mockMvc, get(findStage()))
}
@Test
fun `should not allow unauthenticated users to get protocol stage`() {
- testHelperService.testForUnauthenticatedUser(mockMvc, get(getStage()))
+ testHelperService.testForUnauthenticatedUser(mockMvc, get(findStage()))
}
}
}
\ No newline at end of file
diff --git a/web/src/test/kotlin/br/all/question/controller/ExtractionQuestionControllerTest.kt b/web/src/test/kotlin/br/all/question/controller/ExtractionQuestionControllerTest.kt
index 677dec47a..f9b441db8 100644
--- a/web/src/test/kotlin/br/all/question/controller/ExtractionQuestionControllerTest.kt
+++ b/web/src/test/kotlin/br/all/question/controller/ExtractionQuestionControllerTest.kt
@@ -1,7 +1,6 @@
package br.all.question.controller
import br.all.domain.model.question.QuestionContextEnum
-import br.all.infrastructure.collaboration.MongoCollaborationRepository
import br.all.infrastructure.question.MongoQuestionRepository
import br.all.infrastructure.review.MongoSystematicStudyRepository
import br.all.question.utils.TestDataFactory
@@ -27,7 +26,6 @@ import java.util.*
class ExtractionQuestionControllerTest(
@Autowired val repository: MongoQuestionRepository,
@Autowired val systematicStudyRepository: MongoSystematicStudyRepository,
- @Autowired val collaborationRepository: MongoCollaborationRepository,
@Autowired val mockMvc: MockMvc,
@Autowired private val testHelperService: TestHelperService,
) {
@@ -51,13 +49,6 @@ class ExtractionQuestionControllerTest(
id = systematicStudyId,
owner = user.id,
))
- collaborationRepository.deleteAll()
- collaborationRepository.save(
- br.all.review.shared.TestDataFactory().createCollaborationDocument(
- systematicStudyId = systematicStudyId,
- researcherId = user.id
- )
- )
}
@AfterEach
diff --git a/web/src/test/kotlin/br/all/question/controller/RiskOfBiasQuestionControllerTest.kt b/web/src/test/kotlin/br/all/question/controller/RiskOfBiasQuestionControllerTest.kt
index 36255a232..2ea33c5e5 100644
--- a/web/src/test/kotlin/br/all/question/controller/RiskOfBiasQuestionControllerTest.kt
+++ b/web/src/test/kotlin/br/all/question/controller/RiskOfBiasQuestionControllerTest.kt
@@ -1,7 +1,6 @@
package br.all.question.controller
import br.all.domain.model.question.QuestionContextEnum
-import br.all.infrastructure.collaboration.MongoCollaborationRepository
import br.all.infrastructure.question.MongoQuestionRepository
import br.all.infrastructure.review.MongoSystematicStudyRepository
import br.all.question.utils.TestDataFactory
@@ -27,7 +26,6 @@ import java.util.*
class RiskOfBiasQuestionControllerTest(
@Autowired val repository: MongoQuestionRepository,
@Autowired val systematicStudyRepository: MongoSystematicStudyRepository,
- @Autowired val collaborationRepository: MongoCollaborationRepository,
@Autowired val mockMvc: MockMvc,
@Autowired private val testHelperService: TestHelperService,
) {
@@ -54,13 +52,6 @@ class RiskOfBiasQuestionControllerTest(
owner = user.id,
)
)
- collaborationRepository.deleteAll()
- collaborationRepository.save(
- br.all.review.shared.TestDataFactory().createCollaborationDocument(
- systematicStudyId = systematicStudyId,
- researcherId = user.id
- )
- )
}
@AfterEach
diff --git a/web/src/test/kotlin/br/all/report/controller/ReportControllerTest.kt b/web/src/test/kotlin/br/all/report/controller/ReportControllerTest.kt
index ca1004642..8c3cb88c4 100644
--- a/web/src/test/kotlin/br/all/report/controller/ReportControllerTest.kt
+++ b/web/src/test/kotlin/br/all/report/controller/ReportControllerTest.kt
@@ -1,7 +1,6 @@
package br.all.report.controller
import br.all.domain.model.question.QuestionContextEnum
-import br.all.infrastructure.collaboration.MongoCollaborationRepository
import br.all.infrastructure.protocol.MongoProtocolRepository
import br.all.infrastructure.question.MongoQuestionRepository
import br.all.infrastructure.question.QuestionDocument
@@ -38,7 +37,6 @@ class ReportControllerTest(
@Autowired private val systematicStudyRepository: MongoSystematicStudyRepository,
@Autowired private val questionRepository: MongoQuestionRepository,
@Autowired private val protocolRepository: MongoProtocolRepository,
- @Autowired private val collaborationRepository: MongoCollaborationRepository,
@Autowired private val mockMvc: MockMvc,
@Autowired private val testHelperService: TestHelperService
) {
@@ -86,13 +84,6 @@ class ReportControllerTest(
studyReviewRepository.save(studyReview)
systematicStudyRepository.save(systematicStudy)
- collaborationRepository.deleteAll()
- collaborationRepository.save(
- br.all.review.shared.TestDataFactory().createCollaborationDocument(
- systematicStudyId = systematicStudy.id,
- researcherId = user.id
- )
- )
}
@AfterEach
diff --git a/web/src/test/kotlin/br/all/review/controller/SystematicStudyControllerTest.kt b/web/src/test/kotlin/br/all/review/controller/SystematicStudyControllerTest.kt
index d2bb7e090..3a77db64e 100644
--- a/web/src/test/kotlin/br/all/review/controller/SystematicStudyControllerTest.kt
+++ b/web/src/test/kotlin/br/all/review/controller/SystematicStudyControllerTest.kt
@@ -1,20 +1,24 @@
package br.all.review.controller
-import br.all.infrastructure.collaboration.MongoCollaborationRepository
+import br.all.infrastructure.protocol.MongoProtocolRepository
import br.all.infrastructure.review.MongoSystematicStudyRepository
+import br.all.infrastructure.review.SystematicStudyDocument
import br.all.infrastructure.shared.toNullable
import br.all.review.shared.TestDataFactory
import br.all.security.service.ApplicationUser
import br.all.shared.TestHelperService
+import br.all.utils.example.CreateSearchSessionExampleService
import org.junit.jupiter.api.*
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource
+import org.mockito.Mockito
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.http.MediaType
import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors
+import org.springframework.test.context.bean.override.mockito.MockitoBean
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath
@@ -27,25 +31,24 @@ import java.util.*
@Tag("ControllerTest")
class SystematicStudyControllerTest(
@Autowired private val repository: MongoSystematicStudyRepository,
- @Autowired private val collaborationRepository: MongoCollaborationRepository,
@Autowired private val testHelperService: TestHelperService,
@Autowired private val mockMvc: MockMvc,
) {
private lateinit var factory: TestDataFactory
private lateinit var user: ApplicationUser
+ // This prevents the tests breaking
+ @MockitoBean
+ private lateinit var createSearchSessionExampleService: CreateSearchSessionExampleService
+
+ @MockitoBean
+ private lateinit var protocolRepository: MongoProtocolRepository
+
@BeforeEach
fun setUp() {
repository.deleteAll()
factory = TestDataFactory()
user = testHelperService.createApplicationUser()
- collaborationRepository.deleteAll()
- collaborationRepository.save(
- TestDataFactory().createCollaborationDocument(
- systematicStudyId = factory.systematicStudyId,
- researcherId = user.id
- )
- )
}
@AfterEach
@@ -95,6 +98,28 @@ class SystematicStudyControllerTest(
.andExpect(status().isBadRequest)
}
+ // This test should pass, but it doesn't.
+ // We are using a standalone MongoDB instance for our testing environment,
+ // which means that multi-document transactions are not supported.
+ // When @Transactional is used in an environment that doesn't support it,
+ // Spring doesn't throw an error, it simply becomes a no-op.
+ // The annotation is effectively ignored.
+ @Disabled
+ @Test
+ fun `should not save systematic study if protocol creation fails`(){
+ val json = factory.createValidPostRequest()
+
+ Mockito.`when`(protocolRepository.save(Mockito.any())).thenThrow(RuntimeException())
+
+ mockMvc.perform(
+ post(postUrl())
+ .with(SecurityMockMvcRequestPostProcessors.user(user))
+ .contentType(MediaType.APPLICATION_JSON).content(json)
+ ).andExpect(status().isBadRequest)
+
+ assertEquals(emptyList(), repository.findAll())
+ }
+
@Test
fun `should not create study when user is unauthorized`(){
testHelperService.testForUnauthorizedUser(mockMvc,
diff --git a/web/src/test/kotlin/br/all/review/shared/TestDataFactory.kt b/web/src/test/kotlin/br/all/review/shared/TestDataFactory.kt
index 0844021c1..bf5ded6e2 100644
--- a/web/src/test/kotlin/br/all/review/shared/TestDataFactory.kt
+++ b/web/src/test/kotlin/br/all/review/shared/TestDataFactory.kt
@@ -1,7 +1,5 @@
package br.all.review.shared
-import br.all.domain.model.review.SystematicStudyId
-import br.all.infrastructure.collaboration.CollaborationDocument
import br.all.infrastructure.review.SystematicStudyDocument
import io.github.serpro69.kfaker.Faker
import java.util.*
@@ -20,12 +18,6 @@ class TestDataFactory {
collaborators: MutableSet = mutableSetOf(),
) = SystematicStudyDocument(id, title, description, owner, collaborators.also { it.add(owner) }.toSet())
- fun createCollaborationDocument(
- id: UUID = UUID.randomUUID(),
- systematicStudyId: UUID = this.systematicStudyId,
- researcherId : UUID = this.ownerId
- ) = CollaborationDocument(id, systematicStudyId, researcherId, "ACTIVE", setOf("EDIT", "REVIEW_STUDIES", "VIEW"))
-
fun createValidPostRequest(
title: String = faker.book.title(),
description: String = faker.lorem.words(),
diff --git a/web/src/test/kotlin/br/all/search/controller/SearchSessionControllerTest.kt b/web/src/test/kotlin/br/all/search/controller/SearchSessionControllerTest.kt
index a36572077..1d3fe1a22 100644
--- a/web/src/test/kotlin/br/all/search/controller/SearchSessionControllerTest.kt
+++ b/web/src/test/kotlin/br/all/search/controller/SearchSessionControllerTest.kt
@@ -1,6 +1,5 @@
package br.all.search.controller
-import br.all.infrastructure.collaboration.MongoCollaborationRepository
import br.all.infrastructure.protocol.MongoProtocolRepository
import br.all.infrastructure.review.MongoSystematicStudyRepository
import br.all.infrastructure.search.MongoSearchSessionRepository
@@ -36,7 +35,6 @@ class SearchSessionControllerTest(
@Autowired val repository: MongoSearchSessionRepository,
@Autowired val systematicStudyRepository: MongoSystematicStudyRepository,
@Autowired val studyReviewRepository: MongoStudyReviewRepository,
- @Autowired val collaborationRepository: MongoCollaborationRepository,
@Autowired val protocolRepository: MongoProtocolRepository,
@Autowired val idService: StudyReviewIdGeneratorService,
@Autowired private val testHelperService: TestHelperService,
@@ -50,7 +48,7 @@ class SearchSessionControllerTest(
fun postUrl() = "/api/v1/systematic-study/$systematicStudyId/search-session"
- // fun patchUrl(sessionId: UUID) = "/api/v1/systematic-study/$systematicStudyId/patch-search-session/${sessionId}"
+ fun patchUrl(sessionId: UUID) = "/api/v1/systematic-study/$systematicStudyId/patch-search-session/${sessionId}"
fun findUrl(sessionId: UUID) =
"/api/v1/systematic-study/$systematicStudyId/search-session/${sessionId}"
fun findAllUrl() = "/api/v1/systematic-study/$systematicStudyId/search-session"
@@ -75,14 +73,6 @@ class SearchSessionControllerTest(
owner = user.id,
)
)
-
- collaborationRepository.deleteAll()
- collaborationRepository.save(
- br.all.review.shared.TestDataFactory().createCollaborationDocument(
- systematicStudyId = systematicStudyId,
- researcherId = user.id
- )
- )
}
@AfterEach
diff --git a/web/src/test/kotlin/br/all/study/controller/StudyReviewControllerTest.kt b/web/src/test/kotlin/br/all/study/controller/StudyReviewControllerTest.kt
index 452194717..33cda86f6 100644
--- a/web/src/test/kotlin/br/all/study/controller/StudyReviewControllerTest.kt
+++ b/web/src/test/kotlin/br/all/study/controller/StudyReviewControllerTest.kt
@@ -1,6 +1,5 @@
package br.all.study.controller
-import br.all.infrastructure.collaboration.MongoCollaborationRepository
import br.all.infrastructure.question.MongoQuestionRepository
import br.all.infrastructure.review.MongoSystematicStudyRepository
import br.all.infrastructure.shared.toNullable
@@ -37,7 +36,6 @@ import br.all.review.shared.TestDataFactory as SystematicStudyTestDataFactory
class StudyReviewControllerTest(
@Autowired val repository: MongoStudyReviewRepository,
@Autowired val systematicStudyRepository: MongoSystematicStudyRepository,
- @Autowired val collaborationRepository: MongoCollaborationRepository,
@Autowired private val testHelperService: TestHelperService,
@Autowired val idService: StudyReviewIdGeneratorService,
@Autowired val mockMvc: MockMvc,
@@ -71,17 +69,8 @@ class StudyReviewControllerTest(
fun markAsDuplicatedUrl(studyToUpdateId: Long) =
"/api/v1/systematic-study/$systematicStudyId/study-review/$studyToUpdateId/duplicated"
- fun answerRiskOfBiasQuestion(studyReviewId: Long) =
- "/api/v1/systematic-study/$systematicStudyId/study-review/${studyReviewId}/riskOfBias-answer"
-
- fun answerExtractionQuestion(studyReviewId: Long) =
- "/api/v1/systematic-study/$systematicStudyId/study-review/${studyReviewId}/extraction-answer"
-
- fun batchAnswerRiskOfBiasQuestion(studyReviewId: Long) =
- "/api/v1/systematic-study/$systematicStudyId/study-review/${studyReviewId}/batch-riskOfBias-answers"
-
- fun batchAnswerExtractionQuestion(studyReviewId: Long) =
- "/api/v1/systematic-study/$systematicStudyId/study-review/${studyReviewId}/batch-extraction-answers"
+ fun batchAnswerQuestion(studyReviewId: Long) =
+ "/api/v1/systematic-study/$systematicStudyId/study-review/${studyReviewId}/batch-answer-question"
@BeforeEach
fun setUp() {
@@ -101,14 +90,6 @@ class StudyReviewControllerTest(
owner = user.id,
)
)
-
- collaborationRepository.deleteAll()
- collaborationRepository.save(
- br.all.review.shared.TestDataFactory().createCollaborationDocument(
- systematicStudyId = systematicStudyId,
- researcherId = user.id
- )
- )
}
@AfterEach
@@ -515,169 +496,28 @@ class StudyReviewControllerTest(
}
@Nested
- @DisplayName("When answering ROB questions in a review")
- inner class AnswerRobQuestionsTests(
+ @DisplayName("When batch answering questions in a review")
+ inner class BatchAnswerQuestionTests(
@Autowired val questionRepository: MongoQuestionRepository
) {
@Test
- fun `should assign answer to question and return 200`() {
- val studyId = idService.next()
- val questionId = UUID.randomUUID()
-
- val studyReview = factory.reviewDocument(systematicStudyId, studyId)
- repository.insert(studyReview)
-
- val question = factory.generateRobQuestionTextualDto(questionId, systematicStudyId = systematicStudyId)
- questionRepository.insert(question)
-
- val json = factory.validAnswerQuestionRequest(studyId, questionId, "TEXTUAL", "TEST")
- mockMvc.perform(
- patch(answerRiskOfBiasQuestion(studyId))
- .with(SecurityMockMvcRequestPostProcessors.user(user))
- .contentType(MediaType.APPLICATION_JSON).content(json)
- )
- .andExpect(status().isOk)
-
- val studyReviewId = StudyReviewId(systematicStudyId, studyId)
- val updatedReview = repository.findById(studyReviewId)
- assertEquals(updatedReview.get().qualityAnswers[questionId], "TEST")
- }
-
- @Test
- fun `should not assign answer with invalid request`() {
- val studyId = idService.next()
- val questionId = UUID.randomUUID()
-
- val studyReview = factory.reviewDocument(systematicStudyId, studyId)
- repository.insert(studyReview)
-
- val question = factory.generateRobQuestionTextualDto(questionId, systematicStudyId = systematicStudyId)
- questionRepository.insert(question)
-
- val json = factory.invalidAnswerRiskOfBiasPatchRequest(studyId, questionId, "TEXTUAL")
- mockMvc.perform(
- patch(answerRiskOfBiasQuestion(studyId))
- .with(SecurityMockMvcRequestPostProcessors.user(user))
- .contentType(MediaType.APPLICATION_JSON).content(json)
- )
- .andExpect(status().isBadRequest)
- }
-
- @Test
- fun `should not update if user is unauthorized`(){
- val studyId = idService.next()
- val questionId = UUID.randomUUID()
-
-
- testHelperService.testForUnauthorizedUser(
- mockMvc,
- patch(answerRiskOfBiasQuestion(studyId))
- .content(factory.validAnswerQuestionRequest(
- studyId, questionId, "TEXTUAL", "TEST"
- ))
- )
- }
-
- @Test
- fun `should not update if user is unauthenticated`(){
+ fun `should handle partial success correctly by saving answers to their respective contexts`() {
val studyId = idService.next()
-
- testHelperService.testForUnauthenticatedUser(mockMvc, patch(answerRiskOfBiasQuestion(studyId)),
+ val studyReview = factory.reviewDocument(systematicStudyId, studyId).copy(
+ qualityAnswers = mutableMapOf(),
+ formAnswers = mutableMapOf()
)
- }
- }
-
- @Nested
- @DisplayName("When answering Extraction questions in a review")
- inner class AnswerExtractionQuestionsTests(
- @Autowired val questionRepository: MongoQuestionRepository
- ) {
- @Test
- fun `should assign answer to question and return 200`() {
- val studyId = idService.next()
- val questionId = UUID.randomUUID()
-
- val studyReview = factory.reviewDocument(systematicStudyId, studyId)
repository.insert(studyReview)
- val question = factory.generateExtractionQuestionTextualDto(questionId, systematicStudyId = systematicStudyId)
- questionRepository.insert(question)
+ val validRobQId = UUID.randomUUID()
+ val validExtractionQId = UUID.randomUUID()
+ val invalidRobQId = UUID.randomUUID()
- val json = factory.validAnswerQuestionRequest(studyId, questionId, "TEXTUAL", "TEST")
- mockMvc.perform(
- patch(answerExtractionQuestion(studyId))
- .with(SecurityMockMvcRequestPostProcessors.user(user))
- .contentType(MediaType.APPLICATION_JSON).content(json)
- )
- .andExpect(status().isOk)
-
- val studyReviewId = StudyReviewId(systematicStudyId, studyId)
- val updatedReview = repository.findById(studyReviewId)
- assertEquals(updatedReview.get().formAnswers[questionId], "TEST")
- }
-
- @Test
- fun `should not assign answer with invalid request`() {
- val studyId = idService.next()
- val questionId = UUID.randomUUID()
-
- val studyReview = factory.reviewDocument(systematicStudyId, studyId)
- repository.insert(studyReview)
+ val question1 = factory.generateRobQuestionTextualDto(validRobQId, systematicStudyId)
- val question = factory.generateExtractionQuestionTextualDto(questionId, systematicStudyId = systematicStudyId)
- questionRepository.insert(question)
+ val question2 = factory.generateExtractionQuestionTextualDto(validExtractionQId, systematicStudyId)
- val json = factory.invalidAnswerRiskOfBiasPatchRequest(studyId, questionId, "TEXTUAL")
- mockMvc.perform(
- patch(answerExtractionQuestion(studyId))
- .with(SecurityMockMvcRequestPostProcessors.user(user))
- .contentType(MediaType.APPLICATION_JSON).content(json)
- )
- .andExpect(status().isBadRequest)
- }
-
- @Test
- fun `should not update if user is unauthorized`(){
- val studyId = idService.next()
- val questionId = UUID.randomUUID()
-
- testHelperService.testForUnauthorizedUser(
- mockMvc,
- patch(answerExtractionQuestion(studyId))
- .content(factory.validAnswerQuestionRequest(
- studyId, questionId, "TEXTUAL", "TEST"
- ))
- )
- }
-
- @Test
- fun `should not update if user is unauthenticated`(){
- val studyId = idService.next()
-
- testHelperService.testForUnauthenticatedUser(mockMvc, patch(answerExtractionQuestion(studyId)),
- )
- }
- }
-
- @Nested
- @DisplayName("When batch answering ROB questions in a review")
- inner class BatchAnswerRobQuestionsTests(
- @Autowired val questionRepository: MongoQuestionRepository
- ) {
- @Test
- @DisplayName("should save valid answers, ignore invalid ones, and return 200 with a detailed report")
- fun `should handle partial success correctly`() {
- val studyId = idService.next()
- val studyReview = factory.reviewDocument(systematicStudyId, studyId)
- repository.insert(studyReview)
-
- val validQId1 = UUID.randomUUID()
- val validQId2 = UUID.randomUUID()
- val invalidQId = UUID.randomUUID()
-
- val question1 = factory.generateRobQuestionTextualDto(validQId1, systematicStudyId)
- val question2 = factory.generateRobQuestionTextualDto(validQId2, systematicStudyId)
- val question3 = factory.generateRobQuestionNumberScaleDto(invalidQId, systematicStudyId)
+ val question3 = factory.generateRobQuestionNumberScaleDto(invalidRobQId, systematicStudyId)
questionRepository.insert(question1)
questionRepository.insert(question2)
@@ -686,136 +526,50 @@ class StudyReviewControllerTest(
val jsonPayload = """
{
"answers": [
- { "questionId": "$validQId1", "type": "TEXTUAL", "answer": "First valid answer" },
- { "questionId": "$validQId2", "type": "TEXTUAL", "answer": "Second valid answer" },
- { "questionId": "$invalidQId", "type": "NUMBERED_SCALE", "answer": "This shouldn't be a string" }
+ { "questionId": "$validRobQId", "type": "TEXTUAL", "answer": "Valid ROB answer" },
+ { "questionId": "$validExtractionQId", "type": "TEXTUAL", "answer": "Valid Extraction answer" },
+ { "questionId": "$invalidRobQId", "type": "NUMBERED_SCALE", "answer": "This answer is invalid for a number scale" }
]
}
""".trimIndent()
mockMvc.perform(
- patch(batchAnswerRiskOfBiasQuestion(studyId))
+ patch(batchAnswerQuestion(studyId))
.with(SecurityMockMvcRequestPostProcessors.user(user))
.contentType(MediaType.APPLICATION_JSON).content(jsonPayload)
)
.andExpect(status().isOk)
.andExpect(jsonPath("$.totalAnswered").value(2))
.andExpect(jsonPath("$.succeededAnswers", hasSize(2)))
- .andExpect(jsonPath("$.succeededAnswers", hasItem(validQId1.toString())))
- .andExpect(jsonPath("$.succeededAnswers", hasItem(validQId2.toString())))
+ .andExpect(jsonPath("$.succeededAnswers", hasItem(validRobQId.toString())))
+ .andExpect(jsonPath("$.succeededAnswers", hasItem(validExtractionQId.toString())))
.andExpect(jsonPath("$.failedAnswers", hasSize(1)))
- .andExpect(jsonPath("$.failedAnswers[0].questionId").value(invalidQId.toString()))
+ .andExpect(jsonPath("$.failedAnswers[0].questionId").value(invalidRobQId.toString()))
.andExpect(jsonPath("$.failedAnswers[0].reason", containsString("not compatible with question type 'NUMBERED_SCALE'")))
val updatedReview = repository.findById(StudyReviewId(systematicStudyId, studyId)).get()
- assertEquals(3, updatedReview.qualityAnswers.size)
- assertEquals("First valid answer", updatedReview.qualityAnswers[validQId1])
- assertEquals("Second valid answer", updatedReview.qualityAnswers[validQId2])
- assertNull(updatedReview.qualityAnswers[invalidQId])
- }
-
- @Test
- @DisplayName("should return 401 for unauthenticated users")
- fun `should not update if user is unauthenticated`() {
- testHelperService.testForUnauthenticatedUser(mockMvc, patch(batchAnswerRiskOfBiasQuestion(1L)))
- }
+ assertEquals(1, updatedReview.qualityAnswers.size)
+ assertEquals("Valid ROB answer", updatedReview.qualityAnswers[validRobQId])
- @Test
- @DisplayName("should return 403 for unauthorized users")
- fun `should not update if user is unauthorized`() {
- val jsonPayload = """{ "answers": [] }"""
- testHelperService.testForUnauthorizedUser(
- mockMvc,
- patch(batchAnswerRiskOfBiasQuestion(1L)).content(jsonPayload)
- )
- }
- }
+ assertEquals(1, updatedReview.formAnswers.size)
+ assertEquals("Valid Extraction answer", updatedReview.formAnswers[validExtractionQId])
- @Nested
- @DisplayName("When batch answering Extraction questions in a review")
- inner class BatchAnswerExtractionQuestionsTests(
- @Autowired val questionRepository: MongoQuestionRepository
- ) {
- @Test
- @DisplayName("should save all valid answers and return 200 with no failures")
- fun `should handle full success correctly`() {
- val studyId = idService.next()
- val studyReview = factory.reviewDocument(systematicStudyId, studyId)
- repository.insert(studyReview)
-
- val textQId = UUID.randomUUID()
- val pickListQId = UUID.randomUUID()
-
- val question1 = factory.generateExtractionQuestionTextualDto(textQId, systematicStudyId = systematicStudyId)
- val question2 = factory.generateExtractionQuestionPickListDto(pickListQId, systematicStudyId = systematicStudyId)
-
- questionRepository.insert(question1)
- questionRepository.insert(question2)
-
- val jsonPayload = """
- {
- "answers": [
- { "questionId": "$textQId", "type": "TEXTUAL", "answer": "Another valid answer" },
- { "questionId": "$pickListQId", "type": "PICK_LIST", "answer": "Option A" }
- ]
- }
- """.trimIndent()
-
- mockMvc.perform(
- patch(batchAnswerExtractionQuestion(studyId))
- .with(SecurityMockMvcRequestPostProcessors.user(user))
- .contentType(MediaType.APPLICATION_JSON).content(jsonPayload)
- )
- .andExpect(status().isOk)
- .andExpect(jsonPath("$.totalAnswered").value(2))
- .andExpect(jsonPath("$.succeededAnswers", hasSize(2)))
- .andExpect(jsonPath("$.failedAnswers", hasSize(0)))
-
- val updatedReview = repository.findById(StudyReviewId(systematicStudyId, studyId)).get()
- assertEquals(3, updatedReview.formAnswers.size)
- assertEquals("Another valid answer", updatedReview.formAnswers[textQId])
- assertEquals("Option A", updatedReview.formAnswers[pickListQId])
- }
-
- @Test
- @DisplayName("should not save answers if the question context is wrong")
- fun `should fail on context mismatch`() {
- val studyId = idService.next()
- repository.insert(factory.reviewDocument(systematicStudyId, studyId))
-
- val extractionQId = UUID.randomUUID()
- questionRepository.insert(factory.generateExtractionQuestionTextualDto(extractionQId, systematicStudyId = systematicStudyId))
-
- val jsonPayload = """
- { "answers": [{ "questionId": "$extractionQId", "type": "TEXTUAL", "answer": "some answer" }] }
- """
-
- mockMvc.perform(
- patch(batchAnswerRiskOfBiasQuestion(studyId))
- .with(SecurityMockMvcRequestPostProcessors.user(user))
- .contentType(MediaType.APPLICATION_JSON).content(jsonPayload)
- )
- .andExpect(status().isOk)
- .andExpect(jsonPath("$.totalAnswered").value(0))
- .andExpect(jsonPath("$.failedAnswers", hasSize(1)))
- .andExpect(jsonPath("$.failedAnswers[0].questionId").value(extractionQId.toString()))
- .andExpect(jsonPath("$.failedAnswers[0].reason", containsString("Should answer question with the context: ROB")))
+ assertNull(updatedReview.qualityAnswers[invalidRobQId])
+ assertNull(updatedReview.formAnswers[invalidRobQId])
}
@Test
- @DisplayName("should return 401 for unauthenticated users")
fun `should not update if user is unauthenticated`() {
- testHelperService.testForUnauthenticatedUser(mockMvc, patch(batchAnswerExtractionQuestion(1L)))
+ testHelperService.testForUnauthenticatedUser(mockMvc, patch(batchAnswerQuestion(1L)))
}
@Test
- @DisplayName("should return 403 for unauthorized users")
fun `should not update if user is unauthorized`() {
val jsonPayload = """{ "answers": [] }"""
testHelperService.testForUnauthorizedUser(
mockMvc,
- patch(batchAnswerExtractionQuestion(1L)).content(jsonPayload)
+ patch(batchAnswerQuestion(1L)).content(jsonPayload)
)
}
}