de.hybris.platform.commercefacades.product.converters.populator.ProductPromotionsPopulatorTest.java Source code

Java tutorial

Introduction

Here is the source code for de.hybris.platform.commercefacades.product.converters.populator.ProductPromotionsPopulatorTest.java

Source

/*
 * [y] hybris Platform
 *
 * Copyright (c) 2000-2014 hybris AG
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of hybris
 * ("Confidential Information"). You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the
 * license agreement you entered into with hybris.
 *
 *  
 */
package de.hybris.platform.commercefacades.product.converters.populator;

import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;

import de.hybris.bootstrap.annotations.UnitTest;
import de.hybris.platform.basecommerce.model.site.BaseSiteModel;
import de.hybris.platform.commercefacades.product.data.ProductData;
import de.hybris.platform.commercefacades.product.data.PromotionData;
import de.hybris.platform.core.model.product.ProductModel;
import de.hybris.platform.promotions.PromotionsService;
import de.hybris.platform.promotions.model.AbstractPromotionModel;
import de.hybris.platform.promotions.model.ProductPromotionModel;
import de.hybris.platform.promotions.model.PromotionGroupModel;
import de.hybris.platform.servicelayer.dto.converter.Converter;
import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.servicelayer.time.TimeService;
import de.hybris.platform.site.BaseSiteService;

import java.util.Calendar;
import java.util.Collections;
import java.util.Date;

import junit.framework.Assert;

import org.apache.commons.lang.time.DateUtils;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

/**
 * Test suite for {@link ProductPromotionsPopulator}
 */
@UnitTest
public class ProductPromotionsPopulatorTest {
    @Mock
    private PromotionsService promotionsService;
    @Mock
    private Converter<AbstractPromotionModel, PromotionData> promotionsConverter;
    @Mock
    private TimeService timeService;
    @Mock
    private ModelService modelService;
    @Mock
    private BaseSiteService baseSiteService;

    private ProductPromotionsPopulator productPromotionsPopulator;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);

        productPromotionsPopulator = new ProductPromotionsPopulator();
        productPromotionsPopulator.setModelService(modelService);
        productPromotionsPopulator.setTimeService(timeService);
        productPromotionsPopulator.setPromotionsConverter(promotionsConverter);
        productPromotionsPopulator.setPromotionsService(promotionsService);
        productPromotionsPopulator.setBaseSiteService(baseSiteService);
    }

    @Test
    public void testPopulate() {
        final ProductModel source = mock(ProductModel.class);
        final PromotionGroupModel defaultPromotionGroup = mock(PromotionGroupModel.class);
        final Date currentDate = DateUtils.round(new Date(), Calendar.MINUTE);
        final ProductPromotionModel productPromotionModel = mock(ProductPromotionModel.class);
        final PromotionData promotionData = mock(PromotionData.class);
        final BaseSiteModel baseSiteModel = mock(BaseSiteModel.class);

        given(timeService.getCurrentTime()).willReturn(currentDate);
        given(baseSiteService.getCurrentBaseSite()).willReturn(baseSiteModel);
        given(baseSiteModel.getDefaultPromotionGroup()).willReturn(defaultPromotionGroup);
        given(promotionsService.getProductPromotions(Collections.singletonList(defaultPromotionGroup), source, true,
                currentDate)).willReturn(Collections.singletonList(productPromotionModel));
        given(promotionsConverter.convert(productPromotionModel)).willReturn(promotionData);

        final ProductData result = new ProductData();
        productPromotionsPopulator.populate(source, result);

        Assert.assertEquals(1, result.getPotentialPromotions().size());
        Assert.assertEquals(promotionData, result.getPotentialPromotions().iterator().next());
    }
}