package org.ovirt.engine.core.bll.network.host; 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.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.ovirt.engine.core.bll.AbstractQueryTest; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; 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.VdsDao; import org.ovirt.engine.core.dao.network.InterfaceDao; import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.vdsbroker.NetworkImplementationDetailsUtils; /** * A test for the {@link GetVdsAndNetworkInterfacesByNetworkIdQuery} class. It tests the flow (i.e., that the query * delegates properly to the Dao}). The internal workings of the Dao are not tested. */ @RunWith(MockitoJUnitRunner.class) public class GetVdsAndNetworkInterfacesByNetworkIdQueryTest extends AbstractQueryTest<IdQueryParameters, GetVdsAndNetworkInterfacesByNetworkIdQuery<IdQueryParameters>> { private Guid networkId = Guid.newGuid(); private Guid qosId = Guid.newGuid(); private VDS vds = new VDS(); private VdsNetworkInterface vdsNetworkInterface = new VdsNetworkInterface(); @Mock private VdsDao vdsDaoMocked; @Mock private InterfaceDao interfaceDaoMocked; @Mock private NetworkDao networkDaoMocked; @Mock private Network networkMocked; @Mock private NetworkImplementationDetailsUtils networkImplementationDetailsUtils; @Test public void testExecuteQueryCommand() { // Set up the query parameters when(params.getId()).thenReturn(networkId); setupVdsDao(); setupVdsNetworkInterfaceDao(); setupNetworkDao(); PairQueryable<VdsNetworkInterface, VDS> vdsInterfaceVdsPair = new PairQueryable<>(vdsNetworkInterface, vds); List<PairQueryable<VdsNetworkInterface, VDS>> expected = Collections.singletonList(vdsInterfaceVdsPair); // Run the query getQuery().executeQueryCommand(); // Assert the result assertEquals("Wrong result returned", expected, getQuery().getQueryReturnValue().getReturnValue()); } private void setupVdsDao() { List<VDS> expectedVds = Collections.singletonList(vds); when(vdsDaoMocked.getAllForNetwork(networkId)).thenReturn(expectedVds); } private void setupVdsNetworkInterfaceDao() { List<VdsNetworkInterface> expectedVdsNetworkInterface = Collections.singletonList(vdsNetworkInterface); when(interfaceDaoMocked.getVdsInterfacesByNetworkId(networkId)).thenReturn(expectedVdsNetworkInterface); } private void setupNetworkDao() { when(networkDaoMocked.get(networkId)).thenReturn(networkMocked); } }