[BAEL-3445] Added Background examples to Cucumber examples (#8319)
This commit is contained in:
parent
69f8d56f3e
commit
8121161b36
|
@ -1,13 +1,9 @@
|
||||||
package com.baeldung.cucumber.books;
|
package com.baeldung.cucumber.books;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class BookStore {
|
public class BookStore {
|
||||||
|
|
||||||
private List<Book> books = new ArrayList<>();
|
private List<Book> books = new ArrayList<>();
|
||||||
|
|
||||||
public void addBook(Book book) {
|
public void addBook(Book book) {
|
||||||
|
@ -23,4 +19,10 @@ public class BookStore {
|
||||||
.filter(book -> Objects.equals(author, book.getAuthor()))
|
.filter(book -> Objects.equals(author, book.getAuthor()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<Book> bookByTitle(String title) {
|
||||||
|
return books.stream()
|
||||||
|
.filter(book -> book.getTitle().equals(title))
|
||||||
|
.findFirst();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package com.baeldung.cucumber.books;
|
package com.baeldung.cucumber.books;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -12,10 +10,12 @@ import io.cucumber.java.en.Then;
|
||||||
import io.cucumber.java.en.When;
|
import io.cucumber.java.en.When;
|
||||||
import io.cucumber.datatable.DataTable;
|
import io.cucumber.datatable.DataTable;
|
||||||
|
|
||||||
public class BookStoreRunSteps {
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class BookStoreRunSteps {
|
||||||
private BookStore store;
|
private BookStore store;
|
||||||
private List<Book> foundBooks;
|
private List<Book> foundBooks;
|
||||||
|
private Book foundBook;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
@ -23,9 +23,13 @@ public class BookStoreRunSteps {
|
||||||
foundBooks = new ArrayList<>();
|
foundBooks = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Given("^I have the following books in the store$")
|
||||||
|
public void haveBooksInTheStore(DataTable table) {
|
||||||
|
haveBooksInTheStoreByList(table);
|
||||||
|
}
|
||||||
|
|
||||||
@Given("^I have the following books in the store by list$")
|
@Given("^I have the following books in the store by list$")
|
||||||
public void haveBooksInTheStoreByList(DataTable table) {
|
public void haveBooksInTheStoreByList(DataTable table) {
|
||||||
|
|
||||||
List<List<String>> rows = table.asLists(String.class);
|
List<List<String>> rows = table.asLists(String.class);
|
||||||
|
|
||||||
for (List<String> columns: rows) {
|
for (List<String> columns: rows) {
|
||||||
|
@ -35,7 +39,6 @@ public class BookStoreRunSteps {
|
||||||
|
|
||||||
@Given("^I have the following books in the store by map$")
|
@Given("^I have the following books in the store by map$")
|
||||||
public void haveBooksInTheStoreByMap(DataTable table) {
|
public void haveBooksInTheStoreByMap(DataTable table) {
|
||||||
|
|
||||||
List<Map<String, String>> rows = table.asMaps(String.class, String.class);
|
List<Map<String, String>> rows = table.asMaps(String.class, String.class);
|
||||||
|
|
||||||
for (Map<String, String> columns: rows) {
|
for (Map<String, String> columns: rows) {
|
||||||
|
@ -53,8 +56,23 @@ public class BookStoreRunSteps {
|
||||||
foundBooks = store.booksByAuthor(author);
|
foundBooks = store.booksByAuthor(author);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@When("^I search for a book titled (.+)$")
|
||||||
|
public void searchForBookByTitle(String title) {
|
||||||
|
foundBook = store.bookByTitle(title).orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
@Then("^I find (\\d+) books$")
|
@Then("^I find (\\d+) books$")
|
||||||
public void findBooks(int count) {
|
public void findBooks(int count) {
|
||||||
assertEquals(count, foundBooks.size());
|
assertEquals(count, foundBooks.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Then("^I find a book$")
|
||||||
|
public void findABook() {
|
||||||
|
assertNotNull(foundBook);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("^I find no book$")
|
||||||
|
public void findNoBook() {
|
||||||
|
assertNull(foundBook);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
Feature: Book Store With Background
|
||||||
|
Background: The Book Store
|
||||||
|
Given I have the following books in the store
|
||||||
|
| The Devil in the White City | Erik Larson |
|
||||||
|
| The Lion, the Witch and the Wardrobe | C.S. Lewis |
|
||||||
|
| In the Garden of Beasts | Erik Larson |
|
||||||
|
|
||||||
|
Scenario: Find books by author
|
||||||
|
When I search for books by author Erik Larson
|
||||||
|
Then I find 2 books
|
||||||
|
|
||||||
|
Scenario: Find books by author, but isn't there
|
||||||
|
When I search for books by author Marcel Proust
|
||||||
|
Then I find 0 books
|
||||||
|
|
||||||
|
Scenario: Find book by title
|
||||||
|
When I search for a book titled The Lion, the Witch and the Wardrobe
|
||||||
|
Then I find a book
|
||||||
|
|
||||||
|
Scenario: Find book by title, but isn't there
|
||||||
|
When I search for a book titled Swann's Way
|
||||||
|
Then I find no book
|
|
@ -0,0 +1,32 @@
|
||||||
|
Feature: Book Store Without Background
|
||||||
|
Scenario: Find books by author
|
||||||
|
Given I have the following books in the store
|
||||||
|
| The Devil in the White City | Erik Larson |
|
||||||
|
| The Lion, the Witch and the Wardrobe | C.S. Lewis |
|
||||||
|
| In the Garden of Beasts | Erik Larson |
|
||||||
|
When I search for books by author Erik Larson
|
||||||
|
Then I find 2 books
|
||||||
|
|
||||||
|
Scenario: Find books by author, but isn't there
|
||||||
|
Given I have the following books in the store
|
||||||
|
| The Devil in the White City | Erik Larson |
|
||||||
|
| The Lion, the Witch and the Wardrobe | C.S. Lewis |
|
||||||
|
| In the Garden of Beasts | Erik Larson |
|
||||||
|
When I search for books by author Marcel Proust
|
||||||
|
Then I find 0 books
|
||||||
|
|
||||||
|
Scenario: Find book by title
|
||||||
|
Given I have the following books in the store
|
||||||
|
| The Devil in the White City | Erik Larson |
|
||||||
|
| The Lion, the Witch and the Wardrobe | C.S. Lewis |
|
||||||
|
| In the Garden of Beasts | Erik Larson |
|
||||||
|
When I search for a book titled The Lion, the Witch and the Wardrobe
|
||||||
|
Then I find a book
|
||||||
|
|
||||||
|
Scenario: Find book by title, but isn't there
|
||||||
|
Given I have the following books in the store
|
||||||
|
| The Devil in the White City | Erik Larson |
|
||||||
|
| The Lion, the Witch and the Wardrobe | C.S. Lewis |
|
||||||
|
| In the Garden of Beasts | Erik Larson |
|
||||||
|
When I search for a book titled Swann's Way
|
||||||
|
Then I find no book
|
Loading…
Reference in New Issue