package org.ovirt.engine.core.bll; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; import java.util.Collections; import java.util.Map; import org.junit.Test; import org.mockito.Mock; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.VmTemplateDao; /** * A test for the {@link GetVmTempaltesByImageGuidQuery} class. * It tests that flow (i.e., that the query delegates properly to the Dao}). * The internal workings of the Dao are not tested. */ public class GetVmTemplatesByImageGuidQueryTest extends AbstractQueryTest<IdQueryParameters, GetVmTemplatesByImageGuidQuery<IdQueryParameters>> { @Mock private VmTemplateDao vmTemplateDaoMock; @Test public void testExecuteQueryCommand() { // Set up the query parameters Guid imageGuid = Guid.newGuid(); when(params.getId()).thenReturn(imageGuid); // Set up the Daos Map<Boolean, VmTemplate> expected = Collections.singletonMap(true, new VmTemplate()); when(vmTemplateDaoMock.getAllForImage(imageGuid)).thenReturn(expected); // Mock away the handler doNothing().when(getQuery()).updateDisksFromDb(any(VmTemplate.class)); // Run the query GetVmTemplatesByImageGuidQuery<IdQueryParameters> query = getQuery(); query.executeQueryCommand(); // Assert the result assertEquals("Wrong result returned", expected, getQuery().getQueryReturnValue().getReturnValue()); } }