diff --git a/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumber/books/BookStore.java b/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumber/books/BookStore.java index 4ccfe61542..da9b711a16 100644 --- a/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumber/books/BookStore.java +++ b/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumber/books/BookStore.java @@ -19,10 +19,4 @@ public class BookStore { .filter(book -> Objects.equals(author, book.getAuthor())) .collect(Collectors.toList()); } - - public Optional bookByTitle(String title) { - return books.stream() - .filter(book -> book.getTitle().equals(title)) - .findFirst(); - } } diff --git a/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumberbackground/books/Book.java b/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumberbackground/books/Book.java new file mode 100644 index 0000000000..5fd1e680a0 --- /dev/null +++ b/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumberbackground/books/Book.java @@ -0,0 +1,35 @@ +package com.baeldung.cucumberbackground.books; + +public class Book { + + private String title; + private String author; + + public Book(String title, String author) { + this.title = title; + this.author = author; + } + + public Book() {} + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + @Override + public String toString() { + return "Book [title=" + title + ", author=" + author + "]"; + } +} diff --git a/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumberbackground/books/BookStore.java b/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumberbackground/books/BookStore.java new file mode 100644 index 0000000000..f22eecb5f3 --- /dev/null +++ b/testing-modules/testing-libraries/src/main/java/com/baeldung/cucumberbackground/books/BookStore.java @@ -0,0 +1,28 @@ +package com.baeldung.cucumberbackground.books; + +import java.util.*; +import java.util.stream.Collectors; + +public class BookStore { + private List books = new ArrayList<>(); + + public void addBook(Book book) { + books.add(book); + } + + public void addAllBooks(Collection books) { + this.books.addAll(books); + } + + public List booksByAuthor(String author) { + return books.stream() + .filter(book -> Objects.equals(author, book.getAuthor())) + .collect(Collectors.toList()); + } + + public Optional bookByTitle(String title) { + return books.stream() + .filter(book -> book.getTitle().equals(title)) + .findFirst(); + } +} diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumber/books/BookStoreRunSteps.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumber/books/BookStoreRunSteps.java index 995a3469f0..a0c759ab26 100644 --- a/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumber/books/BookStoreRunSteps.java +++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumber/books/BookStoreRunSteps.java @@ -56,11 +56,6 @@ public class BookStoreRunSteps { 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$") public void findBooks(int count) { assertEquals(count, foundBooks.size()); diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreRunSteps.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreRunSteps.java new file mode 100644 index 0000000000..981fe41f11 --- /dev/null +++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreRunSteps.java @@ -0,0 +1,58 @@ +package com.baeldung.cucumberbackground.books; + +import io.cucumber.datatable.DataTable; +import io.cucumber.java.Before; +import io.cucumber.java.en.Given; +import io.cucumber.java.en.Then; +import io.cucumber.java.en.When; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; + +public class BookStoreRunSteps { + private BookStore store; + private List foundBooks; + private Book foundBook; + + @Before + public void setUp() { + store = new BookStore(); + foundBooks = new ArrayList<>(); + } + + @Given("^I have the following books in the store$") + public void haveBooksInTheStore(DataTable table) { + List> rows = table.asLists(String.class); + + for (List columns: rows) { + store.addBook(new Book(columns.get(0), columns.get(1))); + } + } + + @When("^I search for books by author (.+)$") + public void searchForBooksByAuthor(String 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$") + public void findBooks(int count) { + assertEquals(count, foundBooks.size()); + } + + @Then("^I find a book$") + public void findABook() { + assertNotNull(foundBook); + } + + @Then("^I find no book$") + public void findNoBook() { + assertNull(foundBook); + } +} diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreWithBackgroundIntegrationTest.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreWithBackgroundIntegrationTest.java new file mode 100644 index 0000000000..528ccbc882 --- /dev/null +++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreWithBackgroundIntegrationTest.java @@ -0,0 +1,12 @@ +package com.baeldung.cucumberbackground.books; + +import io.cucumber.junit.Cucumber; +import io.cucumber.junit.CucumberOptions; +import org.junit.runner.RunWith; + +@RunWith(Cucumber.class) +@CucumberOptions(features = "classpath:features/book-store-with-background.feature") +public class BookStoreWithBackgroundIntegrationTest { + +} + diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreWithoutBackgroundIntegrationTest.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreWithoutBackgroundIntegrationTest.java new file mode 100644 index 0000000000..6343a52cdc --- /dev/null +++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/cucumberbackground/books/BookStoreWithoutBackgroundIntegrationTest.java @@ -0,0 +1,12 @@ +package com.baeldung.cucumberbackground.books; + +import io.cucumber.junit.Cucumber; +import io.cucumber.junit.CucumberOptions; +import org.junit.runner.RunWith; + +@RunWith(Cucumber.class) +@CucumberOptions(features = "classpath:features/book-store-without-background.feature") +public class BookStoreWithoutBackgroundIntegrationTest { + +} +