Load configuration with micronaut
This commit is contained in:
@@ -16,16 +16,14 @@ dependencies {
|
||||
implementation(Libs.hikariCP)
|
||||
implementation(Libs.ktormCore)
|
||||
implementation(Libs.ktormMysql)
|
||||
implementation(Libs.logbackClassic)
|
||||
|
||||
implementation(Libs.mapstruct)
|
||||
compileOnly(Libs.mapstruct)
|
||||
kapt(Libs.mapstructProcessor)
|
||||
|
||||
implementation(Libs.micronaut)
|
||||
kapt(Libs.micronautProcessor)
|
||||
|
||||
testImplementation(Libs.micronaut)
|
||||
kaptTest(Libs.micronautProcessor)
|
||||
|
||||
testImplementation(Libs.junit)
|
||||
testImplementation(Libs.assertJ)
|
||||
testImplementation(Libs.logbackClassic)
|
||||
|
||||
-6
@@ -15,12 +15,6 @@ import javax.sql.DataSource
|
||||
@Factory
|
||||
class PersistanceModule {
|
||||
|
||||
@Singleton
|
||||
internal fun noteConverter() = Mappers.getMapper(NoteConverter::class.java)
|
||||
|
||||
@Singleton
|
||||
internal fun userConverter() = Mappers.getMapper(UserConverter::class.java)
|
||||
|
||||
@Singleton
|
||||
internal fun database(migrations: DbMigrations, dataSource: DataSource): Database {
|
||||
migrations.migrate()
|
||||
|
||||
+7
-5
@@ -9,12 +9,13 @@ import org.mapstruct.Mappings
|
||||
import org.mapstruct.ReportingPolicy
|
||||
import java.time.LocalDateTime
|
||||
import java.util.*
|
||||
import javax.inject.Singleton
|
||||
|
||||
/**
|
||||
* This is an abstract class because kotlin default methods in interface are not seen as default in kapt
|
||||
* @see [KT-25960](https://youtrack.jetbrains.com/issue/KT-25960)
|
||||
*/
|
||||
@Mapper(uses = [NoteEntityFactory::class, UserEntityFactory::class], unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
@Mapper(
|
||||
uses = [NoteEntityFactory::class, UserEntityFactory::class],
|
||||
unmappedTargetPolicy = ReportingPolicy.IGNORE,
|
||||
componentModel = "jsr330"
|
||||
)
|
||||
internal abstract class NoteConverter {
|
||||
|
||||
fun toNote(entity: NoteEntity, tags: Tags) =
|
||||
@@ -80,4 +81,5 @@ internal abstract class NoteConverter {
|
||||
|
||||
typealias Tags = List<String>
|
||||
|
||||
@Singleton
|
||||
internal class NoteEntityFactory : Entity.Factory<NoteEntity>()
|
||||
|
||||
+7
-1
@@ -6,8 +6,13 @@ import be.simplenotes.types.User
|
||||
import me.liuwj.ktorm.entity.Entity
|
||||
import org.mapstruct.Mapper
|
||||
import org.mapstruct.ReportingPolicy
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Mapper(uses = [UserEntityFactory::class], unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
@Mapper(
|
||||
uses = [UserEntityFactory::class],
|
||||
unmappedTargetPolicy = ReportingPolicy.IGNORE,
|
||||
componentModel = "jsr330"
|
||||
)
|
||||
internal interface UserConverter {
|
||||
fun toUser(userEntity: UserEntity): User
|
||||
fun toPersistedUser(userEntity: UserEntity): PersistedUser
|
||||
@@ -15,4 +20,5 @@ internal interface UserConverter {
|
||||
fun toEntity(user: PersistedUser): UserEntity
|
||||
}
|
||||
|
||||
@Singleton
|
||||
internal class UserEntityFactory : Entity.Factory<UserEntity>()
|
||||
|
||||
+4
-9
@@ -2,23 +2,25 @@ package be.simplenotes.persistance.converters
|
||||
|
||||
import be.simplenotes.persistance.notes.NoteEntity
|
||||
import be.simplenotes.types.*
|
||||
import io.micronaut.context.BeanContext
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Nested
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.mapstruct.factory.Mappers
|
||||
import java.time.LocalDateTime
|
||||
import java.util.*
|
||||
|
||||
internal class NoteConverterTest {
|
||||
|
||||
private val ctx = BeanContext.run()
|
||||
val converter = ctx.getBean(NoteConverter::class.java)
|
||||
|
||||
@Nested
|
||||
@DisplayName("Entity -> Models")
|
||||
inner class EntityToModels {
|
||||
|
||||
@Test
|
||||
fun `convert NoteEntity to Note`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val entity = NoteEntity {
|
||||
title = "title"
|
||||
markdown = "md"
|
||||
@@ -39,7 +41,6 @@ internal class NoteConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert NoteEntity to ExportedNote`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val entity = NoteEntity {
|
||||
title = "title"
|
||||
markdown = "md"
|
||||
@@ -62,7 +63,6 @@ internal class NoteConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert NoteEntity to PersistedNoteMetadata`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val entity = NoteEntity {
|
||||
uuid = UUID.randomUUID()
|
||||
title = "title"
|
||||
@@ -89,7 +89,6 @@ internal class NoteConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert Note to NoteEntity`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val note = Note(NoteMetadata("title", emptyList()), "md", "html")
|
||||
val entity = converter.toEntity(note, UUID.randomUUID(), 2, LocalDateTime.MIN)
|
||||
|
||||
@@ -103,7 +102,6 @@ internal class NoteConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert PersistedNoteMetadata to NoteEntity`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val persistedNoteMetadata =
|
||||
PersistedNoteMetadata("title", emptyList(), LocalDateTime.MIN, UUID.randomUUID())
|
||||
val entity = converter.toEntity(persistedNoteMetadata)
|
||||
@@ -116,7 +114,6 @@ internal class NoteConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert NoteMetadata to NoteEntity`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val noteMetadata = NoteMetadata("title", emptyList())
|
||||
val entity = converter.toEntity(noteMetadata)
|
||||
|
||||
@@ -126,7 +123,6 @@ internal class NoteConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert PersistedNote to NoteEntity`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val persistedNote = PersistedNote(
|
||||
NoteMetadata("title", emptyList()),
|
||||
markdown = "md",
|
||||
@@ -148,7 +144,6 @@ internal class NoteConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert ExportedNote to NoteEntity`() {
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val exportedNote = ExportedNote(
|
||||
"title",
|
||||
emptyList(),
|
||||
|
||||
+4
-4
@@ -3,15 +3,17 @@ package be.simplenotes.persistance.converters
|
||||
import be.simplenotes.persistance.users.UserEntity
|
||||
import be.simplenotes.types.PersistedUser
|
||||
import be.simplenotes.types.User
|
||||
import io.micronaut.context.BeanContext
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.mapstruct.factory.Mappers
|
||||
|
||||
internal class UserConverterTest {
|
||||
|
||||
private val ctx = BeanContext.run()
|
||||
private val converter = ctx.getBean(UserConverter::class.java)
|
||||
|
||||
@Test
|
||||
fun `convert UserEntity to User`() {
|
||||
val converter = Mappers.getMapper(UserConverter::class.java)
|
||||
val entity = UserEntity {
|
||||
username = "test"
|
||||
password = "test2"
|
||||
@@ -24,7 +26,6 @@ internal class UserConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert UserEntity to PersistedUser`() {
|
||||
val converter = Mappers.getMapper(UserConverter::class.java)
|
||||
val entity = UserEntity {
|
||||
username = "test"
|
||||
password = "test2"
|
||||
@@ -37,7 +38,6 @@ internal class UserConverterTest {
|
||||
|
||||
@Test
|
||||
fun `convert User to UserEntity`() {
|
||||
val converter = Mappers.getMapper(UserConverter::class.java)
|
||||
val user = User("test", "test2")
|
||||
val entity = converter.toEntity(user)
|
||||
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@ import me.liuwj.ktorm.entity.toList
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.assertj.core.api.Assertions.assertThatThrownBy
|
||||
import org.junit.jupiter.api.*
|
||||
import org.mapstruct.factory.Mappers
|
||||
import java.sql.SQLIntegrityConstraintViolationException
|
||||
|
||||
internal abstract class BaseNoteRepositoryImplTest : DbTest() {
|
||||
@@ -142,7 +141,7 @@ internal abstract class BaseNoteRepositoryImplTest : DbTest() {
|
||||
fun `find an existing note`() {
|
||||
val fakeNote = noteRepo.insertFakeNote(user1)
|
||||
|
||||
val converter = Mappers.getMapper(NoteConverter::class.java)
|
||||
val converter = beanContext.getBean(NoteConverter::class.java)
|
||||
|
||||
val note = db.notes.find { it.title eq fakeNote.meta.title }!!
|
||||
.let { entity ->
|
||||
|
||||
Reference in New Issue
Block a user