require "reflexive/coderay_html_encoder" describe Reflexive::CodeRayHtmlEncoder do def encoder Reflexive::CodeRayHtmlEncoder.new(:wrap => :div, :css => :style) end it "emits links for :constant tokens" do encoder = Reflexive::CodeRayHtmlEncoder.new(:wrap => :div, :css => :style) encoder.encode_tokens([["Cons", :constant, {:constant_access=>{:name=>"Cons", :scope=>[]}}]]).should(include(" :div, :css => :style) encoder.encode_tokens([["Cons", :content, {:constant_access=>{:name=>"Cons", :scope=>[]}}]]).should(include("{:name=>"Cons", :scope=>["A", "B"]}}]] encoder.encode_tokens(tokens).should include("constant_lookup?name=Cons&scope=A%3A%3AB") end it "emits load_path links" do tokens = [["f", :content, { :load_path => true }]] encoder.encode_tokens(tokens).should include("?path=f") end it "emits class method links" do tokens = [ [ "m!", :ident, {:method_call=>{:name=>"m!", :receiver=>:class, :scope=>["A"]} } ] ] encoder.encode_tokens(tokens).should include("/constants/A/class_methods/m%21") end it "emits instance method links" do tokens = [ [ "m!", :ident, {:method_call=>{:name=>"m!", :receiver=>:instance, :scope => ["A"]} } ] ] encoder.encode_tokens(tokens).should include("/constants/A/instance_methods/m%21") end it "emits variable assignment id" do tokens = [ [ "a", :ident, {:local_variable_assignment=>"1:a"} ] ] encoder.encode_tokens(tokens).should include("span id='lv:1:a'") end it "emits variable access links" do tokens = [ [ "a", :ident, {:local_variable_access=>"1:a"} ] ] encoder.encode_tokens(tokens).should include("href='#lv:1:a'") end end