# -*- encoding: utf-8 -*- require './spec/helper' describe Compiler do before :all do @project = ProjectCreator.new('spec/project-name', 'html_5', false) @project.create @compiler = Compiler.new File.expand_path('spec/project-name') end after :all do clean_test_repository end def write_file name, content File.open(File.join('spec/project-name', name), "w") do |file| file.puts content end end it "should build an index.html page in www" do @compiler.compile File.exist?('spec/project-name/www/index.html').should be_true end it "should build two pages" do write_file 'pages/doc.html', '<h1>documentation</h1>' @compiler.compile File.exist?('spec/project-name/www/index.html').should be_true File.exist?('spec/project-name/www/doc.html').should be_true end it "should copy the styles/ into www/" do File.exist?('spec/project-name/www/styles/screen.css').should be_true end it "should set the menu in index page" do @compiler.compile doc = Nokogiri::HTML(File.open("spec/project-name/www/index.html")) doc.at_css("ul#menu a#selected")['href'].should == 'index.html' end it "should take care of the hidden project file" do compiler = Compiler.new File.expand_path('.') $stdout.should_receive(:puts).with("Not a genit project folder") compiler.compile end describe "RSS feed" do it "should build the rss.xml file" do File.exist?('spec/project-name/www/rss.xml').should be_true end end describe "BUGS" do it "should allow template to include a fragment (Bug#37)" do # add a fragment File.open('spec/project-name/fragments/footer.html', "w") {|out| out.puts '<p>footer</p>' } # replace main.html main = %q{ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Genit - Static web site framework</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" type="text/css" media="all" href="styles/alsa/all.css" /> <link rel="stylesheet" type="text/css" media="screen" href="styles/screen.css" /> <link rel="stylesheet" type="text/css" media="print" href="styles/print.css" /> </head> <body> <genit class="menu" /> <genit class="pages" /> <genit class="fragment" file="footer.html"/> </body> </html>} File.open('spec/project-name/templates/main.html', "w") {|out| out.puts main } lambda {@compiler.compile}.should_not raise_error end end end