/*
* Copyright (C) 2016 TIBCO Jaspersoft Corporation. All rights reserved.
* http://community.jaspersoft.com/project/mobile-sdk-android
*
* Unless you have purchased a commercial license agreement from TIBCO Jaspersoft,
* the following license terms apply:
*
* This program is part of TIBCO Jaspersoft Mobile SDK for Android.
*
* TIBCO Jaspersoft Mobile SDK is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* TIBCO Jaspersoft Mobile SDK 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with TIBCO Jaspersoft Mobile SDK for Android. If not, see
* <http://www.gnu.org/licenses/lgpl>.
*/
package com.jaspersoft.android.sdk.service.report.schedule;
import com.jaspersoft.android.sdk.network.entity.schedule.JobCalendarTriggerEntity;
import com.jaspersoft.android.sdk.network.entity.schedule.JobFormEntity;
import com.jaspersoft.android.sdk.network.entity.schedule.JobSimpleTriggerEntity;
import com.jaspersoft.android.sdk.service.data.schedule.*;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import static org.mockito.Mockito.verify;
import static org.mockito.MockitoAnnotations.initMocks;
public class JobTriggerMapperTest {
@Mock
JobCalendarTriggerMapper mCalendarTriggerMapper;
@Mock
JobSimpleTriggerMapper mSimpleTriggerMapper;
@Mock
JobNoneTriggerMapper mNoneTriggerMapper;
private JobTriggerMapper mapperUnderTest;
private JobFormEntity providedFormEntity, mappedFormEntity;
private JobForm providedForm;
private final JobFormFactory formFactory = new JobFormFactory();
private JobForm.Builder formBuilder;
@Before
public void setUp() throws Exception {
initMocks(this);
formBuilder = formFactory.givenJobFormBuilderWithValues();
mapperUnderTest = new JobTriggerMapper(mCalendarTriggerMapper, mSimpleTriggerMapper, mNoneTriggerMapper);
}
@Test
public void should_map_simple_entity_trigger_to_form() throws Exception {
givenEntityFormWithSimpleTrigger();
whenMapsEntityToForm();
verify(mSimpleTriggerMapper).mapEntityOnForm(formBuilder, providedFormEntity);
}
@Test
public void should_map_calendar_entity_trigger_to_form() throws Exception {
givenEntityFormWithCalendarTrigger();
whenMapsEntityToForm();
verify(mCalendarTriggerMapper).mapEntityOnForm(formBuilder, providedFormEntity);
}
@Test
public void should_map_none_entity_trigger_to_form() throws Exception {
givenEntityFormWithNoneTrigger();
whenMapsEntityToForm();
verify(mNoneTriggerMapper).mapEntityOnForm(formBuilder, providedFormEntity);
}
@Test
public void should_map_simple_trigger_to_entity() throws Exception {
givenFormWithSimpleTrigger();
whenMapsFormToEntity();
verify(mSimpleTriggerMapper).mapFormOnEntity(providedForm, mappedFormEntity);
}
@Test
public void should_map_calendar_trigger_to_entity() throws Exception {
givenFormWithCalendarTrigger();
whenMapsFormToEntity();
verify(mCalendarTriggerMapper).mapFormOnEntity(providedForm, mappedFormEntity);
}
@Test
public void should_map_none_trigger_to_entity() throws Exception {
givenFormWithNoneTrigger();
whenMapsFormToEntity();
verify(mNoneTriggerMapper).mapFormOnEntity(providedForm, mappedFormEntity);
}
private void givenEntityFormWithSimpleTrigger() {
JobSimpleTriggerEntity triggerEntity = new JobSimpleTriggerEntity();
triggerEntity.setRecurrenceInterval(1);
triggerEntity.setRecurrenceIntervalUnit("DAY");
providedFormEntity = new JobFormEntity();
providedFormEntity.setSimpleTrigger(triggerEntity);
}
private void givenEntityFormWithCalendarTrigger() {
JobCalendarTriggerEntity triggerEntity = new JobCalendarTriggerEntity();
providedFormEntity = new JobFormEntity();
providedFormEntity.setCalendarTrigger(triggerEntity);
}
private void givenEntityFormWithNoneTrigger() {
JobSimpleTriggerEntity triggerEntity = new JobSimpleTriggerEntity();
providedFormEntity = new JobFormEntity();
providedFormEntity.setSimpleTrigger(triggerEntity);
}
private void givenFormWithSimpleTrigger() {
IntervalRecurrence recurrence = new IntervalRecurrence.Builder()
.withInterval(1)
.withUnit(RecurrenceIntervalUnit.DAY)
.build();
Trigger trigger = new Trigger.Builder()
.withRecurrence(recurrence)
.build();
JobForm.Builder builder = formFactory.givenJobFormBuilderWithValues();
providedForm = builder.withTrigger(trigger).build();
}
private void givenFormWithCalendarTrigger() {
CalendarRecurrence recurrence = new CalendarRecurrence.Builder()
.withAllMonths()
.build();
Trigger trigger = new Trigger.Builder()
.withRecurrence(recurrence)
.build();
JobForm.Builder builder = formFactory.givenJobFormBuilderWithValues();
providedForm = builder.withTrigger(trigger).build();
}
private void givenFormWithNoneTrigger() {
JobForm.Builder builder = formFactory.givenJobFormBuilderWithValues();
providedForm = builder.build();
}
private void whenMapsEntityToForm() {
mapperUnderTest.mapEntityOnForm(formBuilder, providedFormEntity);
}
private void whenMapsFormToEntity() {
mapperUnderTest.mapFormOnEntity(providedForm, mappedFormEntity);
}
}