package com.epam.wilma.stubconfig.dom.parser.sequence;
/*==========================================================================
Copyright 2013-2017 EPAM Systems
This file is part of Wilma.
Wilma is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Wilma 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with Wilma. If not, see <http://www.gnu.org/licenses/>.
===========================================================================*/
import static org.mockito.BDDMockito.given;
import static org.testng.AssertJUnit.assertEquals;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.epam.wilma.domain.stubconfig.dialog.DialogDescriptor;
import com.epam.wilma.domain.stubconfig.dialog.condition.ConditionDescriptor;
import com.epam.wilma.domain.stubconfig.sequence.SequenceDescriptor;
import com.epam.wilma.domain.stubconfig.sequence.SequenceDescriptorAttributes;
import com.epam.wilma.domain.stubconfig.sequencehandler.DummySequenceHandler;
import com.epam.wilma.stubconfig.dom.parser.node.SequenceDescriptorAttributesParser;
import com.epam.wilma.stubconfig.dom.parser.sequence.helper.DialogDescriptorMapper;
/**
* Unit test for {@link SequenceDescriptorFactory}.
* @author Adam_Csaba_Kiraly
*
*/
public class SequenceDescriptorFactoryTest {
@Mock
private SequenceDescriptorAttributesParser sequenceDescriptorAttributesParser;
@Mock
private DialogDescriptorReferenceParser dialogDescriptorReferenceParser;
@Mock
private DialogDescriptorMapper dialogDescriptorMapper;
@Mock
private ConditionDescriptorNodesParser conditionDescriptorNodesParser;
@InjectMocks
private SequenceDescriptorFactory underTest;
@Mock
private Document document;
@Mock
private Element sequenceElement;
private List<DialogDescriptor> dialogDescriptors;
@BeforeMethod
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testCreate() {
//GIVEN
List<ConditionDescriptor> conditionDescriptors = new ArrayList<>();
List<DialogDescriptor> sequenceDialogDescriptors = new ArrayList<>();
Map<String, DialogDescriptor> nameToDialogDescriptor = new HashMap<>();
DummySequenceHandler dummySequenceHandler = new DummySequenceHandler();
SequenceDescriptorAttributes sequenceDescriptorAttributes = new SequenceDescriptorAttributes.Builder().name("bob")
.handler(dummySequenceHandler).defaultTimeout(1L).build();
given(conditionDescriptorNodesParser.parseNodesOfElement(document, sequenceElement)).willReturn(conditionDescriptors);
given(dialogDescriptorMapper.groupByName(dialogDescriptors)).willReturn(nameToDialogDescriptor);
given(dialogDescriptorReferenceParser.parse(sequenceElement, nameToDialogDescriptor)).willReturn(sequenceDialogDescriptors);
given(sequenceDescriptorAttributesParser.parseNode(sequenceElement, document)).willReturn(sequenceDescriptorAttributes);
//WHEN
SequenceDescriptor result = underTest.create(document, sequenceElement, dialogDescriptors);
//THEN
assertEquals(conditionDescriptors, result.getConditionDescriptors());
assertEquals(sequenceDialogDescriptors, result.getDialogDescriptors());
assertEquals(1L, result.getDefaultTimeout());
assertEquals(dummySequenceHandler, result.getHandler());
assertEquals("bob", result.getName());
}
}