120 lines
4.3 KiB
Gherkin
120 lines
4.3 KiB
Gherkin
|
Feature: Data
|
||
|
In order to use well-formatted data in my blog
|
||
|
As a blog's user
|
||
|
I want to use _data directory in my site
|
||
|
|
||
|
Scenario: autoload *.yaml files in _data directory
|
||
|
Given I have a _data directory
|
||
|
And I have a "_data/products.yaml" file with content:
|
||
|
"""
|
||
|
- name: sugar
|
||
|
price: 5.3
|
||
|
- name: salt
|
||
|
price: 2.5
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{% for product in site.data.products %}{{product.name}}{% endfor %}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "sugar" in "_site/index.html"
|
||
|
And I should see "salt" in "_site/index.html"
|
||
|
|
||
|
Scenario: autoload *.yml files in _data directory
|
||
|
Given I have a _data directory
|
||
|
And I have a "_data/members.yml" file with content:
|
||
|
"""
|
||
|
- name: Jack
|
||
|
age: 28
|
||
|
- name: Leon
|
||
|
age: 34
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{% for member in site.data.members %}{{member.name}}{% endfor %}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "Jack" in "_site/index.html"
|
||
|
And I should see "Leon" in "_site/index.html"
|
||
|
|
||
|
Scenario: autoload *.json files in _data directory
|
||
|
Given I have a _data directory
|
||
|
And I have a "_data/members.json" file with content:
|
||
|
"""
|
||
|
[{"name": "Jack", "age": 28},{"name": "Leon", "age": 34}]
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{% for member in site.data.members %}{{member.name}}{% endfor %}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "Jack" in "_site/index.html"
|
||
|
And I should see "Leon" in "_site/index.html"
|
||
|
|
||
|
Scenario: autoload *.csv files in _data directory
|
||
|
Given I have a _data directory
|
||
|
And I have a "_data/members.csv" file with content:
|
||
|
"""
|
||
|
name,age
|
||
|
Jack,28
|
||
|
Leon,34
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{% for member in site.data.members %}{{member.name}}{% endfor %}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "Jack" in "_site/index.html"
|
||
|
And I should see "Leon" in "_site/index.html"
|
||
|
|
||
|
Scenario: autoload *.yml files in _data directory with space in file name
|
||
|
Given I have a _data directory
|
||
|
And I have a "_data/team members.yml" file with content:
|
||
|
"""
|
||
|
- name: Jack
|
||
|
age: 28
|
||
|
- name: Leon
|
||
|
age: 34
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{% for member in site.data.team_members %}{{member.name}}{% endfor %}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "Jack" in "_site/index.html"
|
||
|
And I should see "Leon" in "_site/index.html"
|
||
|
|
||
|
Scenario: autoload *.yaml files in subdirectories in _data directory
|
||
|
Given I have a _data directory
|
||
|
And I have a _data/categories directory
|
||
|
And I have a "_data/categories/dairy.yaml" file with content:
|
||
|
"""
|
||
|
name: Dairy Products
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{{ site.data.categories.dairy.name }}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "Dairy Products" in "_site/index.html"
|
||
|
|
||
|
Scenario: folders should have precedence over files with the same name
|
||
|
Given I have a _data directory
|
||
|
And I have a _data/categories directory
|
||
|
And I have a "_data/categories/dairy.yaml" file with content:
|
||
|
"""
|
||
|
name: Dairy Products
|
||
|
"""
|
||
|
And I have a "_data/categories.yaml" file with content:
|
||
|
"""
|
||
|
dairy:
|
||
|
name: Should not display this
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{{ site.data.categories.dairy.name }}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "Dairy Products" in "_site/index.html"
|
||
|
|
||
|
Scenario: should be backward compatible with site.data in _config.yml
|
||
|
Given I have a "_config.yml" file with content:
|
||
|
"""
|
||
|
data:
|
||
|
- name: Jack
|
||
|
age: 28
|
||
|
- name: Leon
|
||
|
age: 34
|
||
|
"""
|
||
|
And I have an "index.html" page that contains "{% for member in site.data %}{{member.name}}{% endfor %}"
|
||
|
When I run jekyll build
|
||
|
Then the "_site/index.html" file should exist
|
||
|
And I should see "Jack" in "_site/index.html"
|
||
|
And I should see "Leon" in "_site/index.html"
|