Skip to content

Commit da40460

Browse files
authored
Merge pull request #150 from prgrms-aibe-devcourse/feat/expense
refactor: setter 제거
2 parents 0b473d6 + 437ac12 commit da40460

11 files changed

Lines changed: 114 additions & 215 deletions

File tree

src/main/java/store/lastdance/domain/expense/Expense.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ public class Expense extends BaseTimeEntity {
3434
@Enumerated(EnumType.STRING)
3535
private ExpenseType expenseType;
3636

37-
@Setter
3837
@Column(name = "split_type", length = 20)
3938
@Enumerated(EnumType.STRING)
4039
private SplitType splitType;
@@ -54,17 +53,14 @@ public class Expense extends BaseTimeEntity {
5453
private User user;
5554

5655
// === 설정 메서드들 ===
57-
@Setter
5856
@ManyToOne(fetch = FetchType.LAZY)
5957
@JoinColumn(name = "group_id")
6058
private Group group;
6159

62-
@Setter
6360
@OneToOne(fetch = FetchType.LAZY)
6461
@JoinColumn(name = "receipt_image_file_id")
6562
private ImageFile receiptImageFile;
6663

67-
@Setter
6864
@ManyToOne(fetch = FetchType.LAZY)
6965
@JoinColumn(name = "original_expense_id")
7066
private Expense originalExpense;
@@ -102,4 +98,19 @@ public void updateExpenseDate(LocalDate expenseDate) {
10298
this.expenseDate = expenseDate;
10399
}
104100

101+
public void updateSplitType(SplitType splitType) {
102+
this.splitType = splitType;
103+
}
104+
105+
public void updateGroup(Group group) {
106+
this.group = group;
107+
}
108+
109+
public void updateReceiptImageFile(ImageFile receiptImageFile) {
110+
this.receiptImageFile = receiptImageFile;
111+
}
112+
113+
public void updateOriginalExpense(Expense originalExpense) {
114+
this.originalExpense = originalExpense;
115+
}
105116
}

src/main/java/store/lastdance/domain/user/User.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.UUID;
1010

1111
@Getter
12-
@Setter
1312
@Entity
1413
@Table(name = "users", indexes = {
1514
@Index(name = "idx_user_email", columnList = "email"),
@@ -78,7 +77,15 @@ public User(@NonNull String email, @NonNull String username, @NonNull String nic
7877
public void updateNickname(String nickname) {
7978
this.nickname = nickname;
8079
}
81-
80+
81+
public void updateEmail(String email) {
82+
this.email = email;
83+
}
84+
85+
public void updateProviderId(String providerId) {
86+
this.providerId = providerId;
87+
}
88+
8289
public void updateProfileImage(ImageFile profileImageFile) {
8390
this.profileImageFile = profileImageFile;
8491
}
@@ -112,4 +119,6 @@ public void unban() {
112119
public void updateBudget(Integer newBudget) {
113120
this.userBudget = newBudget;
114121
}
122+
123+
115124
}

src/main/java/store/lastdance/service/auth/AuthServiceImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import store.lastdance.exception.ErrorCode;
1111
import store.lastdance.security.AuthRedisService;
1212
import store.lastdance.security.JwtTokenProvider;
13+
import store.lastdance.service.notification.SSENotificationService;
1314
import store.lastdance.service.notification.SSENotificationServiceImpl;
1415
import store.lastdance.service.user.UserService;
1516
import store.lastdance.util.CookieUtils;
@@ -25,7 +26,8 @@ public class AuthServiceImpl implements AuthService {
2526
private final UserService userService;
2627
private final CookieUtils cookieUtils;
2728
private final AuthRedisService authRedisService;
28-
private final SSENotificationServiceImpl sseNotificationService;
29+
// private final SSENotificationServiceImpl sseNotificationService;
30+
private final SSENotificationService sseNotificationService;
2931

3032
@Override
3133
public void refreshToken(HttpServletRequest request, HttpServletResponse response) {

src/main/java/store/lastdance/service/expense/ExpenseServiceImpl.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ public ExpenseResponseDTO createGroupExpense(UUID userId, CreateGroupExpenseRequ
8484

8585
// 그룹 정보 설정
8686
Group group = findGroupById(requestDTO.groupId());
87-
expense.setGroup(group);
88-
expense.setSplitType(requestDTO.splitType());
87+
expense.updateGroup(group);
88+
expense.updateSplitType(requestDTO.splitType());
8989

9090
Expense savedExpense = expenseRepository.save(expense);
9191

@@ -122,7 +122,7 @@ private Expense createBaseExpense(
122122

123123
// 영수증 파일 ID 설정
124124
if (uploadedImage != null) {
125-
expense.setReceiptImageFile(uploadedImage);
125+
expense.updateReceiptImageFile(uploadedImage);
126126
}
127127
// 메모 설정
128128
if (request.memo() != null) {
@@ -233,11 +233,11 @@ private void createShareExpense(Expense original, User user, BigDecimal shareAmo
233233
.expenseDate(original.getExpenseDate())
234234
.build();
235235

236-
shareExpense.setGroup(original.getGroup());
236+
shareExpense.updateGroup(original.getGroup());
237237
shareExpense.updateMemo(original.getMemo());
238238

239239
// 원본 지출 id 설정
240-
shareExpense.setOriginalExpense(original);
240+
shareExpense.updateOriginalExpense(original);
241241
expenseRepository.save(shareExpense);
242242
}
243243

@@ -300,7 +300,7 @@ public ExpenseResponseDTO updateExpense(UUID userId, Long expenseId, UpdateExpen
300300
if (receiptFile != null && !receiptFile.isEmpty()) {
301301
// 새 영수증 업로드
302302
uploadedImage = imageService.uploadImageToS3(receiptFile, "receipt-image", 10 * 1024 * 1024);
303-
expense.setReceiptImageFile(uploadedImage);
303+
expense.updateReceiptImageFile(uploadedImage);
304304

305305
// 기존 영수증 삭제 (새 파일 업로드 성공 후)
306306
if (oldReceiptFileId != null) {
@@ -310,7 +310,7 @@ public ExpenseResponseDTO updateExpense(UUID userId, Long expenseId, UpdateExpen
310310

311311
// 그룹 지출의 경우 분담 정보 업데이트
312312
if (expense.getExpenseType() == ExpenseType.GROUP && expense.getSplitType() != null) {
313-
expense.setSplitType(requestDTO.splitType());
313+
expense.updateSplitType(requestDTO.splitType());
314314
updateGroupExpenseSplits(expense, requestDTO.splitData());
315315
}
316316
} catch (Exception e) {
@@ -477,7 +477,7 @@ public void deleteReceiptImage(Long expenseId, UUID userId) {
477477
// S3에서 파일 삭제
478478
imageService.deleteImageFromS3(receiptImageFile.getFileId());
479479

480-
expense.setReceiptImageFile(null);
480+
expense.updateReceiptImageFile(null);
481481
}
482482

483483
/**

src/main/java/store/lastdance/service/user/UserServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,9 @@ public void deactivateUser(UUID userId, HttpServletRequest request, HttpServletR
148148

149149
// OAuth 정보 및 이메일 마스킹으로 재가입 허용
150150
String deletedSuffix = "deleted_%s".formatted(userId.toString());
151-
user.setEmail(deletedSuffix + "@lastdance.store");
152-
user.setProviderId(deletedSuffix);
153-
user.setNickname(deletedSuffix);
151+
user.updateEmail(deletedSuffix + "@lastdance.store");
152+
user.updateProviderId(deletedSuffix);
153+
user.updateNickname(deletedSuffix);
154154

155155
user.deactivate();
156156
eventPublisher.publishEvent(new UserDeactivatedEvent(this, userId, request, response));

src/test/java/store/lastdance/controller/admin/AdminControllerTest.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
55
import org.hamcrest.Matchers;
6-
import org.junit.jupiter.api.BeforeEach;
7-
import org.junit.jupiter.api.DisplayName;
8-
import org.junit.jupiter.api.Nested;
9-
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.*;
107
import org.junit.jupiter.api.extension.ExtendWith;
118
import org.mockito.InjectMocks;
129
import org.mockito.Mock;
@@ -106,7 +103,7 @@ private void setUpCommonMocks() {
106103

107104
// Mock for page-based requests - need to be more specific
108105
lenient().when(adminService.getUserManagement(any(), anyInt(), anyInt(), anyString(),
109-
any(), any(), anyString(), any(), anyString(), anyString()))
106+
any(), any(), anyString(), any(), anyString(), anyString()))
110107
.thenReturn(createUserManagementResponseDTO());
111108

112109
lenient().when(adminService.getUserManagementDetail(any(), any()))
@@ -120,7 +117,7 @@ private void setUpCommonMocks() {
120117

121118
// Mock for report management
122119
lenient().when(adminService.getReportManagement(any(), anyInt(), anyInt(), any(),
123-
any(), anyString(), anyString(), anyString(), anyString(), anyString()))
120+
any(), anyString(), anyString(), anyString(), anyString(), anyString()))
124121
.thenReturn(createReportManagementResponseDTO());
125122

126123
lenient().when(adminService.getReportManagementDetail(any(), anyLong()))
@@ -132,7 +129,7 @@ private void setUpCommonMocks() {
132129

133130
// Mock for AI judgment - fix parameter count (7 parameters, not 8)
134131
lenient().when(adminService.getAiJudgment(any(), anyInt(), anyInt(), anyString(),
135-
anyString(), anyString(), anyString()))
132+
anyString(), anyString(), anyString()))
136133
.thenReturn(createAiJudgmentResponseDTO());
137134

138135
lenient().when(adminService.getAiJudgmentDetail(any(), any()))
@@ -301,7 +298,7 @@ class ReportManagementTests {
301298
void getReportManagement_Success() throws Exception {
302299
// Override the general mock for this specific test
303300
given(adminService.getReportManagement(any(), eq(1), eq(10), ReportStatus.valueOf(eq("PENDING")),
304-
ReportType.valueOf(eq("USER")), anyString(), any() ,any() ,any() , any(), any(), any()))
301+
ReportType.valueOf(eq("USER")), anyString(), any(), any(), any(), any()))
305302
.willReturn(createReportManagementResponseDTO());
306303

307304
mockMvc.perform(get("/api/v1/admin/reports")

src/test/java/store/lastdance/service/admin/AdminServiceTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ void setUp() {
9797
.role(UserRole.ADMIN)
9898
.isActive(true)
9999
.build();
100-
adminUser.setUserId(adminId);
101100

102101
normalUser = User.builder()
103102
.email("user@example.com")
@@ -108,7 +107,6 @@ void setUp() {
108107
.role(UserRole.USER)
109108
.isActive(true)
110109
.build();
111-
normalUser.setUserId(userId);
112110

113111
reportedUser = User.builder()
114112
.email("reported@example.com")
@@ -119,7 +117,6 @@ void setUp() {
119117
.role(UserRole.USER)
120118
.isActive(true)
121119
.build();
122-
reportedUser.setUserId(reportedUserId);
123120

124121
report = Report.builder()
125122
.reporterId(userId)
@@ -329,7 +326,7 @@ void getReportManagement_Success() {
329326

330327
// when
331328
ReportManagementResponseDTO result = adminService.getReportManagement(
332-
adminId, 1, 10, ReportStatus.valueOf("all"), ReportType.POST, "", "", "", "", "", "", "");
329+
adminId, 1, 10, ReportStatus.valueOf("all"), ReportType.POST, "", "", "", "", "");
333330

334331
// then
335332
assertThat(result).isNotNull();
@@ -538,7 +535,6 @@ void processingLargeDataSet() {
538535
.role(UserRole.USER)
539536
.isActive(true)
540537
.build();
541-
user.setUserId(UUID.randomUUID()); // userId 설정
542538
return user;
543539
})
544540
.toList();

src/test/java/store/lastdance/service/auth/AuthServiceImplTest.java

Lines changed: 0 additions & 134 deletions
This file was deleted.

0 commit comments

Comments
 (0)