diff --git a/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeServiceTests.java b/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeServiceTests.java index c07b3f3..7f7f7af 100644 --- a/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeServiceTests.java +++ b/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeServiceTests.java @@ -1,6 +1,10 @@ package app.mealsmadeeasy.api.recipe; import app.mealsmadeeasy.api.PostgresTestsExtension; +import app.mealsmadeeasy.api.image.Image; +import app.mealsmadeeasy.api.image.ImageException; +import app.mealsmadeeasy.api.image.ImageService; +import app.mealsmadeeasy.api.image.spec.ImageCreateSpec; import app.mealsmadeeasy.api.recipe.spec.RecipeCreateSpec; import app.mealsmadeeasy.api.recipe.spec.RecipeUpdateSpec; import app.mealsmadeeasy.api.recipe.star.RecipeStar; @@ -17,13 +21,16 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.security.access.AccessDeniedException; +import java.io.IOException; +import java.io.InputStream; import java.util.List; import java.util.UUID; import static app.mealsmadeeasy.api.recipe.ContainsRecipesMatcher.containsRecipes; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertThrows; // TODO: test mainImage included // TODO: test prep/cooking/total times included @@ -40,6 +47,9 @@ public class RecipeServiceTests { @Autowired private UserRepository userRepository; + @Autowired + private ImageService imageService; + private User seedUser() { final String uuid = UUID.randomUUID().toString(); final User draft = User.getDefaultDraft(); @@ -49,6 +59,24 @@ public class RecipeServiceTests { return this.userRepository.save(draft); } + private Image seedImage(User owner) throws ImageException, IOException { + final String uuid = UUID.randomUUID().toString(); + final ImageCreateSpec spec = ImageCreateSpec + .builder() + .alt("Test alt") + .caption("Test caption") + .isPublic(true) + .build(); + final InputStream inputStream = this.getClass().getResourceAsStream("/HAL9000.svg"); + return this.imageService.create( + owner, + uuid + ".svg", + inputStream, + 27881L, + spec + ); + } + private Recipe createTestRecipe(@Nullable User owner) { return this.createTestRecipe(owner, false); } @@ -75,6 +103,33 @@ public class RecipeServiceTests { assertThat(recipe.getRawText(), is("Hello!")); } + @Test + public void whenCreate_allFieldsTransferredFromSpec() throws Exception { + final User owner = this.seedUser(); + final Image image = this.seedImage(owner); + final RecipeCreateSpec spec = RecipeCreateSpec.builder() + .title("Recipe Title") + .slug("recipe-slug") + .preparationTime(15) + .cookingTime(30) + .totalTime(45) + .rawText("# Hello Recipe") + .isPublic(true) + .mainImage(image) + .build(); + final Recipe recipe = this.recipeService.create(owner, spec, false); + assertThat(recipe.getId(), is(notNullValue())); + assertThat(recipe.getTitle(), is("Recipe Title")); + assertThat(recipe.getSlug(), is("recipe-slug")); + assertThat(recipe.getPreparationTime(), is(15)); + assertThat(recipe.getCookingTime(), is(30)); + assertThat(recipe.getTotalTime(), is(45)); + assertThat(recipe.getRawText(), is("# Hello Recipe")); + assertThat(recipe.getMainImage(), is(notNullValue())); + assertThat(recipe.getMainImage().getId(), is(image.getId())); + assertThat(recipe.getIsPublic(), is(true)); + } + @Test public void getByIdPublicNoViewerDoesNotThrow() { final User owner = this.seedUser();