1
1
package in .koreatech .koin .admin .acceptance ;
2
2
3
- import static in .koreatech .koin .support .JsonAssertions .assertThat ;
4
3
import static org .assertj .core .api .SoftAssertions .assertSoftly ;
5
4
import static org .hibernate .validator .internal .util .Contracts .assertNotNull ;
6
5
import static org .junit .Assert .assertEquals ;
7
6
import static org .junit .jupiter .api .Assertions .assertAll ;
8
7
9
- import java .util .List ;
10
- import java .util .Optional ;
11
-
12
8
import org .assertj .core .api .SoftAssertions ;
13
9
import org .junit .jupiter .api .DisplayName ;
14
10
import org .junit .jupiter .api .Test ;
15
11
import org .springframework .beans .factory .annotation .Autowired ;
16
12
import org .springframework .http .HttpStatus ;
17
13
18
14
import in .koreatech .koin .AcceptanceTest ;
19
- import in .koreatech .koin .admin .land .dto .AdminLandsRequest ;
20
15
import in .koreatech .koin .admin .land .repository .AdminLandRepository ;
21
16
import in .koreatech .koin .domain .land .model .Land ;
22
17
import in .koreatech .koin .domain .user .model .User ;
18
+ import in .koreatech .koin .fixture .LandFixture ;
23
19
import in .koreatech .koin .fixture .UserFixture ;
24
20
import in .koreatech .koin .support .JsonAssertions ;
25
21
import io .restassured .RestAssured ;
@@ -30,6 +26,9 @@ class AdminLandApiTest extends AcceptanceTest {
30
26
@ Autowired
31
27
private AdminLandRepository adminLandRepository ;
32
28
29
+ @ Autowired
30
+ private LandFixture landFixture ;
31
+
33
32
@ Autowired
34
33
private UserFixture userFixture ;
35
34
@@ -232,4 +231,110 @@ void getLand() {
232
231
""" , landId ));
233
232
}
234
233
234
+ @ Test
235
+ @ DisplayName ("관리자 권한으로 복덕방 정보를 수정한다." )
236
+ void updateLand () {
237
+ Land land = landFixture .신안빌 ();
238
+ Integer landId = land .getId ();
239
+
240
+ User adminUser = userFixture .코인_운영자 ();
241
+ String token = userFixture .getToken (adminUser );
242
+
243
+ String jsonBody = """
244
+ {
245
+ "name": "신안빌 수정",
246
+ "internal_name": "신안빌",
247
+ "size": "110.0",
248
+ "room_type": "투룸",
249
+ "latitude": "37.556",
250
+ "longitude": "126.556",
251
+ "phone": "010-1234-5679",
252
+ "image_urls": ["http://newimage1.com", "http://newimage2.com"],
253
+ "address": "서울시 강남구 신사동",
254
+ "description": "신안빌 수정 설명",
255
+ "floor": 5,
256
+ "deposit": "50",
257
+ "monthly_fee": "150만원",
258
+ "charter_fee": "5000",
259
+ "management_fee": "150",
260
+ "opt_closet": true,
261
+ "opt_tv": false,
262
+ "opt_microwave": true,
263
+ "opt_gas_range": false,
264
+ "opt_induction": true,
265
+ "opt_water_purifier": false,
266
+ "opt_air_conditioner": true,
267
+ "opt_washer": true
268
+ }
269
+ """ ;
270
+
271
+ RestAssured
272
+ .given ()
273
+ .header ("Authorization" , "Bearer " + token )
274
+ .contentType ("application/json" )
275
+ .body (jsonBody )
276
+ .when ()
277
+ .put ("/admin/lands/{id}" , landId )
278
+ .then ()
279
+ .statusCode (HttpStatus .OK .value ())
280
+ .extract ();
281
+
282
+ Land updatedLand = adminLandRepository .getById (landId );
283
+
284
+ assertSoftly (softly -> {
285
+ softly .assertThat (updatedLand .getName ()).isEqualTo ("신안빌 수정" );
286
+ softly .assertThat (updatedLand .getInternalName ()).isEqualTo ("신안빌" );
287
+ softly .assertThat (updatedLand .getSize ()).isEqualTo ("110.0" );
288
+ softly .assertThat (updatedLand .getRoomType ()).isEqualTo ("투룸" );
289
+ softly .assertThat (updatedLand .getLatitude ()).isEqualTo (37.556 );
290
+ softly .assertThat (updatedLand .getLongitude ()).isEqualTo (126.556 );
291
+ softly .assertThat (updatedLand .getPhone ()).isEqualTo ("010-1234-5679" );
292
+ softly .assertThat (updatedLand .getImageUrls ()).containsAnyOf ("http://newimage1.com" , "http://newimage2.com" );
293
+ softly .assertThat (updatedLand .getAddress ()).isEqualTo ("서울시 강남구 신사동" );
294
+ softly .assertThat (updatedLand .getDescription ()).isEqualTo ("신안빌 수정 설명" );
295
+ softly .assertThat (updatedLand .getFloor ()).isEqualTo (5 );
296
+ softly .assertThat (updatedLand .getDeposit ()).isEqualTo ("50" );
297
+ softly .assertThat (updatedLand .getMonthlyFee ()).isEqualTo ("150만원" );
298
+ softly .assertThat (updatedLand .getCharterFee ()).isEqualTo ("5000" );
299
+ softly .assertThat (updatedLand .getManagementFee ()).isEqualTo ("150" );
300
+ softly .assertThat (updatedLand .isOptCloset ()).isTrue ();
301
+ softly .assertThat (updatedLand .isOptTv ()).isFalse ();
302
+ softly .assertThat (updatedLand .isOptMicrowave ()).isTrue ();
303
+ softly .assertThat (updatedLand .isOptGasRange ()).isFalse ();
304
+ softly .assertThat (updatedLand .isOptInduction ()).isTrue ();
305
+ softly .assertThat (updatedLand .isOptWaterPurifier ()).isFalse ();
306
+ softly .assertThat (updatedLand .isOptAirConditioner ()).isTrue ();
307
+ softly .assertThat (updatedLand .isOptWasher ()).isTrue ();
308
+ softly .assertThat (updatedLand .isDeleted ()).isEqualTo (false );
309
+ });
310
+ }
311
+
312
+ @ Test
313
+ @ DisplayName ("관리자 권한으로 복덕방 삭제를 취소한다." )
314
+ void undeleteLand () {
315
+ Land deletedLand = landFixture .삭제된_복덕방 ();
316
+ Integer landId = deletedLand .getId ();
317
+
318
+ User adminUser = userFixture .코인_운영자 ();
319
+ String token = userFixture .getToken (adminUser );
320
+
321
+ RestAssured
322
+ .given ()
323
+ .header ("Authorization" , "Bearer " + token )
324
+ .when ()
325
+ .post ("/admin/lands/{id}/undelete" , landId )
326
+ .then ()
327
+ .statusCode (HttpStatus .OK .value ())
328
+ .extract ();
329
+
330
+ Land undeletedLand = adminLandRepository .getById (landId );
331
+
332
+ SoftAssertions .assertSoftly (softly -> {
333
+ softly .assertThat (undeletedLand ).isNotNull ();
334
+ softly .assertThat (undeletedLand .getName ()).isEqualTo ("삭제된 복덕방" );
335
+ softly .assertThat (undeletedLand .isDeleted ()).isFalse ();
336
+ });
337
+ }
338
+
339
+
235
340
}
0 commit comments