package org.ovirt.engine.core.bll.validator;
import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid;
import java.util.Collections;
import java.util.Set;
import org.hamcrest.Matcher;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.bll.ValidationResult;
import org.ovirt.engine.core.common.businessentities.VmWatchdog;
import org.ovirt.engine.core.common.businessentities.VmWatchdogType;
import org.ovirt.engine.core.common.osinfo.OsRepository;
import org.ovirt.engine.core.compat.Version;
@RunWith(MockitoJUnitRunner.class)
public class VmWatchdogValidatorTest {
private static final Set<VmWatchdogType> WATCHDOG_MODELS = Collections.singleton(VmWatchdogType.i6300esb);
@Test
public void i6300esbVmWatchdogTypeWhenIsCompatibleWithOs() throws Exception {
isModelCompatibleWithOsTest(isValid(), VmWatchdogType.i6300esb);
}
private void isModelCompatibleWithOsTest(Matcher<ValidationResult> matcher, VmWatchdogType watchDogModel) {
Version version = new Version();
VmWatchdog vmWatchdog = new VmWatchdog();
vmWatchdog.setModel(watchDogModel);
VmWatchdogValidator.VmWatchdogClusterDependentValidator validator = spy(new VmWatchdogValidator.VmWatchdogClusterDependentValidator(0, vmWatchdog, version));
OsRepository osRepository = mock(OsRepository.class);
when(validator.getOsRepository()).thenReturn(osRepository);
when(osRepository.getVmWatchdogTypes(anyInt(), any(Version.class))).thenReturn(WATCHDOG_MODELS);
assertThat(validator.isValid(), matcher);
}
}