/*******************************************************************************
* Copyright (c) 2011-2014 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.client.utils;
import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.fest.assertions.AssertExtension;
import org.fest.assertions.Assertions;
import com.openshift.client.GearState;
import com.openshift.client.IGear;
import com.openshift.client.IGearGroup;
import com.openshift.client.cartridge.ICartridge;
/**
* @author André Dietisheim
* @author Jeff Cantrill
*/
public class GearGroupAssert implements AssertExtension {
private IGearGroup gearGroup;
public GearGroupAssert(IGearGroup gearGroup) {
this.gearGroup = gearGroup;
}
public GearGroupAssert hasName(String name) {
assertEquals(name, gearGroup.getName());
return this;
}
public GearGroupAssert hasUUID(String uuid) {
assertEquals(uuid, gearGroup.getUUID());
return this;
}
public GearGroupAssert hasUUID() {
assertNotNull(gearGroup.getUUID());
return this;
}
public GearGroupAssert hasGears() {
assertThat(gearGroup.getGears()).isNotNull();
assertThat(gearGroup.getGears().size()).isPositive();
return this;
}
public GearGroupAssert hasAdditionalStorageSize(int size){
assertThat(gearGroup.getAdditionalStorage()).isEqualTo(size);
return this;
}
public GearAssert assertGear(String id) {
assertNotNull(id);
for (IGear gear : gearGroup.getGears()) {
if (id.equals(gear.getId())) {
return new GearAssert(gear);
}
}
fail("gear group " + gearGroup.getName() + " does not contain a gear with id " + id);
return null;
}
public GearAssert assertGear(int number) {
assertThat(number).isGreaterThanOrEqualTo(0);
assertThat(number).as("gear group " + gearGroup.getName() + " does not contain " + number + " gears")
.isLessThanOrEqualTo(gearGroup.getGears().size());
int i = 0;
for (IGear gear : gearGroup.getGears()) {
if (i == number) {
return new GearAssert(gear);
}
}
return null;
}
public class GearAssert {
private IGear gear;
public GearAssert(IGear gear) {
this.gear = gear;
}
public GearAssert hasId() {
assertThat(gear.getId()).isNotNull().isNotEmpty();
return this;
}
public GearAssert hasId(String id) {
assertNotNull(id);
assertEquals(id, gear.getId());
return this;
}
public GearGroupAssert hasState() {
assertThat(gear.getState()).isInstanceOf(GearState.class);
return GearGroupAssert.this;
}
public GearGroupAssert inState(GearState state) {
assertNotNull(state);
assertEquals(state, gear.getState());
return GearGroupAssert.this;
}
public GearGroupAssert hasSshUrl(String sshUrl) {
assertNotNull(sshUrl);
assertEquals(sshUrl, gear.getSshUrl());
return GearGroupAssert.this;
}
}
public GearGroupAssert hasCartridges(final String... expectedCartridgeNames) {
final Collection<ICartridge> existingCartridges = gearGroup.getCartridges();
final List<String> existingCartridgeNames = new ArrayList<String>();
final Iterator<ICartridge> cartridgeIterator = existingCartridges.iterator();
for(int i = 0; i < existingCartridges.size(); i++) {
existingCartridgeNames.add(cartridgeIterator.next().getName());
}
Assertions.assertThat(existingCartridgeNames).isEqualTo(Arrays.asList(expectedCartridgeNames));
return this;
}
}