require 'sinatra' require_relative '../lib/patricia/patricia' describe "Patricia::Wiki" do before(:all) do pwd = File.dirname(__FILE__) css_dir = File.join(pwd, 'assets/stylesheets/') js_dir = File.join(pwd, 'assets/javascripts/') css = Dir[css_dir + '/**/*.css'] .collect { |x| x.sub(/#{css_dir}/, '') } js = Dir[js_dir + '/**/*.js'].collect { |x| x.sub(/#{js_dir}/, '') } markup_dir = File.join(pwd, 'random-test-wiki') @output_dir = File.join(pwd, 'output') @patricia = Patricia::Wiki.new(markup_dir, :@output_dir => @output_dir, :css => css, :js => js) @patricia.render end describe "Rendering a markup dir to HTMl and writes it to an output \ directory containing static HTML files" do it "contains the correct output for a Markdown input file" do output = File.read(File.join(@output_dir, 'colors/blue/index.html')) expect(output).to include('c40445cd-f06a-461c-9008-9ca890d893d1') expect(output).to include('blue') expect(output).to include('id="toc"') expect(output).to include('id="content"') end it "contains the correct output for an Org input file" do output = File.read(File.join(@output_dir, 'colors/bright-orange/index.html')) expect(output).to include('37ed608c-7c67-4a48-99ae-d351b576269d') expect(output).to include('bright') expect(output).to include('orange') expect(output).to include('id="toc"') expect(output).to include('id="content"') end it "contains the correct output for an Textile input file" do output = File.read(File.join(@output_dir, 'colors/dark-yellow/index.html')) expect(output).to include('46dbe50e-be4a-42b9-8796-50ddf302ead0') expect(output).to include('yellow') expect(output).to include('id="toc"') expect(output).to include('id="content"') end it "contains the correct output for an reStructuredText input file" do output = File.read(File.join(@output_dir, 'colors/light-pink/index.html')) expect(output).to include('8c180fdb-6db8-404d-ba7c-0fe8487234a3') expect(output).to include('pink') expect(output).to include('id="toc"') expect(output).to include('id="content"') end it "confirms that there is a static file copied over to the output \ directory" do exists = File.exists?(File.join(@output_dir, 'colors/image.png')) expect(exists).to be(true) end end describe "Helpers" do describe "Patricia::Wiki#_css_tags" do it "link tag markup for a list of resource paths" do paths = [ 'javascripts/one.css', 'javascripts/two.css', 'javascripts/three.css', ] css_tags = @patricia._css_tags(paths) output = <<-CSSTAGS CSSTAGS expect(css_tags).to eq(output.gsub(/\n$/, '')) end end describe "Patricia::Wiki#_js_tags" do it "script tag markup for a list of resource paths" do paths = [ 'stylesheets/one.js', 'stylesheets/two.js', 'stylesheets/three.js', ] js_tags = @patricia._css_tags(paths) output = <<-JSTAGS JSTAGS expect(js_tags).to eq(output.gsub(/\n$/, '')) end end describe "Patricia::Wiki#_without_extension" do it "returns a file path without its extension" do output = @patricia._without_extension('/path/to/file.txt') expected_output = '/path/to/file' expect(output).to eq(expected_output) end end describe "Patricia::Wiki#_without_input_dir" do it "returns a path without the input markup directory" do subpath = '/subpath/to/file' path = File.join(@patricia.input_dir, subpath) output = @patricia._without_input_dir(path) expect(output).to eq(subpath) end end end end