File: test_theme_data_reader.rb

package info (click to toggle)
jekyll 4.4.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,488 kB
  • sloc: ruby: 16,736; javascript: 1,455; sh: 216; xml: 29; makefile: 9
file content (90 lines) | stat: -rw-r--r-- 3,042 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# frozen_string_literal: true

require "helper"

class TestThemeDataReader < JekyllUnitTest
  context "site without a theme" do
    setup do
      @site = fixture_site("theme" => nil)
      @site.reader.read_data
      assert @site.data["greetings"]
      assert @site.data["categories"]["dairy"]
    end

    should "should read data from source" do
      assert_equal "Hello! I’m foo. And who are you?", @site.data["greetings"]["foo"]
      assert_equal "Dairy", @site.data["categories"]["dairy"]["name"]
    end
  end

  context "site with a theme without _data" do
    setup do
      @site = fixture_site("theme" => "test-theme-skinny")
      @site.reader.read_data
      assert @site.data["greetings"]
      assert @site.data["categories"]["dairy"]
    end

    should "should read data from source" do
      assert_equal "Hello! I’m foo. And who are you?", @site.data["greetings"]["foo"]
      assert_equal "Dairy", @site.data["categories"]["dairy"]["name"]
    end
  end

  context "site with a theme with empty _data directory" do
    setup do
      @site = fixture_site("theme" => "test-theme-w-empty-data")
      @site.reader.read_data
      assert @site.data["greetings"]
      assert @site.data["categories"]["dairy"]
    end

    should "should read data from source" do
      assert_equal "Hello! I’m foo. And who are you?", @site.data["greetings"]["foo"]
      assert_equal "Dairy", @site.data["categories"]["dairy"]["name"]
    end
  end

  context "site with a theme with data at root of _data" do
    setup do
      @site = fixture_site("theme" => "test-theme")
      @site.reader.read_data
      assert @site.data["greetings"]
      assert @site.data["categories"]["dairy"]
      assert @site.data["cars"]
    end

    should "should merge nested keys" do
      refute_equal "Hello! I’m bar. What’s up so far?", @site.data["greetings"]["foo"]
      assert_equal "Hello! I’m foo. And who are you?", @site.data["greetings"]["foo"]
      assert_equal "Mercedes", @site.data["cars"]["manufacturer"]
    end
  end

  context "site with a theme with data at root of _data and in a subdirectory" do
    setup do
      @site = fixture_site("theme" => "test-theme")
      @site.reader.read_data
      assert @site.data["greetings"]
      assert @site.data["categories"]["dairy"]
      assert @site.data["cars"]
    end

    should "should merge nested keys" do
      refute_equal "Cheese Dairy", @site.data["categories"]["dairy"]["name"]
      expected_names = %w(cheese milk)
      product_names  = @site.data["categories"]["dairy"]["products"].map do |product|
        product["name"]
      end
      expected_names.each do |expected_name|
        assert_includes product_names, expected_name
      end
      assert_equal "Dairy", @site.data["categories"]["dairy"]["name"]
    end

    should "should illustrate the documented sample" do
      assert_equal "Kundenstimmen", @site.data["i18n"]["testimonials"]["header"]
      assert_equal "Design by FTC", @site.data["i18n"]["testimonials"]["footer"]
    end
  end
end