diff --git a/.forge/role-developer-live-v5-001-attempt-1-run-d2eb89f97872.md b/.forge/role-developer-live-v5-001-attempt-1-run-d2eb89f97872.md new file mode 100644 index 0000000..10002da --- /dev/null +++ b/.forge/role-developer-live-v5-001-attempt-1-run-d2eb89f97872.md @@ -0,0 +1,3 @@ +# role-developer-live-v5-001-attempt-1-run-d2eb89f97872 + +Forge 이슈 작업 브랜치 `forge/role-developer-live-v5-001-attempt-1-run-d2eb89f97872`. diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..267a115 --- /dev/null +++ b/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.5 + + + com.developer + runtime-role-matrix-live-202607141836-v5 + 1.0.0 + runtime-role-matrix-live-202607141836-v5 + Developer role Spring Boot skeleton + + 17 + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/src/main/java/com/developer/DeveloperApplication.java b/src/main/java/com/developer/DeveloperApplication.java new file mode 100644 index 0000000..086200e --- /dev/null +++ b/src/main/java/com/developer/DeveloperApplication.java @@ -0,0 +1,12 @@ +package com.developer; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DeveloperApplication { + + public static void main(String[] args) { + SpringApplication.run(DeveloperApplication.class, args); + } +} diff --git a/src/main/java/com/developer/DeveloperService.java b/src/main/java/com/developer/DeveloperService.java new file mode 100644 index 0000000..4aca9b2 --- /dev/null +++ b/src/main/java/com/developer/DeveloperService.java @@ -0,0 +1,22 @@ +package com.developer; + +import org.springframework.stereotype.Service; + +@Service +public class DeveloperService { + + public String getRole() { + return "developer"; + } + + public String greet(String name) { + if (name == null || name.isBlank()) { + return "Hello, Developer!"; + } + return "Hello, " + name + "!"; + } + + public boolean isValidRole(String role) { + return "developer".equalsIgnoreCase(role); + } +} diff --git a/src/test/java/com/developer/DeveloperServiceTest.java b/src/test/java/com/developer/DeveloperServiceTest.java new file mode 100644 index 0000000..967e26a --- /dev/null +++ b/src/test/java/com/developer/DeveloperServiceTest.java @@ -0,0 +1,45 @@ +package com.developer; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest +class DeveloperServiceTest { + + @Autowired + private DeveloperService developerService; + + @Test + void getRole_returnsDeveloper() { + assertEquals("developer", developerService.getRole()); + } + + @Test + void greet_withName_returnsPersonalizedGreeting() { + assertEquals("Hello, Alice!", developerService.greet("Alice")); + } + + @Test + void greet_withNullOrBlank_returnsDefaultGreeting() { + assertEquals("Hello, Developer!", developerService.greet(null)); + assertEquals("Hello, Developer!", developerService.greet("")); + assertEquals("Hello, Developer!", developerService.greet(" ")); + } + + @Test + void isValidRole_withDeveloper_returnsTrue() { + assertTrue(developerService.isValidRole("developer")); + assertTrue(developerService.isValidRole("DEVELOPER")); + assertTrue(developerService.isValidRole("Developer")); + } + + @Test + void isValidRole_withOtherRole_returnsFalse() { + assertFalse(developerService.isValidRole("admin")); + assertFalse(developerService.isValidRole("user")); + assertFalse(developerService.isValidRole(null)); + } +}