From 484c3455d845897a101275b5b01ee8a8e2dc91e2 Mon Sep 17 00:00:00 2001
From: Wo-ogie <siwall0105@gmail.com>
Date: Tue, 12 Mar 2024 21:53:20 +0900
Subject: [PATCH] =?UTF-8?q?test:=20#67=20`InstrumentRepository`=20target?=
 =?UTF-8?q?=20coverage=20=EB=8B=AC=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=9C?=
 =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20?=
 =?UTF-8?q?=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../repository/InstrumentRepositoryTest.java  | 69 +++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/src/test/java/com/ajou/hertz/integration/domain/instrument/repository/InstrumentRepositoryTest.java b/src/test/java/com/ajou/hertz/integration/domain/instrument/repository/InstrumentRepositoryTest.java
index ddc536e..2d35aad 100644
--- a/src/test/java/com/ajou/hertz/integration/domain/instrument/repository/InstrumentRepositoryTest.java
+++ b/src/test/java/com/ajou/hertz/integration/domain/instrument/repository/InstrumentRepositoryTest.java
@@ -92,6 +92,42 @@ public InstrumentRepositoryTest(
 		assertThat(result.getNumberOfElements()).isEqualTo(savedInstruments.size() - 1);
 	}
 
+	@Test
+	void 필터링_조건이_주어지고_일렉_기타_목록을_조회하면_조건에_일치하는_매물이_조회된다() throws Exception {
+		// given
+		InstrumentSortOption sortOption = InstrumentSortOption.CREATED_BY_DESC;
+		ElectricGuitarFilterConditions filterConditions = createElectricGuitarFilterConditions(
+			InstrumentProgressStatus.SELLING,
+			ElectricGuitarBrand.FENDER_USA,
+			ElectricGuitarModel.TELECASTER,
+			GuitarColor.RED
+		);
+		User user = userRepository.save(createUser());
+		sut.saveAll(List.of(
+			createBassGuitar(user),
+			createElectricGuitar(
+				user,
+				InstrumentProgressStatus.SELLING,
+				ElectricGuitarBrand.FENDER_JAPAN,
+				ElectricGuitarModel.TELECASTER,
+				GuitarColor.BLACK
+			),
+			createElectricGuitar(
+				user,
+				InstrumentProgressStatus.SELLING,
+				ElectricGuitarBrand.FENDER_USA,
+				ElectricGuitarModel.TELECASTER,
+				GuitarColor.RED
+			)
+		));
+
+		// when
+		Page<ElectricGuitar> result = sut.findElectricGuitars(0, 10, sortOption, filterConditions);
+
+		// then
+		assertThat(result.getNumberOfElements()).isEqualTo(1);
+	}
+
 	@Test
 	void 베이스_기타_목록을_조회한다() throws Exception {
 		// given
@@ -207,6 +243,30 @@ private User createUser() throws Exception {
 		);
 	}
 
+	private ElectricGuitar createElectricGuitar(
+		User seller,
+		InstrumentProgressStatus progressStatus,
+		ElectricGuitarBrand brand,
+		ElectricGuitarModel model,
+		GuitarColor color
+	) throws Exception {
+		return ReflectionUtils.createElectricGuitar(
+			null,
+			seller,
+			"Test electric guitar",
+			progressStatus,
+			createAddress(),
+			(short)3,
+			550000,
+			true,
+			"description",
+			brand,
+			model,
+			(short)2014,
+			color
+		);
+	}
+
 	private ElectricGuitar createElectricGuitar(User seller) throws Exception {
 		return ReflectionUtils.createElectricGuitar(
 			null,
@@ -313,6 +373,15 @@ private ElectricGuitarFilterConditions createEmptyElectricGuitarFilterConditions
 		return ReflectionUtils.createElectricGuitarFilterConditions(null, null, null, null, null, null);
 	}
 
+	private ElectricGuitarFilterConditions createElectricGuitarFilterConditions(
+		InstrumentProgressStatus progressStatus,
+		ElectricGuitarBrand brand,
+		ElectricGuitarModel model,
+		GuitarColor color
+	) throws Exception {
+		return ReflectionUtils.createElectricGuitarFilterConditions(progressStatus, null, null, brand, model, color);
+	}
+
 	private BassGuitarFilterConditions createEmptyBassGuitarFilterConditions() throws Exception {
 		return ReflectionUtils.createBassGuitarFilterConditions(null, null, null, null, null, null, null);
 	}