From 3bffa8572ff84f29ae0932bb7bd3fba158c039f3 Mon Sep 17 00:00:00 2001 From: Kayoung Date: Thu, 10 Nov 2022 17:30:52 +0900 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20UserService=EC=97=90=EC=84=9C=20upg?= =?UTF-8?q?radeLevel()=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/springbook/user/service/UserService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/springbook/user/service/UserService.java b/src/springbook/user/service/UserService.java index a590b96..be31360 100644 --- a/src/springbook/user/service/UserService.java +++ b/src/springbook/user/service/UserService.java @@ -28,10 +28,14 @@ public void add(User user) { public void upgradeLevels() { List users = userDao.getAll(); for (User user : users) { - if (userLevelUpgradePolicy.canUpgradeLevel(user)) { - userLevelUpgradePolicy.upgradeLevel(user); - userDao.update(user); - } + upgradeLevel(user); + } + } + + private void upgradeLevel(User user) { + if (userLevelUpgradePolicy.canUpgradeLevel(user)) { + userLevelUpgradePolicy.upgradeLevel(user); + userDao.update(user); } } } From 0e5784500788224360925dda738710449f136149 Mon Sep 17 00:00:00 2001 From: Kayoung Date: Thu, 10 Nov 2022 17:31:30 +0900 Subject: [PATCH 2/7] =?UTF-8?q?fix:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=AA=A9=EC=A0=81=20=EC=A0=91=EA=B7=BC=EC=A0=9C=ED=95=9C?= =?UTF-8?q?=EC=9E=90=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/springbook/user/service/UserService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/springbook/user/service/UserService.java b/src/springbook/user/service/UserService.java index be31360..009d8db 100644 --- a/src/springbook/user/service/UserService.java +++ b/src/springbook/user/service/UserService.java @@ -32,7 +32,7 @@ public void upgradeLevels() { } } - private void upgradeLevel(User user) { + protected void upgradeLevel(User user) { if (userLevelUpgradePolicy.canUpgradeLevel(user)) { userLevelUpgradePolicy.upgradeLevel(user); userDao.update(user); From 3cc7e8d4b0e86d2725b608332f4b11ecd40e3978 Mon Sep 17 00:00:00 2001 From: Kayoung Date: Thu, 10 Nov 2022 18:02:03 +0900 Subject: [PATCH 3/7] =?UTF-8?q?test(UserService):=20upgradeLevels=20?= =?UTF-8?q?=EB=8A=94=20=EC=98=88=EC=99=B8=20=EB=B0=9C=EC=83=9D=20=EC=8B=9C?= =?UTF-8?q?=20=EC=9D=B4=EB=AF=B8=20=EC=A7=84=ED=96=89=EB=90=9C=20=EB=A0=88?= =?UTF-8?q?=EB=B2=A8=EC=97=85=EC=9D=84=20=EB=A1=A4=EB=B0=B1=ED=95=9C?= =?UTF-8?q?=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/service/UserServiceTest.java | 55 ++++++++++++++++--- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/src/springbook/user/service/UserServiceTest.java b/src/springbook/user/service/UserServiceTest.java index 130682f..1dc0951 100644 --- a/src/springbook/user/service/UserServiceTest.java +++ b/src/springbook/user/service/UserServiceTest.java @@ -1,5 +1,13 @@ package springbook.user.service; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; +import static springbook.user.service.UserLevelUpgradePolicyImpl.MIN_LOGCOUNT_FOR_SILVER; +import static springbook.user.service.UserLevelUpgradePolicyImpl.MIN_RECCOMENT_FOR_GOLD; + +import java.util.Arrays; +import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -10,17 +18,27 @@ import springbook.user.domain.Level; import springbook.user.domain.User; -import java.util.Arrays; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; -import static springbook.user.service.UserLevelUpgradePolicyImpl.MIN_LOGCOUNT_FOR_SILVER; -import static springbook.user.service.UserLevelUpgradePolicyImpl.MIN_RECCOMENT_FOR_GOLD; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "/test-applicationContext.xml") public class UserServiceTest { + static class TestUserService extends UserService { + private String id; + + private TestUserService(String id) { + this.id = id; + } + + protected void upgradeLevel(User user) { + if (user.getId().equals(this.id)) { + throw new TestUserServiceException(); + } + super.upgradeLevel(user); + } + } + + static class TestUserServiceException extends RuntimeException { + } + @Autowired UserService userService; @@ -43,7 +61,9 @@ public void setUp() { @Test public void upgradeLevels() { userDao.deleteAll(); - for (User user : users) userDao.add(user); + for (User user : users) { + userDao.add(user); + } userService.upgradeLevels(); @@ -82,4 +102,21 @@ private void checkLevelUpgraded(User user, Boolean upgraded) { } } + @Test + public void upgradeAllOrNothing() { + // user fixture 사용 + UserService testUserService = new TestUserService(users.get(3).getId()); + testUserService.setUserDao(this.userDao); // userDao를 수동 DI해줌 + userDao.deleteAll(); + for (User user : users) { + userDao.add(user); + } + + try { + testUserService.upgradeLevels(); + fail("TetUserSericeException expected"); + } catch (TestUserServiceException e) { + } + checkLevelUpgraded(users.get(1), false); + } } \ No newline at end of file From df80be46dc7f13688fe75138a93dcaf9dd3b7dbf Mon Sep 17 00:00:00 2001 From: Kayoung Date: Thu, 10 Nov 2022 19:24:04 +0900 Subject: [PATCH 4/7] =?UTF-8?q?feat:=20TransactionSynchronizationManager?= =?UTF-8?q?=EC=97=90=20=EC=BB=A4=EB=84=A5=EC=85=98=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=ED=95=98=EA=B3=A0=20=EC=BB=A4=EB=B0=8B=20=EB=B2=94=EC=9C=84=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/applicationContext.xml | 1 + src/springbook/user/service/UserService.java | 33 +++++++++++++++---- .../user/service/UserServiceTest.java | 17 +++++++--- src/test-applicationContext.xml | 1 + 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/applicationContext.xml b/src/applicationContext.xml index d23de1d..3e1fca3 100644 --- a/src/applicationContext.xml +++ b/src/applicationContext.xml @@ -17,6 +17,7 @@ + diff --git a/src/springbook/user/service/UserService.java b/src/springbook/user/service/UserService.java index 009d8db..fec6c98 100644 --- a/src/springbook/user/service/UserService.java +++ b/src/springbook/user/service/UserService.java @@ -1,14 +1,18 @@ package springbook.user.service; +import java.sql.Connection; +import java.util.List; +import javax.sql.DataSource; +import org.springframework.jdbc.datasource.DataSourceUtils; +import org.springframework.transaction.support.TransactionSynchronizationManager; import springbook.user.dao.UserDao; import springbook.user.domain.Level; import springbook.user.domain.User; -import java.util.List; - public class UserService { UserDao userDao; UserLevelUpgradePolicy userLevelUpgradePolicy; + DataSource dataSource; public void setUserDao(UserDao userDao) { this.userDao = userDao; @@ -18,6 +22,10 @@ public void setUserLevelUpgradePolicy(UserLevelUpgradePolicy userLevelUpgradePol this.userLevelUpgradePolicy = userLevelUpgradePolicy; } + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } + public void add(User user) { if (user.getLevel() == null) { user.setLevel(Level.BASIC); @@ -25,10 +33,23 @@ public void add(User user) { userDao.add(user); } - public void upgradeLevels() { - List users = userDao.getAll(); - for (User user : users) { - upgradeLevel(user); + public void upgradeLevels() throws Exception { + TransactionSynchronizationManager.initSynchronization(); + Connection c = DataSourceUtils.getConnection(dataSource); + c.setAutoCommit(false); + try { + List users = userDao.getAll(); + for (User user : users) { + upgradeLevel(user); + } + c.commit(); + } catch (Exception e) { + c.rollback(); + throw e; + } finally { + DataSourceUtils.releaseConnection(c, dataSource); + TransactionSynchronizationManager.unbindResource(this.dataSource); + TransactionSynchronizationManager.clearSynchronization(); } } diff --git a/src/springbook/user/service/UserServiceTest.java b/src/springbook/user/service/UserServiceTest.java index 1dc0951..89c1bb6 100644 --- a/src/springbook/user/service/UserServiceTest.java +++ b/src/springbook/user/service/UserServiceTest.java @@ -8,6 +8,7 @@ import java.util.Arrays; import java.util.List; +import javax.sql.DataSource; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -28,6 +29,7 @@ private TestUserService(String id) { this.id = id; } + @Override protected void upgradeLevel(User user) { if (user.getId().equals(this.id)) { throw new TestUserServiceException(); @@ -45,6 +47,12 @@ static class TestUserServiceException extends RuntimeException { @Autowired UserDao userDao; + @Autowired + UserLevelUpgradePolicy userLevelUpgradePolicy; + + @Autowired + DataSource dataSource; + List users; @Before @@ -59,7 +67,7 @@ public void setUp() { } @Test - public void upgradeLevels() { + public void upgradeLevels() throws Exception { userDao.deleteAll(); for (User user : users) { userDao.add(user); @@ -103,15 +111,16 @@ private void checkLevelUpgraded(User user, Boolean upgraded) { } @Test - public void upgradeAllOrNothing() { + public void upgradeAllOrNothing() throws Exception { // user fixture 사용 - UserService testUserService = new TestUserService(users.get(3).getId()); + TestUserService testUserService = new TestUserService(users.get(3).getId()); testUserService.setUserDao(this.userDao); // userDao를 수동 DI해줌 + testUserService.setDataSource(this.dataSource); + testUserService.setUserLevelUpgradePolicy(this.userLevelUpgradePolicy); userDao.deleteAll(); for (User user : users) { userDao.add(user); } - try { testUserService.upgradeLevels(); fail("TetUserSericeException expected"); diff --git a/src/test-applicationContext.xml b/src/test-applicationContext.xml index 1c9f56b..1c449db 100644 --- a/src/test-applicationContext.xml +++ b/src/test-applicationContext.xml @@ -18,6 +18,7 @@ + From eafa6027427d1075c2e3cb0188dfdbec4c2da0e8 Mon Sep 17 00:00:00 2001 From: Kayoung Date: Thu, 10 Nov 2022 20:44:27 +0900 Subject: [PATCH 5/7] =?UTF-8?q?refactor(UserService):=20=ED=8A=B8=EB=9E=9C?= =?UTF-8?q?=EC=9E=AD=EC=85=98=20=EC=B6=94=EC=83=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PlatformTransactionManager 를 이용하여 데이터액세스계층에 대한 종속성을 제거했다. datasource를 통해 각기 다른 transaction manager를 동작시킬 수 있다. --- src/springbook/user/service/UserService.java | 22 ++++++++----------- .../user/service/UserServiceTest.java | 2 +- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/springbook/user/service/UserService.java b/src/springbook/user/service/UserService.java index fec6c98..bd18a81 100644 --- a/src/springbook/user/service/UserService.java +++ b/src/springbook/user/service/UserService.java @@ -1,10 +1,11 @@ package springbook.user.service; -import java.sql.Connection; import java.util.List; import javax.sql.DataSource; -import org.springframework.jdbc.datasource.DataSourceUtils; -import org.springframework.transaction.support.TransactionSynchronizationManager; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.DefaultTransactionDefinition; import springbook.user.dao.UserDao; import springbook.user.domain.Level; import springbook.user.domain.User; @@ -33,23 +34,18 @@ public void add(User user) { userDao.add(user); } - public void upgradeLevels() throws Exception { - TransactionSynchronizationManager.initSynchronization(); - Connection c = DataSourceUtils.getConnection(dataSource); - c.setAutoCommit(false); + public void upgradeLevels() { + PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource); + TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); try { List users = userDao.getAll(); for (User user : users) { upgradeLevel(user); } - c.commit(); + transactionManager.commit(status); } catch (Exception e) { - c.rollback(); + transactionManager.rollback(status); throw e; - } finally { - DataSourceUtils.releaseConnection(c, dataSource); - TransactionSynchronizationManager.unbindResource(this.dataSource); - TransactionSynchronizationManager.clearSynchronization(); } } diff --git a/src/springbook/user/service/UserServiceTest.java b/src/springbook/user/service/UserServiceTest.java index 89c1bb6..2572744 100644 --- a/src/springbook/user/service/UserServiceTest.java +++ b/src/springbook/user/service/UserServiceTest.java @@ -111,7 +111,7 @@ private void checkLevelUpgraded(User user, Boolean upgraded) { } @Test - public void upgradeAllOrNothing() throws Exception { + public void upgradeAllOrNothing() { // user fixture 사용 TestUserService testUserService = new TestUserService(users.get(3).getId()); testUserService.setUserDao(this.userDao); // userDao를 수동 DI해줌 From 732477475eb4b59c1ae1a3ac4b7d9079b54bc2fc Mon Sep 17 00:00:00 2001 From: Kayoung Date: Fri, 11 Nov 2022 00:43:51 +0900 Subject: [PATCH 6/7] =?UTF-8?q?refactor(UserService):=20=ED=8A=B8=EB=9E=9C?= =?UTF-8?q?=EC=9E=AD=EC=85=98=20=EC=B6=94=EC=83=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PlatformTransactionManager 변수에 구현체가 바뀔때마다 코드가 변경됐었다. 구현 클래스의 변경에 열려있지만 변경되지 않는 코드를 작성하기 위해 UserService에 DI 해서 사용한다. --- src/applicationContext.xml | 4 ++++ src/springbook/user/service/UserService.java | 7 +++---- src/springbook/user/service/UserServiceTest.java | 6 +++--- src/test-applicationContext.xml | 4 ++++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/applicationContext.xml b/src/applicationContext.xml index 3e1fca3..f377083 100644 --- a/src/applicationContext.xml +++ b/src/applicationContext.xml @@ -17,6 +17,10 @@ + + + diff --git a/src/springbook/user/service/UserService.java b/src/springbook/user/service/UserService.java index bd18a81..b5d1cc6 100644 --- a/src/springbook/user/service/UserService.java +++ b/src/springbook/user/service/UserService.java @@ -13,7 +13,7 @@ public class UserService { UserDao userDao; UserLevelUpgradePolicy userLevelUpgradePolicy; - DataSource dataSource; + PlatformTransactionManager transactionManager; public void setUserDao(UserDao userDao) { this.userDao = userDao; @@ -23,8 +23,8 @@ public void setUserLevelUpgradePolicy(UserLevelUpgradePolicy userLevelUpgradePol this.userLevelUpgradePolicy = userLevelUpgradePolicy; } - public void setDataSource(DataSource dataSource) { - this.dataSource = dataSource; + public void setTransactionManager(PlatformTransactionManager transactionManager) { + this.transactionManager = transactionManager; } public void add(User user) { @@ -35,7 +35,6 @@ public void add(User user) { } public void upgradeLevels() { - PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource); TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); try { List users = userDao.getAll(); diff --git a/src/springbook/user/service/UserServiceTest.java b/src/springbook/user/service/UserServiceTest.java index 2572744..be02996 100644 --- a/src/springbook/user/service/UserServiceTest.java +++ b/src/springbook/user/service/UserServiceTest.java @@ -8,13 +8,13 @@ import java.util.Arrays; import java.util.List; -import javax.sql.DataSource; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.PlatformTransactionManager; import springbook.user.dao.UserDao; import springbook.user.domain.Level; import springbook.user.domain.User; @@ -51,7 +51,7 @@ static class TestUserServiceException extends RuntimeException { UserLevelUpgradePolicy userLevelUpgradePolicy; @Autowired - DataSource dataSource; + PlatformTransactionManager transactionManager; List users; @@ -115,8 +115,8 @@ public void upgradeAllOrNothing() { // user fixture 사용 TestUserService testUserService = new TestUserService(users.get(3).getId()); testUserService.setUserDao(this.userDao); // userDao를 수동 DI해줌 - testUserService.setDataSource(this.dataSource); testUserService.setUserLevelUpgradePolicy(this.userLevelUpgradePolicy); + testUserService.setTransactionManager(transactionManager); userDao.deleteAll(); for (User user : users) { userDao.add(user); diff --git a/src/test-applicationContext.xml b/src/test-applicationContext.xml index 1c449db..393177a 100644 --- a/src/test-applicationContext.xml +++ b/src/test-applicationContext.xml @@ -18,6 +18,10 @@ + + + From 41df1b3f808c699ff519fba9033b157cf5a8da68 Mon Sep 17 00:00:00 2001 From: Kayoung Date: Fri, 11 Nov 2022 01:44:47 +0900 Subject: [PATCH 7/7] =?UTF-8?q?feat(User):=20email=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=8D=BC=ED=8B=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dao의 add()와 update() 도 함께 수정 --- src/springbook/user/dao/UserDaoJdbc.java | 23 +++++++++-------- src/springbook/user/dao/UserDaoTest.java | 25 +++++++++---------- src/springbook/user/domain/User.java | 13 ++++++++-- .../user/service/UserServiceTest.java | 10 ++++---- 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/src/springbook/user/dao/UserDaoJdbc.java b/src/springbook/user/dao/UserDaoJdbc.java index 399d4cd..0cbc794 100644 --- a/src/springbook/user/dao/UserDaoJdbc.java +++ b/src/springbook/user/dao/UserDaoJdbc.java @@ -1,5 +1,11 @@ package springbook.user.dao; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import javax.sql.DataSource; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; @@ -8,13 +14,6 @@ import springbook.user.domain.Level; import springbook.user.domain.User; -import javax.sql.DataSource; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; - public class UserDaoJdbc implements UserDao { private JdbcTemplate jdbcTemplate; @@ -39,8 +38,10 @@ public User mapRow(ResultSet rs, int rowNum) throws SQLException { public void add(final User user) { - this.jdbcTemplate.update("insert into users(id, name, password, level, login, recommend) values(?, ? , ?,?,?, ?)", - user.getId(), user.getName(), user.getPassword(), user.getLevel().intValue(), user.getLogin(), user.getRecommend()); + this.jdbcTemplate.update( + "insert into users(id, name, password, level, login, recommend, email) values(?, ?, ?, ?, ?, ?, ?)", + user.getId(), user.getName(), user.getPassword(), user.getLevel().intValue(), user.getLogin(), + user.getRecommend(), user.getEmail()); } @@ -56,8 +57,8 @@ public List getAll() { public void update(User user) { this.jdbcTemplate.update( "update users set name = ?, password = ?, level = ?, login = ?," + - "recommend = ? where id = ?", user.getName(), user.getPassword(), - user.getLevel().intValue(), user.getLogin(), user.getRecommend(), + "recommend = ?, email = ? where id = ?", user.getName(), user.getPassword(), + user.getLevel().intValue(), user.getLogin(), user.getRecommend(), user.getEmail(), user.getId()); } diff --git a/src/springbook/user/dao/UserDaoTest.java b/src/springbook/user/dao/UserDaoTest.java index 5ede7a2..51d8cd1 100644 --- a/src/springbook/user/dao/UserDaoTest.java +++ b/src/springbook/user/dao/UserDaoTest.java @@ -1,5 +1,11 @@ package springbook.user.dao; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.sql.SQLException; +import java.util.List; +import javax.sql.DataSource; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -14,13 +20,6 @@ import springbook.user.domain.Level; import springbook.user.domain.User; -import javax.sql.DataSource; -import java.sql.SQLException; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "/test-applicationContext.xml") public class UserDaoTest { @@ -35,13 +34,13 @@ public class UserDaoTest { @Before public void setUp() { - this.user1 = new User("aaaa", "운가용", "sleep", Level.BASIC, 1, 0); - this.user2 = new User("aaab", "로지지징", "gohome", Level.SILVER, 55, 10); - this.user3 = new User("aaac", "메롱", "iiii", Level.GOLD, 100, 40); + this.user1 = new User("aaaa", "운가용", "sleep", "user1@email.com", Level.BASIC, 1, 0); + this.user2 = new User("aaab", "로지지징", "gohome", "user2@email.com", Level.SILVER, 55, 10); + this.user3 = new User("aaac", "메롱", "iiii", "user3@eamil.com", Level.GOLD, 100, 40); } @Test // Junit에게 테스트용 메소드임을 알려준다. - public void addAndGet() throws SQLException, ClassNotFoundException { // JUnit 테스트 메소드는 반드시 public으로 선언돼야한다. + public void addAndGet() { // JUnit 테스트 메소드는 반드시 public으로 선언돼야한다. dao.deleteAll(); assertThat(dao.getCount(), is(0)); dao.add(user1); @@ -139,8 +138,7 @@ public void sqlExceptionTranslate() { } @Test - public void update() - { + public void update() { dao.deleteAll(); dao.add(user1); @@ -155,6 +153,7 @@ public void update() user1.setLevel(Level.GOLD); user1.setLogin(1000); user1.setRecommend(999); + user1.setEmail("hihi@email.com"); dao.update(user1); User user1update = dao.get(user1.getId()); diff --git a/src/springbook/user/domain/User.java b/src/springbook/user/domain/User.java index 3425409..29b7908 100644 --- a/src/springbook/user/domain/User.java +++ b/src/springbook/user/domain/User.java @@ -4,6 +4,7 @@ public class User { String id; String name; String password; + String email; Level level; int login; int recommend; @@ -11,16 +12,16 @@ public class User { public User() { } - public User(String id, String name, String password, Level level, int login, int recommend) { + public User(String id, String name, String password, String email, Level level, int login, int recommend) { this.id = id; this.name = name; this.password = password; + this.email = email; this.level = level; this.login = login; this.recommend = recommend; } - public String getId() { return id; } @@ -69,6 +70,14 @@ public void setRecommend(int recommend) { this.recommend = recommend; } + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + public void upgradeLevel() { Level nextLevel = this.level.nextLevel(); if (nextLevel == null) { diff --git a/src/springbook/user/service/UserServiceTest.java b/src/springbook/user/service/UserServiceTest.java index be02996..5d71c83 100644 --- a/src/springbook/user/service/UserServiceTest.java +++ b/src/springbook/user/service/UserServiceTest.java @@ -58,11 +58,11 @@ static class TestUserServiceException extends RuntimeException { @Before public void setUp() { users = Arrays.asList( - new User("kayoung", "윤가영", "p1", Level.BASIC, MIN_LOGCOUNT_FOR_SILVER - 1, 0), - new User("haneul", "이하늘", "p2", Level.BASIC, MIN_LOGCOUNT_FOR_SILVER, 0), - new User("oieuoa", "윤실버", "p3", Level.SILVER, 60, MIN_RECCOMENT_FOR_GOLD - 1), - new User("silversky", "스카이", "p4", Level.SILVER, 60, MIN_RECCOMENT_FOR_GOLD), - new User("blue", "교수님", "p5", Level.GOLD, 100, Integer.MAX_VALUE) + new User("kayoung", "윤가영", "p1", "kayoung@email.com", Level.BASIC, MIN_LOGCOUNT_FOR_SILVER - 1, 0), + new User("haneul", "이하늘", "p2", "haneul@email.com", Level.BASIC, MIN_LOGCOUNT_FOR_SILVER, 0), + new User("oieuoa", "윤실버", "p3", "oieuoa@email.com", Level.SILVER, 60, MIN_RECCOMENT_FOR_GOLD - 1), + new User("silversky", "스카이", "p4", "silverskey@email.com", Level.SILVER, 60, MIN_RECCOMENT_FOR_GOLD), + new User("blue", "교수님", "p5", "blue@email.com", Level.GOLD, 100, Integer.MAX_VALUE) ); }