package com.belladati.sdk.view.impl; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertTrue; import java.io.IOException; import org.apache.http.entity.InputStreamEntity; import org.apache.http.entity.StringEntity; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.belladati.sdk.exception.impl.UnknownViewTypeException; import com.belladati.sdk.test.SDKTest; import com.belladati.sdk.test.TestRequestHandler; import com.belladati.sdk.view.View; import com.belladati.sdk.view.ViewType; import com.belladati.sdk.view.ImageView; import com.belladati.sdk.view.ImageView.Image; @Test public class ImageViewsTest extends SDKTest { private final String id = "id"; private final String name = "name"; private final String viewsImageUri = "/api/reports/views/" + id + "/image"; @BeforeMethod(alwaysRun = true) protected void setupSources() throws Exception { server.register(viewsImageUri, new TestRequestHandler() { @Override protected void handle(HttpHolder holder) throws IOException { holder.response.setEntity(new InputStreamEntity(getTestImageStream())); } }); } /** equals and hashcode work as expected */ public void equality() { Image obj1 = new ImageViewImpl.ImageImpl(id, getTestBufferedImage()); Image obj2 = new ImageViewImpl.ImageImpl(id, getTestBufferedImage()); Image obj3 = new ImageViewImpl.ImageImpl("otherId", getTestBufferedImage()); assertEquals(obj1, obj2); assertEquals(obj1.hashCode(), obj2.hashCode()); assertFalse(obj1.equals(new Object())); assertNotEquals(obj1, obj3); } /** image is loaded correctly. */ public void loadViewTable() throws UnknownViewTypeException { View view = new ImageViewImpl(service, builder.buildViewNode(id, name, "image")); ImageView.Image image = (Image) view.loadContent(); assertEquals(image.getId(), id); assertEqualsBufferedImage(image.getImage(), getTestBufferedImage()); assertTrue(image.toString().contains(id)); assertEquals(view.toString(), name); } /** image is loaded correctly via service. */ public void loadViewTableFromService() { ImageView.Image image = (Image) service.loadViewContent(id, ViewType.IMAGE); assertEquals(image.getId(), id); assertEqualsBufferedImage(image.getImage(), getTestBufferedImage()); assertTrue(image.toString().contains(id)); } /** image is loaded correctly. */ public void loadViewTableFromLoader() throws UnknownViewTypeException { View view = new ImageViewImpl(service, builder.buildViewNode(id, name, "image")); ImageView.Image image = (Image) view.createLoader().loadContent(); assertEquals(image.getId(), id); assertEqualsBufferedImage(image.getImage(), getTestBufferedImage()); assertTrue(image.toString().contains(id)); assertEquals(view.toString(), name); } /** image is loaded correctly via service. */ public void loadViewTableFromServiceLoader() { ImageView.Image image = (Image) service.setupViewLoader(id, ViewType.IMAGE).loadContent(); assertEquals(image.getId(), id); assertEqualsBufferedImage(image.getImage(), getTestBufferedImage()); assertTrue(image.toString().contains(id)); } public void updateImage_fromService() { final boolean[] executed = new boolean[1]; server.register(viewsImageUri, new TestRequestHandler() { @Override protected void handle(HttpHolder holder) throws IOException { assertEquals(holder.getUrlParameters().size(), 0); holder.response.setEntity(new StringEntity("")); executed[0] = true; } }); service.editImageView(id, getTestImageFile()); assertTrue(executed[0]); } public void updateImage_fromImageView() throws UnknownViewTypeException { final boolean[] executed = new boolean[1]; server.register(viewsImageUri, new TestRequestHandler() { @Override protected void handle(HttpHolder holder) throws IOException { assertEquals(holder.getUrlParameters().size(), 0); holder.response.setEntity(new StringEntity("")); executed[0] = true; } }); ImageView view = new ImageViewImpl(service, builder.buildViewNode(id, name, "image")); view.updateImage(getTestImageFile()); assertTrue(executed[0]); } }