package org.ovirt.engine.core.bll; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.queries.GetVmOvfByVmIdParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.VmDao; @RunWith(MockitoJUnitRunner.class) public class GetVmOvfByVmIdQueryTest extends AbstractUserQueryTest<GetVmOvfByVmIdParameters, GetVmOvfByVmIdQuery<GetVmOvfByVmIdParameters>> { @Mock private VmDao vmDao; @Before @Override public void setUp() throws Exception { super.setUp(); doReturn("config").when(getQuery()).generateOvfConfig(any()); } private VM createVm(Guid existingVmId, long dbGeneration) { VM vm = new VM(); vm.setId(existingVmId); vm.setDbGeneration(dbGeneration); return vm; } @Test public void dbGenerationNotAsParametersDbGen() { Guid id = Guid.newGuid(); long dbGeneration = 5; VM vm = createVm(id, dbGeneration); doReturn(vm).when(vmDao).get(any(), any(), anyBoolean()); when(getQueryParameters().getRequiredGeneration()).thenReturn(dbGeneration - 1); GetVmOvfByVmIdQuery query = getQuery(); query.execute(); verify(query, never()).generateOvfConfig(any()); assertFalse(query.getQueryReturnValue().getSucceeded()); assertNull(query.getQueryReturnValue().getReturnValue()); } @Test public void dbGenerationSameAsParametersDbGen() { Guid id = Guid.newGuid(); long dbGeneration = 5; VM vm = createVm(id, dbGeneration); doReturn(vm).when(vmDao).get(any(), any(), anyBoolean()); when(getQueryParameters().getRequiredGeneration()).thenReturn(dbGeneration); GetVmOvfByVmIdQuery query = getQuery(); query.execute(); verify(query, times(1)).generateOvfConfig(any()); assertTrue(query.getQueryReturnValue().getSucceeded()); assertNotNull(query.getQueryReturnValue().getReturnValue()); } }