diff --git a/src/main/java/video/domain/rental/Rental.java b/src/main/java/video/domain/rental/Rental.java index 72c1e53..63013ee 100644 --- a/src/main/java/video/domain/rental/Rental.java +++ b/src/main/java/video/domain/rental/Rental.java @@ -29,7 +29,11 @@ public Movie getMovie() { public int amount() { // 金額を計算 int daysRented = getDaysRented(); - switch (getMovie().getPriceType()) { + return amount(daysRented); + } + + private int amount(int daysRented) { + switch (movie.getPriceType()) { case REGULAR: return regularPrice.amount(daysRented); case NEW_RELEASE: diff --git a/src/test/java/video/domain/price/ChildrenPriceTest.java b/src/test/java/video/domain/price/ChildrenPriceTest.java new file mode 100644 index 0000000..717f757 --- /dev/null +++ b/src/test/java/video/domain/price/ChildrenPriceTest.java @@ -0,0 +1,30 @@ +package video.domain.price; + +import org.junit.jupiter.api.Test; +import video.domain.Movie; +import video.domain.PriceType; +import video.domain.rental.Rental; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class ChildrenPriceTest { + + Movie 子供用作品_となりのトトロ = new Movie("となりのトトロ", PriceType.CHILDREN); + @Test + void 子供用作品を4日のレンタル料金() { + Rental sut = new Rental(子供用作品_となりのトトロ, 4); + + double result = sut.amount(); + + assertEquals(300, result); + } + + @Test + void 子供用作品を3日のレンタル料金() { + Rental sut = new Rental(子供用作品_となりのトトロ, 3); + + double result = sut.amount(); + + assertEquals(150, result); + } +} \ No newline at end of file diff --git a/src/test/java/video/domain/price/NewReleasePriceTest.java b/src/test/java/video/domain/price/NewReleasePriceTest.java new file mode 100644 index 0000000..b37bd46 --- /dev/null +++ b/src/test/java/video/domain/price/NewReleasePriceTest.java @@ -0,0 +1,22 @@ +package video.domain.price; + +import org.junit.jupiter.api.Test; +import video.domain.Movie; +import video.domain.PriceType; +import video.domain.rental.Rental; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class NewReleasePriceTest { + + Movie 新作_君たちはどう生きるか = new Movie("君たちはどう生きるか", PriceType.NEW_RELEASE); + + @Test + void 新作を4日のレンタル料金() { + Rental sut = new Rental(新作_君たちはどう生きるか, 4); + + double result = sut.amount(); + + assertEquals(1200, result); + } +} \ No newline at end of file diff --git a/src/test/java/video/domain/price/RegularPriceTest.java b/src/test/java/video/domain/price/RegularPriceTest.java new file mode 100644 index 0000000..4ddcb77 --- /dev/null +++ b/src/test/java/video/domain/price/RegularPriceTest.java @@ -0,0 +1,31 @@ +package video.domain.price; + +import org.junit.jupiter.api.Test; +import video.domain.Movie; +import video.domain.PriceType; +import video.domain.rental.Rental; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class RegularPriceTest { + + Movie 旧作_トップガン = new Movie("トップガン", PriceType.REGULAR); + + @Test + void 旧作を2日のレンタル料金() { + Rental sut = new Rental(旧作_トップガン, 2); + + double result = sut.amount(); + + assertEquals(200, result); + } + + @Test + void 旧作を3日のレンタル料金() { + Rental sut = new Rental(旧作_トップガン, 3); + + double result = sut.amount(); + + assertEquals(350, result); + } +} \ No newline at end of file diff --git a/src/test/java/video/domain/rental/RentalTest.java b/src/test/java/video/domain/rental/RentalTest.java index 11bc539..a13a496 100644 --- a/src/test/java/video/domain/rental/RentalTest.java +++ b/src/test/java/video/domain/rental/RentalTest.java @@ -24,7 +24,6 @@ class レンタル料金テスト { assertEquals(1200, result); } - @Test void 旧作を2日のレンタル料金() { Rental sut = new Rental(旧作_トップガン, 2); @@ -34,15 +33,6 @@ class レンタル料金テスト { assertEquals(200, result); } - @Test - void 旧作を3日のレンタル料金() { - Rental sut = new Rental(旧作_トップガン, 3); - - double result = sut.amount(); - - assertEquals(350, result); - } - @Test void 子供用作品を4日のレンタル料金() { Rental sut = new Rental(子供用作品_となりのトトロ, 4); @@ -52,14 +42,6 @@ class レンタル料金テスト { assertEquals(300, result); } - @Test - void 子供用作品を3日のレンタル料金() { - Rental sut = new Rental(子供用作品_となりのトトロ, 3); - - double result = sut.amount(); - - assertEquals(150, result); - } } @Nested