import io.sphere.client.shop.model.Category; import io.sphere.client.shop.model.Product; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.htmlunit.HtmlUnitDriver; import play.libs.F; import play.test.TestBrowser; import utils.SphereTestable; import java.util.ArrayList; import java.util.List; import static org.fest.assertions.Assertions.assertThat; import static play.test.Helpers.*; import static utils.SphereTestable.mockCategory; import static utils.SphereTestable.mockProduct; public class IntegrationTest { private SphereTestable sphereTestable; @Before public void mockSphere() { running(fakeApplication(), new Runnable() { public void run() { sphereTestable = new SphereTestable(); mockCategoryRequest(3); mockProductRequest(15, 0, 10); } }); } private void mockCategoryRequest(int level) { List<Category> categories = mockCategory("cat", level); sphereTestable.mockCategoryTree(categories); } private void mockProductRequest(int numProducts, int page, int pageSize) { List<Product> products = new ArrayList<Product>(); for (int i = 0 ; i < numProducts; i++) { products.add(mockProduct("prod" + i + 1, 1, 1, 1)); } sphereTestable.mockProductService(products, page, pageSize); } @Test public void showHome() { running(testServer(3333, fakeApplication()), HTMLUNIT, new F.Callback<TestBrowser>() { public void invoke(TestBrowser browser) { // TODO Find out why htmlunit has trouble loading masonry and why it only fails on home page browser = testBrowser(new HtmlUnitDriver(false)); goToHome(browser); assertThat(browser.$("body.home").isEmpty()).isFalse(); } }); } @Test public void showCategory() { running(testServer(3333, fakeApplication()), HTMLUNIT, new F.Callback<TestBrowser>() { public void invoke(TestBrowser browser) { browser = testBrowser(new HtmlUnitDriver(false)); goToCategory(browser); assertThat(browser.$("body.category").isEmpty()).isFalse(); assertThat(browser.title()).isEqualTo("cat1Name"); } }); } @Test public void showSubcategory() { running(testServer(3333, fakeApplication()), HTMLUNIT, new F.Callback<TestBrowser>() { public void invoke(TestBrowser browser) { browser = testBrowser(new HtmlUnitDriver(false)); goToSubcategory(browser); assertThat(browser.$("body.category").isEmpty()).isFalse(); assertThat(browser.title()).isEqualTo("cat2Name"); } }); } public void goToHome(TestBrowser browser) { browser.goTo("http://localhost:3333"); } public void goToCategory(TestBrowser browser) { goToHome(browser); browser.$("#link-category-cat1Slug").click(); } public void goToSubcategory(TestBrowser browser) { goToCategory(browser); browser.$("#link-category-cat2Slug").click(); } }