package io.oasp.gastronomy.restaurant.offermanagement.batch.impl.productimport; import static org.junit.Assert.assertEquals; import java.util.List; import javax.inject.Inject; import org.flywaydb.core.Flyway; import org.junit.Test; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.web.WebAppConfiguration; import io.oasp.gastronomy.restaurant.SpringBootApp; import io.oasp.gastronomy.restaurant.general.common.TestUtil; import io.oasp.gastronomy.restaurant.general.common.api.constants.PermissionConstants; import io.oasp.gastronomy.restaurant.general.common.api.datatype.Money; import io.oasp.gastronomy.restaurant.offermanagement.common.api.Offer; import io.oasp.gastronomy.restaurant.offermanagement.common.api.datatype.OfferSortByHitEntry; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.Offermanagement; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.OfferEto; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.OfferFilter; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.OfferSortBy; import io.oasp.module.jpa.common.api.to.OrderDirection; import io.oasp.module.test.common.base.ComponentTest; /** * This is the test-case of {@link Offermanagement} * * @since dev */ @SpringApplicationConfiguration(classes = { SpringBootApp.class }) @WebAppConfiguration public class OfferManagementTest extends ComponentTest { @Inject private Offermanagement offerManagement; @Inject private Flyway flyway; /** * Login */ @Override public void doSetUp() { super.doSetUp(); this.flyway.clean(); this.flyway.migrate(); TestUtil.login("waiter", PermissionConstants.FIND_OFFER); } /** * Logout */ @Override public void doTearDown() { super.doTearDown(); TestUtil.logout(); } /** * Tests if the {@link Offer} is filtered correctly. */ @Test public void testFindOffersFiltered() { OfferFilter filter = new OfferFilter(); filter.setDrinkId(12L); filter.setMinPrice(new Money(5)); filter.setMaxPrice(new Money(7)); OfferSortBy sort = new OfferSortBy(); sort.setSortByEntry(OfferSortByHitEntry.PRICE); List<OfferEto> offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.size(), 3); assertEquals(offerEntity.get(0).getPrice(), new Money(5.99)); assertEquals(offerEntity.get(1).getPrice(), new Money(6.23)); assertEquals(offerEntity.get(2).getPrice(), new Money(6.99)); sort.setOrderBy(OrderDirection.DESC); offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.get(0).getPrice(), new Money(6.99)); assertEquals(offerEntity.get(1).getPrice(), new Money(6.23)); assertEquals(offerEntity.get(2).getPrice(), new Money(5.99)); sort.setOrderBy(OrderDirection.ASC); sort.setSortByEntry(OfferSortByHitEntry.ID); offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.get(0).getId(), new Long(1)); assertEquals(offerEntity.get(1).getId(), new Long(6)); assertEquals(offerEntity.get(2).getId(), new Long(7)); sort.setSortByEntry(OfferSortByHitEntry.DESCRIPTION); offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.size(), 3); assertEquals(offerEntity.get(0).getDescription(), "Description of Flammkuchen-Menü"); assertEquals(offerEntity.get(1).getDescription(), "Description of Pizza-Menü"); assertEquals(offerEntity.get(2).getDescription(), "Description of Schnitzel-Menü"); sort.setSortByEntry(OfferSortByHitEntry.MEAL); offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.size(), 3); assertEquals(offerEntity.get(0).getMealId(), new Long(6)); assertEquals(offerEntity.get(1).getMealId(), new Long(5)); assertEquals(offerEntity.get(2).getMealId(), new Long(1)); sort.setSortByEntry(OfferSortByHitEntry.ID); offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.get(0).getPrice(), new Money(6.99)); assertEquals(offerEntity.get(1).getPrice(), new Money(6.23)); assertEquals(offerEntity.get(2).getPrice(), new Money(5.99)); filter.setMealId(1L); offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.size(), 1); assertEquals(offerEntity.get(0).getPrice(), new Money(6.99)); filter.setSideDishId(7L); offerEntity = this.offerManagement.findOffersFiltered(filter, sort); assertEquals(offerEntity.size(), 1); assertEquals(offerEntity.get(0).getId(), new Long(1)); assertEquals(offerEntity.get(0).getDescription(), "Description of Schnitzel-Menü"); assertEquals(offerEntity.get(0).getDrinkId(), new Long(12)); assertEquals(offerEntity.get(0).getMealId(), new Long(1)); assertEquals(offerEntity.get(0).getSideDishId(), new Long(7)); } }