summaryrefslogtreecommitdiff
path: root/data-tables/features
diff options
context:
space:
mode:
Diffstat (limited to 'data-tables/features')
-rw-r--r--data-tables/features/json.feature69
-rw-r--r--data-tables/features/steps/json.js50
2 files changed, 119 insertions, 0 deletions
diff --git a/data-tables/features/json.feature b/data-tables/features/json.feature
new file mode 100644
index 0000000..176efc6
--- /dev/null
+++ b/data-tables/features/json.feature
@@ -0,0 +1,69 @@
+Feature:
+ As the owner of a book collection
+ I want to be able to generate JSON containing titles from this collection
+
+ Scenario:
+ Given the following books by Simon Frank are in the collection:
+ | id | title |
+ | 1 | Der Gegenstand des Wissens |
+ | 2 | Lebendiges Wissen |
+ When I stringify it
+ Then I should get:
+ """
+ [{
+ "id": 1,
+ "title": "Der Gegenstand des Wissens"
+ },{
+ "id": 2,
+ "title": "Lebendiges Wissen"
+ }]
+ """
+
+ Given the following books by Søren Kierkegaard are in the collection:
+ | id | title |
+ | 1 | Die Krankheit zum Tode |
+ | 2 | Entweder-Oder |
+ When I stringify it
+ Then I should get:
+ """
+ [{
+ "id": 1,
+ "title": "Die Krankheit zum Tode"
+ },{
+ "id": 2,
+ "title": "Entweder-Oder"
+ }]
+ """
+
+ Given the following book is in the collection:
+ | id | 1 |
+ | title | Leonce und Lena |
+ | author | Georg Büchner |
+ When I stringify it
+ Then I should get:
+ """
+ {
+ "id": 1,
+ "title": "Leonce und Lena",
+ "author": "Georg Büchner"
+ }
+ """
+
+ Given the following books are in the collection:
+ | Friedrich Nietzsche | Die Geburt der Tragödie |
+ | Jacques Derrida | Die unbedingte Universität |
+ | Honoré de Balzac | Die Frau von 30 Jahren |
+ When I stringify it
+ Then I should get:
+ """
+ [{
+ "author": "Friedrich Nietzsche",
+ "title": "Die Geburt der Tragödie"
+ },{
+ "author": "Jacques Derrida",
+ "title": "Die unbedingte Universität"
+ },{
+ "author": "Honoré de Balzac",
+ "title": "Die Frau von 30 Jahren"
+ }]
+ """
diff --git a/data-tables/features/steps/json.js b/data-tables/features/steps/json.js
new file mode 100644
index 0000000..cd61a8b
--- /dev/null
+++ b/data-tables/features/steps/json.js
@@ -0,0 +1,50 @@
+import { Given, When, Then } from 'cucumber'
+import { expect } from 'chai'
+
+Given('the following books by Simon Frank are in the collection:', function (dataTable) {
+ this.objects = []
+ dataTable.hashes().forEach(el => {
+ this.objects.push({
+ id: parseInt(el.id),
+ title: el.title
+ })
+ })
+})
+
+Given('the following books by Søren Kierkegaard are in the collection:', function (dataTable) {
+ this.objects = []
+ dataTable.rows().forEach(el => {
+ this.objects.push({
+ id: parseInt(el[0]),
+ title: el[1]
+ })
+ })
+})
+
+Given('the following book is in the collection:', function (dataTable) {
+ const data = dataTable.rowsHash()
+ this.objects = {
+ id: parseInt(data.id),
+ title: data.title,
+ author: data.author
+ }
+})
+
+Given('the following books are in the collection:', function (dataTable) {
+ this.objects = []
+ dataTable.raw().forEach(el => {
+ this.objects.push({
+ author: el[0],
+ title: el[1]
+ })
+ })
+})
+
+When('I stringify it', function () {
+ this.result = JSON.stringify(this.objects)
+})
+
+Then('I should get:', function (expected) {
+ expect(JSON.parse(expected))
+ .to.deep.equal(JSON.parse(this.result))
+})