Sha256: 371e25a0d98173da4c4a067f41952013a67ffa5223d9e68ea46f514e49439f99

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

require_relative './spec_helper.rb'

def test_content
  content = <<EOF
---
title: Test!
---

I'm testing things
EOF
end

describe 'nested_menu', fakefs:true do

  def setup_page(*args)
    dir, file = args
    dir, file = ['', dir] if file.nil?
    @page = Page.new(@site, source_dir, dir, file)
  end

  let(:page) { '{% nested_menu files %}' }

  before(:all) do
    FakeFS.activate!
    @site = Jekyll::Site.new(Jekyll.configuration({
      "source" => source_dir,
      "destination" => dest_dir,
      "skip_config_files" => true
    }))

    [
      'files/one',
      'files/two',
      'files/three',
      'files/one/a',
      'files/one/b',
      'content',
      'images'
    ].each do |dir|
      FileUtils.mkdir_p(File.join(source_dir, dir)) if not File.directory? File.join(source_dir, dir)
      File.open(File.join(source_dir, dir, 'index.md'), 'w') { |f| f << test_content }
      @site.pages << Jekyll::Page.new(@site, source_dir, dir, 'index.md')
    end
  end

  after(:all) do
    FakeFS.deactivate!
  end

  it 'Yields a nested menu of items in the specified folder' do
    t = Liquid::Template.parse(page)
    o = t.render!({'site' => {
        'pages' => @site.pages,
        'data' => {}
      }})

    o_obj = Nokogiri::XML.parse(o)
   
    expect(o_obj.xpath('/ul')).not_to be_empty
    expect(o_obj.xpath('/ul/li[1]/a[.="Test!"][@href="/files/one/"]')).not_to be_empty
    expect(o_obj.xpath('/ul/li[2]/a[.="Test!"][@href="/files/two/"]')).not_to be_empty
    expect(o_obj.xpath('/ul/li[3]/a[.="Test!"][@href="/files/three/"]')).not_to be_empty
    expect(o_obj.xpath('/ul/li[1]/ul/li[1]/a[.="Test!"][@href="/files/one/a/"]')).not_to be_empty
    expect(o_obj.xpath('/ul/li[1]/ul/li[2]/a[.="Test!"][@href="/files/one/b/"]')).not_to be_empty
    expect(o_obj.xpath('//a[@href="/content/"]')).to be_empty
    expect(o_obj.xpath('//a[@href="/images/"]')).to be_empty

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jekyll-nested-menu-generator-1.0.1 spec/nested_menu_spec.rb