Skip to content

Instantly share code, notes, and snippets.

View shdblowers's full-sized avatar
👨‍💻
writing code

Steven Blowers shdblowers

👨‍💻
writing code
View GitHub Profile
defmodule GherkinTests.Config do
use WhiteBread.SuiteConfiguration
suite name: "Add User",
context: GherkinTests.Contexts.AddUser,
feature_paths: ["features/add_user.feature"]
suite name: "Delete User",
context: GherkinTests.Contexts.DeleteUser,
feature_paths: ["features/delete_user.feature"]
defmodule GherkinTests.Contexts.Nothing do
use WhiteBread.Context
given_ ~r/^nothing/,
fn state ->
{:ok, state}
end
end
defmodule GherkinTests.Contexts.AddUser do
use WhiteBread.Context
subcontext GherkinTests.Contexts.Nothing
end
Feature: Changing user details
Scenario: Changing first name to Bob
Given I register a new user called Brian
When I change their name to Bob
Then their name should be Bob
Scenario: Changing first name to Charlie
Given I register a new user called Roberto
When I change their name to Charlie
defmodule GherkinTests.Contexts.EditUser do
use WhiteBread.Context
given_ ~r/^I register a new user called Brian$/,
fn state ->
user_details = %{name: "Brian", email: "brian@example.com", password: "password123"}
user_id = MyApp.register(user_details)
state = Map.put(state, :user_id, user_id)
Feature: Changing user details
Scenario: Changing first name to Bob
Given I register a new user called "Brian"
When I change their name to "Bob"
Then their name should be "Bob"
Scenario: Changing first name to Charlie
Given I register a new user called "Roberto"
When I change their name to "Charlie"
defmodule GherkinTests.Contexts.EditUser do
use WhiteBread.Context
given_ ~r/^I register a new user called "(?<name>[^"]+)"$/,
fn state, %{name: name} ->
user_details = %{name: name, email: "#{name}@example.com", password: "password123"}
user_id = MyApp.register(user_details)
state = Map.put(state, :user_id, user_id)
Feature: Changing user details
Scenario: Changing first name to Bob
Given I register a new user called "Brian"
When I change their "name" to "Bob"
Then their "name" should be "Bob"
Scenario: Changing first name to Charlie
Given I register a new user called "Roberto"
When I change their "name" to "Charlie"
Feature: Changing user details
Scenario: Changing first name to Bob
Given I register a new user
And I change their "name" to "Brian"
When I change their "name" to "Bob"
Then their "name" should be "Bob"
Scenario: Changing first name to Charlie
Given I register a new user
defmodule GherkinTests.State do
def store(state, key, value), do: Map.put(state, key, value)
def retrieve(state, key), do: Map.get(state, key)
def set_if_not_exists(state, key, value) do
if Map.has_key?(state, key) do
state
else