MME-25 Test for spec to entity fields transfer.
This commit is contained in:
parent
fe0f70cf7d
commit
2fbb9ee51e
@ -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();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user