package org.ovirt.engine.core.bll.snapshots;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.ovirt.engine.core.bll.AbstractUserQueryTest;
import org.ovirt.engine.core.common.businessentities.Snapshot;
import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus;
import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.SnapshotDao;
/**
* A test case for {@link GetAllVmSnapshotsByVmIdQuery}. This test mocks away all the Daos, and just tests the flow of
* the query itself.
*/
public class GetAllVmSnapshotsByVmIdQueryTest
extends AbstractUserQueryTest<IdQueryParameters,
GetAllVmSnapshotsByVmIdQuery<IdQueryParameters>> {
@Mock
private SnapshotDao snapshotDaoMock;
/** The ID of the VM the disks belong to */
private Guid vmId;
/** A snapshot for the test */
private Snapshot snapshot;
@Before
@Override
public void setUp() throws Exception {
super.setUp();
vmId = Guid.newGuid();
snapshot =
new Snapshot(Guid.newGuid(), SnapshotStatus.OK, vmId, null, SnapshotType.REGULAR, "", new Date(), "");
setUpDaoMocks();
}
private void setUpDaoMocks() {
when(snapshotDaoMock.getAll(vmId, getUser().getId(), getQueryParameters().isFiltered()))
.thenReturn(Collections.singletonList(snapshot));
}
@Test
public void testExecuteQueryCommand() {
IdQueryParameters params = getQueryParameters();
when(params.getId()).thenReturn(vmId);
GetAllVmSnapshotsByVmIdQuery<IdQueryParameters> query = getQuery();
query.executeQueryCommand();
@SuppressWarnings("unchecked")
List<Snapshot> snapshots = query.getQueryReturnValue().getReturnValue();
// Assert the correct disks are returned
assertTrue("snapshot should be in the return value", snapshots.contains(snapshot));
assertEquals("there should be exactly one snapshot returned", 1, snapshots.size());
}
}