/**
* ***************************************************************************
* Copyright (c) 2010 Qcadoo Limited
* Project: Qcadoo MES
* Version: 1.4
*
* This file is part of Qcadoo.
*
* Qcadoo is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation; either version 3 of the License,
* or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* ***************************************************************************
*/
package com.qcadoo.mes.deliveries;
import static junit.framework.Assert.assertEquals;
import static org.mockito.BDDMockito.given;
import java.util.List;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.springframework.test.util.ReflectionTestUtils;
import com.qcadoo.mes.deliveries.constants.DeliveriesConstants;
import com.qcadoo.model.api.DataDefinition;
import com.qcadoo.model.api.DataDefinitionService;
import com.qcadoo.model.api.Entity;
import com.qcadoo.model.api.search.SearchCriteriaBuilder;
import com.qcadoo.model.api.search.SearchOrder;
import com.qcadoo.model.api.search.SearchRestrictions;
import com.qcadoo.model.api.search.SearchResult;
@RunWith(PowerMockRunner.class)
@PrepareForTest(SearchRestrictions.class)
public class DeliveriesServiceImplTest {
private DeliveriesService deliveriesService;
@Mock
private DataDefinitionService dataDefinitionService;
@Mock
private DataDefinition deliveryDD, orderedProductDD, deliveredProductDD, companyProductDD, companyProductsFamilyDD,
columnForDeliveriesDD, columnForOrdersDD;
@Mock
private Entity delivery, orderedProduct, deliveredProduct, companyProduct, companyProductsFamily;
@Mock
private SearchCriteriaBuilder searchCriteriaBuilder;
@Mock
private SearchResult searchResult;
@Mock
private List<Entity> columnsForDeliveries;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
deliveriesService = new DeliveriesServiceImpl();
ReflectionTestUtils.setField(deliveriesService, "dataDefinitionService", dataDefinitionService);
given(dataDefinitionService.get(DeliveriesConstants.PLUGIN_IDENTIFIER, DeliveriesConstants.MODEL_DELIVERY)).willReturn(
deliveryDD);
given(dataDefinitionService.get(DeliveriesConstants.PLUGIN_IDENTIFIER, DeliveriesConstants.MODEL_ORDERED_PRODUCT))
.willReturn(orderedProductDD);
given(dataDefinitionService.get(DeliveriesConstants.PLUGIN_IDENTIFIER, DeliveriesConstants.MODEL_DELIVERED_PRODUCT))
.willReturn(deliveredProductDD);
given(dataDefinitionService.get(DeliveriesConstants.PLUGIN_IDENTIFIER, DeliveriesConstants.MODEL_COMPANY_PRODUCT))
.willReturn(companyProductDD);
given(dataDefinitionService.get(DeliveriesConstants.PLUGIN_IDENTIFIER, DeliveriesConstants.MODEL_COMPANY_PRODUCTS_FAMILY))
.willReturn(companyProductsFamilyDD);
given(dataDefinitionService.get(DeliveriesConstants.PLUGIN_IDENTIFIER, DeliveriesConstants.MODEL_COLUMN_FOR_DELIVERIES))
.willReturn(columnForDeliveriesDD);
given(dataDefinitionService.get(DeliveriesConstants.PLUGIN_IDENTIFIER, DeliveriesConstants.MODEL_COLUMN_FOR_ORDERS))
.willReturn(columnForOrdersDD);
PowerMockito.mockStatic(SearchRestrictions.class);
}
@Test
public void shouldReturnNullWhenGetDelivery() {
// given
Long deliveryId = null;
given(deliveryDD.get(deliveryId)).willReturn(null);
// when
Entity result = deliveriesService.getDelivery(deliveryId);
// then
assertEquals(null, result);
}
@Test
public void shouldReturnDeliveryWhenGetDelivery() {
// given
Long deliveryId = 1L;
given(deliveryDD.get(deliveryId)).willReturn(delivery);
// when
Entity result = deliveriesService.getDelivery(deliveryId);
// then
assertEquals(delivery, result);
}
@Test
public void shouldReturnNullWhenGetOrderedProduct() {
// given
Long orderedProductId = null;
given(orderedProductDD.get(orderedProductId)).willReturn(null);
// when
Entity result = deliveriesService.getOrderedProduct(orderedProductId);
// then
assertEquals(null, result);
}
@Test
public void shouldReturnOrderedProductWhenGetOrderedProduct() {
// given
Long orderedProductId = 1L;
given(orderedProductDD.get(orderedProductId)).willReturn(orderedProduct);
// when
Entity result = deliveriesService.getOrderedProduct(orderedProductId);
// then
assertEquals(orderedProduct, result);
}
@Test
public void shouldReturnNullWhenGetDeliveredProduct() {
// given
Long deliveredProductId = null;
given(deliveredProductDD.get(deliveredProductId)).willReturn(null);
// when
Entity result = deliveriesService.getDeliveredProduct(deliveredProductId);
// then
assertEquals(null, result);
}
@Test
public void shouldReturnDeliveredProductWhenGetDeliveredProduct() {
// given
Long deliveredProductId = 1L;
given(deliveredProductDD.get(deliveredProductId)).willReturn(deliveredProduct);
// when
Entity result = deliveriesService.getDeliveredProduct(deliveredProductId);
// then
assertEquals(deliveredProduct, result);
}
@Test
public void shouldReturnNullWhenGetCompanyProduct() {
// given
Long companyProductId = null;
given(companyProductDD.get(companyProductId)).willReturn(null);
// when
Entity result = deliveriesService.getDeliveredProduct(companyProductId);
// then
assertEquals(null, result);
}
@Test
public void shouldReturnCompanyProductWhenGetCompanyProduct() {
// given
Long companyProductId = 1L;
given(companyProductDD.get(companyProductId)).willReturn(companyProduct);
// when
Entity result = deliveriesService.getCompanyProduct(companyProductId);
// then
assertEquals(companyProduct, result);
}
@Test
public void shouldReturnNullWhenGetCompanyProductsFamily() {
// given
Long companyProductsFamilyId = null;
given(companyProductsFamilyDD.get(companyProductsFamilyId)).willReturn(null);
// when
Entity result = deliveriesService.getDeliveredProduct(companyProductsFamilyId);
// then
assertEquals(null, result);
}
@Test
public void shouldReturnCompanyProductsFamilyWhenGetCompanyProductsFamily() {
// given
Long companyProductsFamilyId = 1L;
given(companyProductsFamilyDD.get(companyProductsFamilyId)).willReturn(companyProductsFamily);
// when
Entity result = deliveriesService.getCompanyProductsFamily(companyProductsFamilyId);
// then
assertEquals(companyProductsFamily, result);
}
@Ignore
@Test
public void shouldReturnNullWhenGetColumnsForDeliveriesIfColumnsForDeliveriesAreNull() {
// given
given(columnForDeliveriesDD.find()).willReturn(searchCriteriaBuilder);
given(searchCriteriaBuilder.addOrder(Mockito.any(SearchOrder.class))).willReturn(searchCriteriaBuilder);
given(searchCriteriaBuilder.list()).willReturn(searchResult);
given(searchResult.getEntities()).willReturn(null);
// when
List<Entity> result = deliveriesService.getColumnsForDeliveries();
// then
assertEquals(null, result);
}
@Ignore
@Test
public void shouldReturnColumnsForDeliveriesWhenGetColumnsForDeliveriesIfColumnsForDeliveriesArentNull() {
// given
given(columnForDeliveriesDD.find()).willReturn(searchCriteriaBuilder);
given(searchCriteriaBuilder.addOrder(Mockito.any(SearchOrder.class))).willReturn(searchCriteriaBuilder);
given(searchCriteriaBuilder.list()).willReturn(searchResult);
given(searchResult.getEntities()).willReturn(columnsForDeliveries);
// when
List<Entity> result = deliveriesService.getColumnsForDeliveries();
// then
assertEquals(columnsForDeliveries, result);
}
@Test
public void shouldReturnDeliveryDD() {
// given
// when
DataDefinition result = deliveriesService.getDeliveryDD();
// then
assertEquals(deliveryDD, result);
}
@Test
public void shouldReturnOrderedProductDD() {
// given
// when
DataDefinition result = deliveriesService.getOrderedProductDD();
// then
assertEquals(orderedProductDD, result);
}
@Test
public void shouldReturnDeliveredProductDD() {
// given
// when
DataDefinition result = deliveriesService.getDeliveredProductDD();
// then
assertEquals(deliveredProductDD, result);
}
@Test
public void shouldReturnCompanyProductDD() {
// given
// when
DataDefinition result = deliveriesService.getCompanyProductDD();
// then
assertEquals(companyProductDD, result);
}
@Test
public void shouldReturnCompanyProductsFamilyDD() {
// given
// when
DataDefinition result = deliveriesService.getCompanyProductsFamilyDD();
// then
assertEquals(companyProductsFamilyDD, result);
}
@Test
public void shouldReturnColumnForDeliveriesDD() {
// given
// when
DataDefinition result = deliveriesService.getColumnForDeliveriesDD();
// then
assertEquals(columnForDeliveriesDD, result);
}
}