package org.ovirt.engine.core.bll.network.cluster;
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.Cluster;
import org.ovirt.engine.core.common.businessentities.network.Network;
import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
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.ClusterDao;
import org.ovirt.engine.core.dao.network.NetworkClusterDao;
import org.ovirt.engine.core.dao.network.NetworkDao;
/**
* A test for the {@link GetClustersAndNetworksByNetworkIdQuery} 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 GetClustersAndNetworksByNetworkIdQueryTest
extends AbstractQueryTest<IdQueryParameters,
GetClustersAndNetworksByNetworkIdQuery<IdQueryParameters>> {
private Guid networkId = Guid.newGuid();
private Guid storagePoolId = Guid.newGuid();
private Guid clusterId = Guid.newGuid();
private Network network = new Network();
private Cluster cluster = new Cluster();
private NetworkCluster networkCluster = new NetworkCluster();
@Mock
private NetworkDao networkDaoMock;
@Mock
private ClusterDao clusterDaoMock;
@Mock
private NetworkClusterDao networkClusterDaoMock;
@Test
public void testExecuteQueryCommand() {
// Set up the query parameters
when(params.getId()).thenReturn(networkId);
network.setId(networkId);
network.setDataCenterId(storagePoolId);
cluster.setId(clusterId);
networkCluster.setClusterId(clusterId);
networkCluster.setNetworkId(networkId);
setupNetworkDao();
setupClusterDao();
setupNetworkClusterDao();
PairQueryable<Cluster, NetworkCluster> networkClusterPair =
new PairQueryable<>(cluster, networkCluster);
List<PairQueryable<Cluster, NetworkCluster>> expected = Collections.singletonList(networkClusterPair);
// Run the query
GetClustersAndNetworksByNetworkIdQuery<IdQueryParameters> query = getQuery();
query.executeQueryCommand();
// Assert the result
assertEquals("Wrong result returned", expected, getQuery().getQueryReturnValue().getReturnValue());
}
private void setupNetworkDao() {
when(networkDaoMock.get(networkId)).thenReturn(network);
}
private void setupNetworkClusterDao() {
List<Cluster> expectedCluster = Collections.singletonList(cluster);
when(clusterDaoMock.getAllForStoragePool(storagePoolId)).thenReturn(expectedCluster);
}
private void setupClusterDao() {
List<NetworkCluster> expectedNetworkCluster = Collections.singletonList(networkCluster);
when(networkClusterDaoMock.getAllForNetwork(networkId)).thenReturn(expectedNetworkCluster);
}
}