Revision 82d495aa0cdbdcd7e199b640c9bc6ee0724cf2eb authored by jekyllbot on 26 February 2018, 09:53:04 UTC, committed by jekyllbot on 26 February 2018, 09:53:04 UTC
1 parent a9a77ee
Raw File
layout_data.feature
Feature: Layout data
  As a hacker who likes to avoid repetition
  I want to be able to embed data into my layouts
  In order to make the layouts slightly dynamic

  Scenario: Use custom layout data
    Given I have a _layouts directory
    And I have a "_layouts/999.html" file with content:
      """
      ---
      ---
      {{ content }} layout content
      """
    And I have an "index.html" page with layout "custom" that contains "page content"
    And I have an "index.html" file with content:
      """
      ---
      layout: 999
      ---
      page content
      """
    When I run jekyll build
    Then the "_site/index.html" file should exist
    And I should see "page content layout content" in "_site/index.html"

  Scenario: Use custom layout data
    Given I have a _layouts directory
    And I have a "_layouts/custom.html" file with content:
      """
      ---
      foo: my custom data
      ---
      {{ content }} foo: {{ layout.foo }}
      """
    And I have an "index.html" page with layout "custom" that contains "page content"
    When I run jekyll build
    Then the "_site/index.html" file should exist
    And I should see "page content\n foo: my custom data" in "_site/index.html"

  Scenario: Inherit custom layout data
    Given I have a _layouts directory
    And I have a "_layouts/custom.html" file with content:
      """
      ---
      layout: base
      foo: my custom data
      ---
      {{ content }}
      """
    And I have a "_layouts/base.html" file with content:
      """
      {{ content }} foo: {{ layout.foo }}
      """
    And I have an "index.html" page with layout "custom" that contains "page content"
    When I run jekyll build
    Then the "_site/index.html" file should exist
    And I should see "page content\n foo: my custom data" in "_site/index.html"

  Scenario: Inherit custom layout data and clear when not present
    Given I have a _layouts directory
    And I have a "_layouts/default.html" file with content:
      """
      ---
      bar: i'm default
      ---
      {{ content }} foo: '{{ layout.foo }}' bar: '{{ layout.bar }}'
      """
    And I have a "_layouts/special.html" file with content:
      """
      ---
      layout: default
      foo: my special data
      bar: im special
      ---
      {{ content }}
      """
    And I have a "_layouts/page.html" file with content:
      """
      ---
      layout: default
      bar: im page
      ---
      {{ content }}
      """
    And I have an "index.html" page with layout "special" that contains "page content"
    And I have an "jekyll.html" page with layout "page" that contains "page content"
    When I run jekyll build
    Then the "_site/index.html" file should exist
    And I should see "page content\n foo: 'my special data' bar: 'im special'" in "_site/index.html"
    And I should see "page content\n foo: '' bar: 'im page'" in "_site/jekyll.html"
back to top