package com.sequenceiq.cloudbreak.facade;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.TypeDescriptor;
import com.sequenceiq.cloudbreak.TestUtil;
import com.sequenceiq.cloudbreak.api.model.CloudbreakUsageJson;
import com.sequenceiq.cloudbreak.domain.CbUsageFilterParameters;
import com.sequenceiq.cloudbreak.domain.CloudbreakUsage;
import com.sequenceiq.cloudbreak.service.usages.CloudbreakUsagesRetrievalService;
@RunWith(MockitoJUnitRunner.class)
public class DefaultCloudbreakUsagesFacadeTest {
@Mock
private CloudbreakUsagesRetrievalService cloudbreakUsagesService;
@Mock
private ConversionService conversionService;
@InjectMocks
private DefaultCloudbreakUsagesFacade underTest;
@Test
public void findUsagesForParametersConvertUsagesToJson() {
List<CloudbreakUsage> cloudbreakUsages = TestUtil.generateAzureCloudbreakUsages(10);
when(cloudbreakUsagesService.findUsagesFor(any(CbUsageFilterParameters.class))).thenReturn(cloudbreakUsages);
when(conversionService.convert(anyObject(), any(TypeDescriptor.class), any(TypeDescriptor.class))).thenReturn(new ArrayList<CloudbreakUsageJson>());
underTest.getUsagesFor(new CbUsageFilterParameters.Builder().build());
verify(cloudbreakUsagesService, times(1)).findUsagesFor(any(CbUsageFilterParameters.class));
verify(conversionService, times(1)).convert(anyObject(), any(TypeDescriptor.class), any(TypeDescriptor.class));
}
}