Skip to content

Instantly share code, notes, and snippets.

View tooky's full-sized avatar

Steve Tooke tooky

View GitHub Profile
@tooky
tooky / property.feature
Last active April 19, 2018 16:06
gherkin <3 properties
Feature: Calculate order total
Rule: discounts are applied for eligible, registered users
Given the registered customer
| email | <email> |
| eligible for discount | <eligible> |
| discount | <discount> |
When there is an order by <order-email> for <amount>
Then the order total should be <total>
@tooky
tooky / .mobbers
Last active March 22, 2018 14:02
prepare-commit-msg hook to include potention Co-authors
Co-authored-by: Joanne Bloggs <jo@example.com>
Co-authored-by: John Dowe <123456+JohnDowe@users.noereply.github.com>
# Your init script
#
# Atom will evaluate this file each time a new window is opened. It is run
# after packages are loaded/activated and after the previous editor state
# has been restored.
#
# An example hack to log to the console when each text editor is saved.
#
# atom.workspace.observeTextEditors (editor) ->
# editor.onDidSave ->
@tooky
tooky / bumbailiff
Created September 18, 2017 14:53
Bumbailiff - A script for ageing TODO comments in code.
#!/usr/bin/env bash
#
# The bumbailiff allows the team to take up a small amount of technical debt
# (TODOs in the code) for a limited period. After that period the script fails.
#
# It will find // TODO in .js or .jsx files, and # TODO in .feature files.
#
# For example, if the allowed period for all the TODOs is 14 days.
# * It's OK to have 1 TODO that is 13 days old
# * It's OK to have 3 TODOs that are 4 days old
<?php
use Shouty\Shouty;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Behat\Testwork\ServiceContainer\ExtensionManager;
use Behat\Testwork\ServiceContainer\Extension;
use Behat\Behat\Context\ServiceContainer\ContextExtension;
use Behat\Behat\Context\Initializer\ContextInitializer;
use Behat\Behat\Context\Context;
it('can be returned like a promise', () => {
let expectedError = new Error('I am not good.');
let SafePromise = safePromises.failWith(actualError => {
expect(actualError).to.equal(expectedError);
});
return SafePromise.reject(expectedError)
.then(() => { throw new Error('should be caught') })
.catch()
})
default:
suites:
default:
contexts:
- FeatureContext:
baseUrl: http://localhost:8080/
@tooky
tooky / war.feature
Last active September 2, 2015 19:11
Feature: A Game of War
Scenario: Two Card Deck
Given a shuffled deck with the following cards:
| 2 ♥ |
| 3 ♣ |
And the cards are dealt evenly between 2 players
When the first hand is played
Then player 2 should hold all the cards
And player 2 should have won the game
puts "*" * 100
require 'cucumber/wire_support/wire_language'
class WireFilter < Cucumber::Core::Filter.new(:wire)
def test_case(test_case)
wire.begin_scenario(test_case)
test_case.describe_to receiver
wire.end_scenario
end
end
Feature: Tag logic
In order to conveniently run subsets of features
As a Cuker
I want to select features using logical AND/OR of tags
Background:
Given a file named "features/test.feature" with:
"""
@feature
Feature: Sample