package org.ovirt.engine.core.bll.network.template;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.mockito.Mock;
import org.ovirt.engine.core.bll.AbstractQueryTest;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.utils.PairQueryable;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.VmTemplateDao;
import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao;
/**
* A test for the {@link GetVmTemplatesAndNetworkInterfacesByNetworkIdQuery} class. It tests the flow (i.e., that the query
* delegates properly to the Dao}). The internal workings of the Dao are not tested.
*/
public class GetVmTemplatesAndNetworkInterfacesByNetworkIdQueryTest
extends AbstractQueryTest<IdQueryParameters,
GetVmTemplatesAndNetworkInterfacesByNetworkIdQuery<IdQueryParameters>> {
private Guid networkId = Guid.newGuid();
private Guid vmTemplateId = Guid.newGuid();
private VmTemplate vmTemplate = new VmTemplate();
private VmNetworkInterface vmNetworkInterface = new VmNetworkInterface();
@Mock
private VmTemplateDao vmTemplateDao;
@Mock
private VmNetworkInterfaceDao vmNetworkInterfaceDaoMock;
@Test
public void testExecuteQueryCommand() {
// Setup the query parameters
when(params.getId()).thenReturn(networkId);
vmTemplate.setId(vmTemplateId);
vmNetworkInterface.setVmTemplateId(vmTemplateId);
// Setup the Daos
setupVmTemplateDao();
setupVmNetworkInterfaceDao();
PairQueryable<VmNetworkInterface, VmTemplate> vmInterfaceVmTemplatePair =
new PairQueryable<>(vmNetworkInterface, vmTemplate);
List<PairQueryable<VmNetworkInterface, VmTemplate>> expected =
Collections.singletonList(vmInterfaceVmTemplatePair);
// Run the query
getQuery().executeQueryCommand();
// Assert the result
assertEquals("Wrong result returned", expected, getQuery().getQueryReturnValue().getReturnValue());
}
private void setupVmTemplateDao() {
List<VmTemplate> expectedVmTemplate = Collections.singletonList(vmTemplate);
when(vmTemplateDao.getAllForNetwork(networkId)).thenReturn(expectedVmTemplate);
}
private void setupVmNetworkInterfaceDao() {
List<VmNetworkInterface> expectedVmNetworkInterface = Collections.singletonList(vmNetworkInterface);
when(vmNetworkInterfaceDaoMock.getAllForTemplatesByNetwork(networkId)).thenReturn(expectedVmNetworkInterface);
}
}