require "spec_helper" require "metanorma" require "fileutils" #RSpec.describe Asciidoctor::Gb do RSpec.describe Metanorma::Iec::Processor do registry = Metanorma::Registry.instance registry.register(Metanorma::Iec::Processor) processor = registry.find_processor(:iec) it "registers against metanorma" do expect(processor).not_to be nil end it "registers output formats against metanorma" do expect(processor.output_formats.sort.to_s).to be_equivalent_to <<~"OUTPUT" [[:doc, "doc"], [:html, "html"], [:pdf, "pdf"], [:presentation, "presentation.xml"], [:rxl, "rxl"], [:xml, "xml"]] OUTPUT end it "registers version against metanorma" do expect(processor.version.to_s).to match(%r{^Metanorma::Iec }) end it "generates IsoDoc XML from a blank document" do expect(xmlpp(strip_guid(processor.input_to_isodoc(<<~"INPUT", nil)))).to be_equivalent_to xmlpp(<<~"OUTPUT") #{ASCIIDOC_BLANK_HDR} INPUT #{BLANK_HDR} <sections/> </iec-standard> OUTPUT end it "generates HTML from IsoDoc XML" do FileUtils.rm_f "test.xml" processor.output(<<~"INPUT", "test.xml", "test.html", :html) <iec-standard xmlns="http://riboseinc.com/isoxml"> <sections> <terms id="H" obligation="normative"><title>1<tab/>Terms, Definitions, Symbols and Abbreviated Terms</title> <term id="J"> <name>1.1</name> <preferred>Term2</preferred> </term> </terms> </sections> </iec-standard> INPUT expect(xmlpp(File.read("test.html", encoding: "utf-8").gsub(%r{^.*<main}m, "<main").gsub(%r{</main>.*}m, "</main>"))).to be_equivalent_to xmlpp(<<~"OUTPUT") <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button> <br /> <p class="zzSTDTitle1">INTERNATIONAL ELECTROTECHNICAL COMMISSION</p> <p class="zzSTDTitle1">____________</p> <p class="zzSTDTitle1"> </p> <p class="zzSTDTitle1"> <b></b> </p> <p class="zzSTDTitle1"> </p> <div id=""> <h1 class="ForewordTitle" id="toc0">FOREWORD</h1> <div class="boilerplate_legal"></div> </div> <p class="zzSTDTitle1"> <b></b> </p> <p class="zzSTDTitle1"> </p> <div id="H"><h1 id="toc1">1  Terms, Definitions, Symbols and Abbreviated Terms</h1> <h2 class="TermNum" id="J">1.1</h2> <p class="Terms" style="text-align:left;">Term2</p> </div> </main> OUTPUT end end