summaryrefslogtreecommitdiff
path: root/type-parser/features/steps
diff options
context:
space:
mode:
Diffstat (limited to 'type-parser/features/steps')
-rw-r--r--type-parser/features/steps/custom-type.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/type-parser/features/steps/custom-type.js b/type-parser/features/steps/custom-type.js
new file mode 100644
index 0000000..a200a9c
--- /dev/null
+++ b/type-parser/features/steps/custom-type.js
@@ -0,0 +1,48 @@
+const { Before, Given, When, Then, defineParameterType } = require('cucumber')
+const { expect } = require('chai')
+
+defineParameterType({
+ name: 'tobe',
+ regexp: [
+ /is/,
+ /is not/
+ ],
+ transformer: x => x === 'is'
+})
+
+When('I interpret "to be" as a type', function () {
+})
+
+Then('true {tobe} true', function (predicate) {
+ expect(predicate).to.be.true
+})
+
+Then('false {tobe} true', function (predicate) {
+ expect(predicate).to.be.false
+})
+
+defineParameterType({
+ name: 'date',
+ regexp: /\d{2}\.\d{2}\.\d{4}/
+})
+
+When('a date {date} is given', function (dateString) {
+ const parts = dateString.split('.').reverse()
+ this.date = new Date(...parts)
+})
+
+Then('it gets converted to a Date object', function () {
+ expect(this.date).to.be.an.instanceof(Date)
+})
+
+Before(function () {
+ this.count = 0
+})
+
+Given(/(a regular expression|it) matches (this|that) pattern/, function (_, _) {
+ ++this.count
+})
+
+Then('the step definition should be called twice', function () {
+ expect(this.count).to.equal(2)
+})