Skip to content
This repository was archived by the owner on Mar 20, 2025. It is now read-only.

Commit 6c7db27

Browse files
committed
feat: user モデルの実装
1 parent 9df6c5e commit 6c7db27

File tree

2 files changed

+76
-0
lines changed
  • src
    • main/kotlin/dev/sunabak0/akiyadego/domain
    • test/kotlin/dev/sunabak0/akiyadego/domain

2 files changed

+76
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package dev.sunabak0.akiyadego.domain
2+
3+
import dev.sunabak0.akiyadego.openapi.generated.model.Post
4+
5+
/**
6+
* ユーザ
7+
*
8+
* @property id
9+
* @property uuid
10+
* @property name
11+
* @property email
12+
* @property password
13+
* @property createdAt
14+
* @property posts
15+
* @constructor Create empty User
16+
*/
17+
data class User(
18+
val id: Int,
19+
val uuid: String,
20+
val name: String,
21+
val email: String,
22+
val password: String,
23+
val createdAt: String,
24+
val posts: List<Post>,
25+
) {
26+
/**
27+
* Factoryメソッド
28+
*/
29+
companion object {
30+
/**
31+
* Validation 有り
32+
*
33+
*/
34+
fun new(
35+
id: Int,
36+
uuid: String,
37+
name: String,
38+
email: String,
39+
password: String,
40+
createdAt: String,
41+
posts: List<Post>,
42+
): Any {
43+
if (name.isEmpty()) {
44+
return IllegalArgumentException("名前が1文字未満です")
45+
}
46+
return User(id, uuid, name, email, password, createdAt, posts)
47+
}
48+
}
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package dev.sunabak0.akiyadego.domain
2+
3+
import org.junit.jupiter.api.Assertions.assertEquals
4+
import org.junit.jupiter.api.Test
5+
import org.junit.jupiter.api.assertThrows
6+
7+
class UserTest {
8+
@Test
9+
fun `ユーザの名前の文字数が違反していたユーザの生成に失敗する`() {
10+
/**
11+
* given:
12+
*/
13+
14+
/**
15+
* when:
16+
*/
17+
18+
/**
19+
* then:
20+
* - 名前を検査
21+
*/
22+
val user = assertThrows<IllegalArgumentException> {
23+
User.new(1, "uuid", "", "sample@com", "password", "20230123-12:00:00", listOf())
24+
}
25+
assertEquals(user.message, "名前が入力されていません")
26+
}
27+
}

0 commit comments

Comments
 (0)