hows going?
I'm studying Kotlin+Spring+MongoDB and I got a problem.
My person class:
import org.bson.types.ObjectId
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
@Document
data class Person(
@Id
val id: ObjectId = ObjectId.get(),
val name: String,
val sobrenome: String
)
My controller class:
@RestController
@RequestMapping("/person")
class PersonController (private val repository: PersonRepository){
@GetMapping("/{id}")
fun getOnePatient(@PathVariable("id") id: String): ResponseEntity<Person> = ResponseEntity.ok(repository.findOneById(
ObjectId(id)
))
}
Finally, my test class:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ExtendWith(SpringExtension::class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class PersonControllerTest @Autowired constructor (
private val repository: PersonRepository,
private val restTemplate: TestRestTemplate
) {
private val defaultPersonId = ObjectId.get()
@LocalServerPort
protected var port: Int = 0
@BeforeEach
fun setUp() {
repository.deleteAll()
}
private fun getBaseUrl(): String? = "http://localhost:$port/person"
private fun saveOnePerson() = repository.save(Person(defaultPersonId, "Gabriel", "Andrade"))
@Test
fun `should return a single patient by id`() {
saveOnePerson()
val response = restTemplate.getForEntity(getBaseUrl() + "/$defaultPersonId", Person::class.java)
assertEquals(200, response.statusCode.value())
assertEquals(defaultPersonId, response.body?.id)
}
}
THE PROBLEM:
assertEquals(defaultPersonId, response.body?.id)
LOG
expected: <5ffdbc186c34a85d396eb847> but was: <5ffdbc186c34a85d396eb848>
Expected :5ffdbc186c34a85d396eb847
Actual :5ffdbc186c34a85d396eb848
The id that is in the bank will always be increased in relation to the defaultPersonId. In version 2.2.6.RELEASE of Spring it compares correctly, with no increase in value. But in 2.4.1 this error happens.
My doubt is:
I would like to know if there is a way to make it work in the most current version I use.