/** Mock a good {@link StoragePoolIsoMap}. */
 private void mockStoragePoolIsoMap() {
   StoragePoolIsoMap spim = new StoragePoolIsoMap();
   when(storagePoolIsoMapDao.get(any(StoragePoolIsoMapId.class))).thenReturn(spim);
 }
  @Test
  public void statusSetInMap() {
    Guid storageDomainId = Guid.newGuid();
    Guid poolId = Guid.newGuid();
    AttachStorageDomainToPoolParameters params =
        new AttachStorageDomainToPoolParameters(storageDomainId, poolId);
    AttachStorageDomainToPoolCommand<AttachStorageDomainToPoolParameters> cmd =
        spy(new AttachStorageDomainToPoolCommand<>(params));

    doNothing().when(cmd).attemptToActivateDomain();
    doReturn(Collections.emptyList()).when(cmd).connectHostsInUpToDomainStorageServer();
    doReturn(isoMapDao).when(cmd).getStoragePoolIsoMapDao();
    doReturn(storagePoolDao).when(cmd).getStoragePoolDao();
    doReturn(vdsDao).when(cmd).getVdsDao();
    doReturn(storageDomainDao).when(cmd).getStorageDomainDao();
    doReturn(storageDomainStaticDao).when(cmd).getStorageDomainStaticDao();
    doReturn(vdsBrokerFrontend).when(cmd).getVdsBroker();

    StoragePool pool = new StoragePool();
    pool.setId(poolId);
    pool.setStatus(StoragePoolStatus.Up);
    when(storagePoolDao.get(any(Guid.class))).thenReturn(pool);
    when(isoMapDao.get(any(StoragePoolIsoMapId.class))).thenReturn(map);
    when(storageDomainDao.getForStoragePool(any(Guid.class), any(Guid.class)))
        .thenReturn(new StorageDomain());
    when(storageDomainStaticDao.get(any(Guid.class))).thenReturn(new StorageDomainStatic());
    doReturn(pool.getId()).when(cmd).getStoragePoolIdFromVds();
    doReturn(backendInternal).when(cmd).getBackend();
    VdcReturnValueBase vdcReturnValue = new VdcReturnValueBase();
    vdcReturnValue.setSucceeded(true);
    when(backendInternal.runInternalAction(
            any(VdcActionType.class),
            any(VdcActionParametersBase.class),
            any(CommandContext.class)))
        .thenReturn(vdcReturnValue);
    StorageDomainStatic storageDomain = new StorageDomainStatic();
    storageDomain.setId(Guid.newGuid());
    storageDomain.setStorageDomainType(StorageDomainType.ImportExport);
    mockGetStorageDomainInfoVdsCommand(storageDomain);
    mockAttachStorageDomainVdsCommand();
    when(vdsDao.get(any(Guid.class))).thenReturn(vds);
    doReturn(Collections.emptyList())
        .when(cmd)
        .getEntitiesFromStorageOvfDisk(storageDomainId, pool.getId());
    doReturn(Collections.emptyList()).when(cmd).getAllOVFDisks(storageDomainId, pool.getId());
    doAnswer(
            new Answer<Object>() {
              @Override
              public Object answer(InvocationOnMock invocation) throws Throwable {
                map = (StoragePoolIsoMap) invocation.getArguments()[0];
                return null;
              }
            })
        .when(isoMapDao)
        .save(any(StoragePoolIsoMap.class));

    cmd.setCompensationContext(mock(CompensationContext.class));
    cmd.executeCommand();
    assertNotNull(map);
    assertEquals(StorageDomainStatus.Maintenance, map.getStatus());
  }