Procházet zdrojové kódy

More comprehensive Cargo booking test - unable to pick date yet though

Andy Marks před 9 roky
rodič
revize
f1c4be6b59

+ 21
- 7
src/test/java/se/citerus/dddsample/acceptance/AdminAcceptanceTest.java Zobrazit soubor

@@ -1,10 +1,12 @@
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;
7
-import se.citerus.dddsample.acceptance.pages.LaunchPage;
4
+import se.citerus.dddsample.acceptance.pages.*;
5
+
6
+import java.text.SimpleDateFormat;
7
+import java.time.LocalDate;
8
+import java.time.format.DateTimeFormatter;
9
+import java.time.temporal.ChronoUnit;
8 10
 
9 11
 import static junit.framework.TestCase.assertTrue;
10 12
 
@@ -22,14 +24,26 @@ public class AdminAcceptanceTest extends AbstractAcceptanceTest {
22 24
     @Test
23 25
     public void adminSiteCanBookNewCargo() {
24 26
         LaunchPage home = new LaunchPage(driver,"http://localhost:8080/");
25
-        AdminPage page = home.goToAdminPage();
26
-        CargoBookingPage cargoBookingPage = page.bookNewCargo();
27
+        AdminPage adminPage = home.goToAdminPage();
28
+        CargoBookingPage cargoBookingPage = adminPage.bookNewCargo();
27 29
         cargoBookingPage.selectOrigin("NLRTM");
28 30
         cargoBookingPage.selectDestination("USDAL");
31
+        LocalDate arrivalDeadline = LocalDate.now().plus(2, ChronoUnit.WEEKS);
32
+        cargoBookingPage.selectArrivalDeadline(arrivalDeadline);
29 33
         CargoDetailsPage cargoDetailsPage = cargoBookingPage.book();
30 34
         String newCargoTrackingId = cargoDetailsPage.getTrackingId();
31 35
 
32
-        AdminPage adminPage = cargoDetailsPage.listAllCargo();
36
+        adminPage = cargoDetailsPage.listAllCargo();
33 37
         assertTrue("Cargo list doesn't contain " + newCargoTrackingId, adminPage.listedCargoContains(newCargoTrackingId));
38
+
39
+        cargoDetailsPage = adminPage.showDetailsFor(newCargoTrackingId);
40
+        cargoDetailsPage.expectOriginOf("NLRTM");
41
+        cargoDetailsPage.expectDestinationOf("USDAL");
42
+
43
+        CargoDestinationPage cargoDestinationPage = cargoDetailsPage.changeDestination();
44
+        cargoDetailsPage = cargoDestinationPage.selectDestinationTo("AUMEL");
45
+        cargoDetailsPage.expectDestinationOf("AUMEL");
46
+//        cargoDetailsPage.expectArrivalDeadlineOf(arrivalDeadline);
47
+
34 48
     }
35 49
 }

+ 6
- 0
src/test/java/se/citerus/dddsample/acceptance/pages/AdminPage.java Zobrazit soubor

@@ -33,4 +33,10 @@ public class AdminPage {
33 33
         Optional<WebElement> matchingCargo = cargoList.stream().filter(cargo -> cargo.getText().equals(expectedTrackingId)).findFirst();
34 34
         return matchingCargo.isPresent();
35 35
     }
36
+
37
+    public CargoDetailsPage showDetailsFor(String cargoTrackingId) {
38
+        driver.findElement(By.linkText(cargoTrackingId)).click();
39
+
40
+        return new CargoDetailsPage(driver);
41
+    }
36 42
 }

+ 8
- 0
src/test/java/se/citerus/dddsample/acceptance/pages/CargoBookingPage.java Zobrazit soubor

@@ -5,6 +5,8 @@ import org.openqa.selenium.WebDriver;
5 5
 import org.openqa.selenium.WebElement;
6 6
 import org.openqa.selenium.support.ui.Select;
7 7
 
8
+import java.time.LocalDate;
9
+import java.time.format.DateTimeFormatter;
8 10
 import java.util.List;
9 11
 
10 12
 import static org.junit.Assert.assertEquals;
@@ -36,4 +38,10 @@ public class CargoBookingPage {
36 38
 
37 39
         return new CargoDetailsPage(driver);
38 40
     }
41
+
42
+    public void selectArrivalDeadline(LocalDate arrivalDeadline) {
43
+        WebElement datePicker = driver.findElement(By.id("arrivalDeadline"));
44
+        datePicker.clear();
45
+        datePicker.sendKeys(arrivalDeadline.format(DateTimeFormatter.ofPattern("MM/dd/yyyy")));
46
+    }
39 47
 }

+ 29
- 0
src/test/java/se/citerus/dddsample/acceptance/pages/CargoDestinationPage.java Zobrazit soubor

@@ -0,0 +1,29 @@
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 static junit.framework.TestCase.assertTrue;
9
+
10
+public class CargoDestinationPage {
11
+    private final WebDriver driver;
12
+
13
+    public CargoDestinationPage(WebDriver driver) {
14
+        this.driver = driver;
15
+        WebElement cargoDestinationHeader = driver.findElement(By.cssSelector("table caption"));
16
+
17
+        assertTrue(cargoDestinationHeader.getText().startsWith("Change destination for cargo "));
18
+    }
19
+
20
+    public CargoDetailsPage selectDestinationTo(String destination) {
21
+        WebElement destinationPicker = driver.findElement(By.name("unlocode"));
22
+        Select select = new Select(destinationPicker);
23
+        select.selectByVisibleText(destination);
24
+
25
+        destinationPicker.submit();
26
+
27
+        return new CargoDetailsPage(driver);
28
+    }
29
+}

+ 29
- 0
src/test/java/se/citerus/dddsample/acceptance/pages/CargoDetailsPage.java Zobrazit soubor

@@ -4,7 +4,12 @@ import org.openqa.selenium.By;
4 4
 import org.openqa.selenium.WebDriver;
5 5
 import org.openqa.selenium.WebElement;
6 6
 
7
+import java.time.LocalDate;
8
+import java.time.format.DateTimeFormatter;
9
+import java.util.List;
10
+
7 11
 import static junit.framework.TestCase.assertTrue;
12
+import static org.junit.Assert.assertEquals;
8 13
 
9 14
 public class CargoDetailsPage {
10 15
     public static final String TRACKING_ID_HEADER = "Details for cargo ";
@@ -29,4 +34,28 @@ public class CargoDetailsPage {
29 34
 
30 35
         return new AdminPage(driver);
31 36
     }
37
+
38
+    public void expectOriginOf(String expectedOrigin) {
39
+        String actualOrigin = driver.findElement(By.xpath("//div[@id='container']/table/tbody/tr[1]/td[2]")).getText();
40
+
41
+        assertEquals(expectedOrigin, actualOrigin);
42
+    }
43
+
44
+    public void expectDestinationOf(String expectedDestination) {
45
+        String actualDestination = driver.findElement(By.xpath("//div[@id='container']/table/tbody/tr[2]/td[2]")).getText();
46
+
47
+        assertEquals(expectedDestination, actualDestination);
48
+    }
49
+
50
+    public CargoDestinationPage changeDestination() {
51
+        driver.findElement(By.linkText("Change destination")).click();
52
+
53
+        return new CargoDestinationPage(driver);
54
+    }
55
+
56
+    public void expectArrivalDeadlineOf(LocalDate expectedArrivalDeadline) {
57
+        String actualArrivalDeadline = driver.findElement(By.xpath("//div[@id='container']/table/tbody/tr[4]/td[2]")).getText();
58
+
59
+        assertEquals(expectedArrivalDeadline.format(DateTimeFormatter.ofPattern("MM/dd/yyyy")), actualArrivalDeadline);
60
+    }
32 61
 }