package com.sequenceiq.cloudbreak.service.usages; import static org.junit.Assert.assertEquals; import static org.mockito.BDDMockito.any; import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.times; import static org.mockito.BDDMockito.verify; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.data.jpa.domain.Specification; import com.sequenceiq.cloudbreak.domain.CbUsageFilterParameters; import com.sequenceiq.cloudbreak.domain.CloudbreakUsage; import com.sequenceiq.cloudbreak.repository.CloudbreakUsageRepository; public class DefaultCloudbreakUsagesRetrievalHostServiceTypeTest { private static final String DUMMY_ACCOUNT = "account"; private static final Long DUMMY_SINCE = new Date().getTime(); private static final Long DUMMY_END_DATE = new Date().getTime(); private static final String DUMMY_OWNER = "owner"; private static final String DUMMY_REGION = "region"; private static final String DUMMY_CLOUD = "GCP"; @InjectMocks private CloudbreakUsagesRetrievalService underTest; private CbUsageFilterParameters filterParameters; private CloudbreakUsage usage; @Mock private CloudbreakUsageRepository cloudbreakUsageRepository; @Before public void setUp() { underTest = new CloudbreakUsagesRetrievalService(); filterParameters = new CbUsageFilterParameters.Builder() .setFilterEndDate(DUMMY_END_DATE).setAccount(DUMMY_ACCOUNT).setSince(DUMMY_SINCE) .setOwner(DUMMY_OWNER).setRegion(DUMMY_REGION).setCloud(DUMMY_CLOUD).build(); usage = new CloudbreakUsage(); usage.setAccount(DUMMY_ACCOUNT); MockitoAnnotations.initMocks(this); } @Test public void testFindUsagesFor() { // GIVEN given(cloudbreakUsageRepository.findAll(any(Specification.class))).willReturn(Collections.singletonList(usage)); // WHEN List<CloudbreakUsage> result = underTest.findUsagesFor(filterParameters); // THEN verify(cloudbreakUsageRepository, times(1)).findAll(any(Specification.class)); assertEquals(usage, result.get(0)); } @Test public void testFindUsagesForWhenUsagesNotFound() { // GIVEN given(cloudbreakUsageRepository.findAll(any(Specification.class))).willReturn(new ArrayList<CloudbreakUsage>()); // WHEN List<CloudbreakUsage> result = underTest.findUsagesFor(filterParameters); // THEN verify(cloudbreakUsageRepository, times(1)).findAll(any(Specification.class)); assertEquals(0, result.size()); } }