package com.sequenceiq.cloudbreak.converter;
import static org.junit.Assert.assertEquals;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.any;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.TypeDescriptor;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.sequenceiq.cloudbreak.TestUtil;
import com.sequenceiq.cloudbreak.api.model.InstanceGroupResponse;
import com.sequenceiq.cloudbreak.api.model.InstanceGroupType;
import com.sequenceiq.cloudbreak.api.model.InstanceStatus;
import com.sequenceiq.cloudbreak.domain.InstanceGroup;
import com.sequenceiq.cloudbreak.domain.InstanceMetaData;
public class InstanceGroupToJsonConverterTest extends AbstractEntityConverterTest<InstanceGroup> {
@InjectMocks
private InstanceGroupToJsonConverter underTest;
@Mock
private ConversionService conversionService;
@Before
public void setUp() {
underTest = new InstanceGroupToJsonConverter();
MockitoAnnotations.initMocks(this);
}
@Test
public void testConvert() {
// GIVEN
given(conversionService.convert(any(Object.class), any(TypeDescriptor.class), any(TypeDescriptor.class)))
.willReturn(getInstanceMetaData(getSource()));
// WHEN
InstanceGroupResponse result = underTest.convert(getSource());
// THEN
assertEquals(1, result.getNodeCount());
assertEquals(InstanceGroupType.CORE, result.getType());
assertAllFieldsNotNull(result, Lists.newArrayList("template", "securityGroup"));
}
@Override
public InstanceGroup createSource() {
InstanceGroup instanceGroup = TestUtil.instanceGroup(1L, InstanceGroupType.CORE, TestUtil.gcpTemplate(1L));
instanceGroup.setInstanceMetaData(getInstanceMetaData(instanceGroup));
return instanceGroup;
}
private Set<InstanceMetaData> getInstanceMetaData(InstanceGroup instanceGroup) {
InstanceMetaData metadata = TestUtil.instanceMetaData(1L, 1L, InstanceStatus.REGISTERED, false, instanceGroup);
return Sets.newHashSet(metadata);
}
}