浏览代码

Now able to test cargo add and appearance on list page

Andy Marks 9 年前
父节点
当前提交
9ad6d02ff5

+ 25
- 2
src/test/java/se/citerus/dddsample/acceptance/AdminAcceptanceTest.java 查看文件

@@ -1,12 +1,35 @@
1 1
 package se.citerus.dddsample.acceptance;
2 2
 
3 3
 import org.junit.Test;
4
+import se.citerus.dddsample.acceptance.pages.AdminPage;
5
+import se.citerus.dddsample.acceptance.pages.CargoBookingPage;
6
+import se.citerus.dddsample.acceptance.pages.CargoDetailsPage;
4 7
 import se.citerus.dddsample.acceptance.pages.LaunchPage;
5 8
 
9
+import static junit.framework.TestCase.assertTrue;
10
+
6 11
 public class AdminAcceptanceTest extends AbstractAcceptanceTest {
7 12
     @Test
8
-    public void adminSiteIsOperational() {
13
+    public void adminSiteCargoListContainsCannedCargo() {
9 14
         LaunchPage home = new LaunchPage(driver,"http://localhost:8080/");
10
-        home.goToAdminPage();
15
+        AdminPage page = home.goToAdminPage();
16
+        page.listAllCargo();
17
+
18
+        assertTrue("Cargo list doesn't contain ABC123", page.listedCargoContains("ABC123"));
19
+        assertTrue("Cargo list doesn't contain JKL567", page.listedCargoContains("JKL567"));
20
+    }
21
+
22
+    @Test
23
+    public void adminSiteCanBookNewCargo() {
24
+        LaunchPage home = new LaunchPage(driver,"http://localhost:8080/");
25
+        AdminPage page = home.goToAdminPage();
26
+        CargoBookingPage cargoBookingPage = page.bookNewCargo();
27
+        cargoBookingPage.selectOrigin("NLRTM");
28
+        cargoBookingPage.selectDestination("USDAL");
29
+        CargoDetailsPage cargoDetailsPage = cargoBookingPage.book();
30
+        String newCargoTrackingId = cargoDetailsPage.getTrackingId();
31
+
32
+        AdminPage adminPage = cargoDetailsPage.listAllCargo();
33
+        assertTrue("Cargo list doesn't contain " + newCargoTrackingId, adminPage.listedCargoContains(newCargoTrackingId));
11 34
     }
12 35
 }

+ 25
- 0
src/test/java/se/citerus/dddsample/acceptance/pages/AdminPage.java 查看文件

@@ -1,11 +1,36 @@
1 1
 package se.citerus.dddsample.acceptance.pages;
2 2
 
3
+import org.openqa.selenium.By;
3 4
 import org.openqa.selenium.WebDriver;
5
+import org.openqa.selenium.WebElement;
6
+
7
+import java.util.List;
8
+import java.util.Optional;
4 9
 
5 10
 import static org.junit.Assert.assertEquals;
6 11
 
7 12
 public class AdminPage {
13
+    private final WebDriver driver;
14
+
8 15
     public AdminPage(WebDriver driver) {
16
+        this.driver = driver;
17
+        assertEquals("Cargo Administration", driver.getTitle());
18
+    }
19
+
20
+    public void listAllCargo() {
21
+        driver.findElement(By.linkText("List all cargos")).click();
9 22
         assertEquals("Cargo Administration", driver.getTitle());
10 23
     }
24
+
25
+    public CargoBookingPage bookNewCargo() {
26
+        driver.findElement(By.linkText("Book new cargo")).click();
27
+
28
+        return new CargoBookingPage(driver);
29
+    }
30
+
31
+    public boolean listedCargoContains(String expectedTrackingId) {
32
+        List<WebElement> cargoList = driver.findElements(By.cssSelector("#body table tbody tr td a"));
33
+        Optional<WebElement> matchingCargo = cargoList.stream().filter(cargo -> cargo.getText().equals(expectedTrackingId)).findFirst();
34
+        return matchingCargo.isPresent();
35
+    }
11 36
 }

+ 39
- 0
src/test/java/se/citerus/dddsample/acceptance/pages/CargoBookingPage.java 查看文件

@@ -0,0 +1,39 @@
1
+package se.citerus.dddsample.acceptance.pages;
2
+
3
+import org.openqa.selenium.By;
4
+import org.openqa.selenium.WebDriver;
5
+import org.openqa.selenium.WebElement;
6
+import org.openqa.selenium.support.ui.Select;
7
+
8
+import java.util.List;
9
+
10
+import static org.junit.Assert.assertEquals;
11
+
12
+public class CargoBookingPage {
13
+
14
+    private final WebDriver driver;
15
+
16
+    public CargoBookingPage(WebDriver driver) {
17
+        this.driver = driver;
18
+
19
+        WebElement newCargoTableCaption = driver.findElement(By.cssSelector("table caption"));
20
+
21
+        assertEquals("Book new cargo", newCargoTableCaption.getText());
22
+    }
23
+
24
+    public void selectOrigin(String origin) {
25
+        Select select = new Select(driver.findElement(By.name("originUnlocode")));
26
+        select.selectByVisibleText(origin);
27
+    }
28
+
29
+    public void selectDestination(String destination) {
30
+        Select select = new Select(driver.findElement(By.name("destinationUnlocode")));
31
+        select.selectByVisibleText(destination);
32
+    }
33
+
34
+    public CargoDetailsPage book() {
35
+        driver.findElement(By.name("originUnlocode")).submit();
36
+
37
+        return new CargoDetailsPage(driver);
38
+    }
39
+}

+ 32
- 0
src/test/java/se/citerus/dddsample/acceptance/pages/CargoDetailsPage.java 查看文件

@@ -0,0 +1,32 @@
1
+package se.citerus.dddsample.acceptance.pages;
2
+
3
+import org.openqa.selenium.By;
4
+import org.openqa.selenium.WebDriver;
5
+import org.openqa.selenium.WebElement;
6
+
7
+import static junit.framework.TestCase.assertTrue;
8
+
9
+public class CargoDetailsPage {
10
+    public static final String TRACKING_ID_HEADER = "Details for cargo ";
11
+    private final WebDriver driver;
12
+    private String trackingId;
13
+
14
+    public CargoDetailsPage(WebDriver driver) {
15
+        this.driver = driver;
16
+
17
+        WebElement newCargoTableCaption = driver.findElement(By.cssSelector("table caption"));
18
+
19
+        assertTrue(newCargoTableCaption.getText().startsWith(TRACKING_ID_HEADER));
20
+        trackingId = newCargoTableCaption.getText().replaceFirst(TRACKING_ID_HEADER, "");
21
+    }
22
+
23
+    public String getTrackingId() {
24
+        return trackingId;
25
+    }
26
+
27
+    public AdminPage listAllCargo() {
28
+        driver.findElement(By.linkText("List all cargos")).click();
29
+
30
+        return new AdminPage(driver);
31
+    }
32
+}