package net.pterodactylus.sone;
import static java.util.UUID.randomUUID;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import net.pterodactylus.sone.data.Image;
import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.database.ImageBuilder;
/**
* {@link ImageBuilder} implementation that returns a mocked {@link Image}.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TestImageBuilder implements ImageBuilder {
private final Image image;
public TestImageBuilder() {
image = mock(Image.class);
Image.Modifier imageModifier = new Image.Modifier() {
private Sone sone = image.getSone();
private long creationTime = image.getCreationTime();
private String key = image.getKey();
private String title = image.getTitle();
private String description = image.getDescription();
private int width = image.getWidth();
private int height = image.getHeight();
@Override
public Image.Modifier setSone(Sone sone) {
this.sone = sone;
return this;
}
@Override
public Image.Modifier setCreationTime(long creationTime) {
this.creationTime = creationTime;
return this;
}
@Override
public Image.Modifier setKey(String key) {
this.key = key;
return this;
}
@Override
public Image.Modifier setTitle(String title) {
this.title = title;
return this;
}
@Override
public Image.Modifier setDescription(String description) {
this.description = description;
return this;
}
@Override
public Image.Modifier setWidth(int width) {
this.width = width;
return this;
}
@Override
public Image.Modifier setHeight(int height) {
this.height = height;
return this;
}
@Override
public Image update() throws IllegalStateException {
when(image.getSone()).thenReturn(sone);
when(image.getCreationTime()).thenReturn(creationTime);
when(image.getKey()).thenReturn(key);
when(image.getTitle()).thenReturn(title);
when(image.getDescription()).thenReturn(description);
when(image.getWidth()).thenReturn(width);
when(image.getHeight()).thenReturn(height);
return image;
}
};
when(image.modify()).thenReturn(imageModifier);
}
@Override
public ImageBuilder randomId() {
when(image.getId()).thenReturn(randomUUID().toString());
return this;
}
@Override
public ImageBuilder withId(String id) {
when(image.getId()).thenReturn(id);
return this;
}
@Override
public Image build() throws IllegalStateException {
return image;
}
}