package org.ovirt.engine.api.restapi.types;
import static org.ovirt.engine.api.restapi.types.MappingTestHelper.populate;
import org.junit.Test;
import org.ovirt.engine.api.model.DiskFormat;
import org.ovirt.engine.api.model.DiskSnapshot;
import org.ovirt.engine.api.model.DiskStatus;
import org.ovirt.engine.api.model.ScsiGenericIO;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
public class DiskSnapshotMapperTest extends AbstractInvertibleMappingTest<DiskSnapshot, DiskImage, DiskImage> {
public DiskSnapshotMapperTest() {
super(DiskSnapshot.class, DiskImage.class, DiskImage.class);
}
@Override
protected DiskSnapshot postPopulate(DiskSnapshot model) {
model.setFormat(MappingTestHelper.shuffle(DiskFormat.class));
model.setSgio(MappingTestHelper.shuffle(ScsiGenericIO.class));
model.setStatus(MappingTestHelper.shuffle(DiskStatus.class));
model.setLunStorage(null);
return model;
}
@Override
protected void verify(DiskSnapshot model, DiskSnapshot transform) {
assertNotNull(transform);
assertEquals(model.getId(), transform.getId());
assertEquals(model.getFormat(), transform.getFormat());
assertEquals(model.getDescription(), transform.getDescription());
assertNotNull(model.getSnapshot());
assertEquals(model.getSnapshot().getId(), transform.getSnapshot().getId());
assertEquals("unexpected status", model.getStatus(), transform.getStatus());
assertEquals("unexpected sparse", model.isSparse(), transform.isSparse());
assertEquals("unexpected propagate errors", model.isPropagateErrors(), transform.isPropagateErrors());
assertEquals("unexpected wipe after delete", model.isWipeAfterDelete(), transform.isWipeAfterDelete());
assertEquals("unexpected shareable", model.isShareable(), transform.isShareable());
}
@Test
@Override
public void testRoundtrip() throws Exception {
setUpConfigExpectations();
DiskSnapshot model = DiskSnapshot.class.cast(populate(DiskSnapshot.class));
model = postPopulate(model);
Mapper<DiskSnapshot, Disk> out =
getMappingLocator().getMapper(DiskSnapshot.class, Disk.class);
Mapper<Disk, DiskSnapshot> back =
getMappingLocator().getMapper(Disk.class, DiskSnapshot.class);
DiskImage to = (DiskImage) out.map(model, null);
DiskImage inverse = getInverse(to);
DiskSnapshot transform = back.map(inverse, null);
verify(model, transform);
}
}