Pārlūkot izejas kodu

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

Andy Marks 9 gadus atpakaļ
vecāks
revīzija
f1c4be6b59

+ 21
- 7
src/test/java/se/citerus/dddsample/acceptance/AdminAcceptanceTest.java Parādīt failu

1
 package se.citerus.dddsample.acceptance;
1
 package se.citerus.dddsample.acceptance;
2
 
2
 
3
 import org.junit.Test;
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
 import static junit.framework.TestCase.assertTrue;
11
 import static junit.framework.TestCase.assertTrue;
10
 
12
 
22
     @Test
24
     @Test
23
     public void adminSiteCanBookNewCargo() {
25
     public void adminSiteCanBookNewCargo() {
24
         LaunchPage home = new LaunchPage(driver,"http://localhost:8080/");
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
         cargoBookingPage.selectOrigin("NLRTM");
29
         cargoBookingPage.selectOrigin("NLRTM");
28
         cargoBookingPage.selectDestination("USDAL");
30
         cargoBookingPage.selectDestination("USDAL");
31
+        LocalDate arrivalDeadline = LocalDate.now().plus(2, ChronoUnit.WEEKS);
32
+        cargoBookingPage.selectArrivalDeadline(arrivalDeadline);
29
         CargoDetailsPage cargoDetailsPage = cargoBookingPage.book();
33
         CargoDetailsPage cargoDetailsPage = cargoBookingPage.book();
30
         String newCargoTrackingId = cargoDetailsPage.getTrackingId();
34
         String newCargoTrackingId = cargoDetailsPage.getTrackingId();
31
 
35
 
32
-        AdminPage adminPage = cargoDetailsPage.listAllCargo();
36
+        adminPage = cargoDetailsPage.listAllCargo();
33
         assertTrue("Cargo list doesn't contain " + newCargoTrackingId, adminPage.listedCargoContains(newCargoTrackingId));
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 Parādīt failu

33
         Optional<WebElement> matchingCargo = cargoList.stream().filter(cargo -> cargo.getText().equals(expectedTrackingId)).findFirst();
33
         Optional<WebElement> matchingCargo = cargoList.stream().filter(cargo -> cargo.getText().equals(expectedTrackingId)).findFirst();
34
         return matchingCargo.isPresent();
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 Parādīt failu

5
 import org.openqa.selenium.WebElement;
5
 import org.openqa.selenium.WebElement;
6
 import org.openqa.selenium.support.ui.Select;
6
 import org.openqa.selenium.support.ui.Select;
7
 
7
 
8
+import java.time.LocalDate;
9
+import java.time.format.DateTimeFormatter;
8
 import java.util.List;
10
 import java.util.List;
9
 
11
 
10
 import static org.junit.Assert.assertEquals;
12
 import static org.junit.Assert.assertEquals;
36
 
38
 
37
         return new CargoDetailsPage(driver);
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 Parādīt failu

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 Parādīt failu

4
 import org.openqa.selenium.WebDriver;
4
 import org.openqa.selenium.WebDriver;
5
 import org.openqa.selenium.WebElement;
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
 import static junit.framework.TestCase.assertTrue;
11
 import static junit.framework.TestCase.assertTrue;
12
+import static org.junit.Assert.assertEquals;
8
 
13
 
9
 public class CargoDetailsPage {
14
 public class CargoDetailsPage {
10
     public static final String TRACKING_ID_HEADER = "Details for cargo ";
15
     public static final String TRACKING_ID_HEADER = "Details for cargo ";
29
 
34
 
30
         return new AdminPage(driver);
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
 }