diff --git a/src/main/kotlin/dev/sunabak0/akiyadego/domain/User.kt b/src/main/kotlin/dev/sunabak0/akiyadego/domain/User.kt new file mode 100644 index 0000000..1f21528 --- /dev/null +++ b/src/main/kotlin/dev/sunabak0/akiyadego/domain/User.kt @@ -0,0 +1,49 @@ +package dev.sunabak0.akiyadego.domain + +import dev.sunabak0.akiyadego.openapi.generated.model.Post + +/** + * ユーザ + * + * @property id + * @property uuid + * @property name + * @property email + * @property password + * @property createdAt + * @property posts + * @constructor Create empty User + */ +data class User( + val id: Int, + val uuid: String, + val name: String, + val email: String, + val password: String, + val createdAt: String, + val posts: List, +) { + /** + * Factoryメソッド + */ + companion object { + /** + * Validation 有り + * + */ + fun new( + id: Int, + uuid: String, + name: String, + email: String, + password: String, + createdAt: String, + posts: List, + ): Any { + if (name.isEmpty()) { + return IllegalArgumentException("名前が1文字未満です") + } + return User(id, uuid, name, email, password, createdAt, posts) + } + } +} diff --git a/src/test/kotlin/dev/sunabak0/akiyadego/domain/UserTest.kt b/src/test/kotlin/dev/sunabak0/akiyadego/domain/UserTest.kt new file mode 100644 index 0000000..9616fc5 --- /dev/null +++ b/src/test/kotlin/dev/sunabak0/akiyadego/domain/UserTest.kt @@ -0,0 +1,27 @@ +package dev.sunabak0.akiyadego.domain + +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows + +class UserTest { + @Test + fun `ユーザの名前の文字数が違反していたユーザの生成に失敗する`() { + /** + * given: + */ + + /** + * when: + */ + + /** + * then: + * - 名前を検査 + */ + val user = assertThrows { + User.new(1, "uuid", "", "sample@com", "password", "20230123-12:00:00", listOf()) + } + assertEquals(user.message, "名前が入力されていません") + } +}