require "spec_helper" require "fileutils" RSpec.describe Asciidoctor::Standoc do it "has a version number" do expect(Metanorma::Standoc::VERSION).not_to be nil end it "processes a blank document" do expect(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)).to be_equivalent_to <<~"OUTPUT" #{ASCIIDOC_BLANK_HDR} INPUT #{BLANK_HDR} OUTPUT end it "converts a blank document" do FileUtils.rm_f "test.doc" expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT") = Document title Author :docfile: test.adoc :novalid: INPUT #{BLANK_HDR} OUTPUT expect(File.exist?("test.doc")).to be true expect(File.exist?("htmlstyle.css")).to be false end it "processes publisher abbreviations" do mock_org_abbrevs expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT") = Document title Author :docfile: test.adoc :nodoc: :novalid: :publisher: International Electrotechnical Commission;IETF;ISO INPUT Document title International Electrotechnical Commission IEC IETF International Standards Organization ISO International Electrotechnical Commission IEC IETF International Standards Organization ISO en published 2020 International Electrotechnical Commission IEC 2020 IETF 2020 International Standards Organization ISO article OUTPUT end it "processes default metadata" do expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT") = Document title Author :docfile: test.adoc :nodoc: :novalid: :docnumber: 1000 :partnumber: 1 :edition: 2 :revdate: 2000-01-01 :published-date: 1000-01-01 :accessed-date: 1001-01-01 :created-date: 1002-01-01 :implemented-date: 1003-01-01 :obsoleted-date: 1004-01-01 :confirmed-date: 1005-01-01 :updated-date: 1006-01-01 :issued-date: 1007-01-01 :circulated-date: 1008-01-01 :unchanged-date: 1009-01-01 :vote-started-date: 1011-01-01 :vote-ended-date: 1012-01-01 :date: Fred 1010-01-01 :date_2: Jack 1010-01-01 :draft: 3.4 :technical-committee: TC :technical-committee-number: 1 :technical-committee-type: A :subcommittee: SC :subcommittee-number: 2 :subcommittee-type: B :workgroup: WG :workgroup-number: 3 :workgroup-type: C :technical-committee_2: TC1 :technical-committee-number_2: 11 :technical-committee-type_2: A1 :subcommittee_2: SC1 :subcommittee-number_2: 21 :subcommittee-type_2: B1 :workgroup_2: WG1 :workgroup-number_2: 31 :workgroup-type_2: C1 :secretariat: SECRETARIAT :copyright-year: 2001 :docstage: 10 :docsubstage: 20 :iteration: 3 :language: en :title: Main Title -- Title :library-ics: 1,2,3 :fullname: Fred Flintstone :role: author :affiliation: Slate Rock and Gravel Company :affiliation_abbrev: SRG :affiliation_subdiv: Hermeneutics Unit; Exegetical Subunit :address: 6 Rubble Way, Bedrock :contributor-uri: http://slate.example.com :phone: 123 :fax: 456 :surname_2: Rubble :givenname_2: Barney :initials_2: B. X. :role_2: editor :affiliation_2: Rockhead and Quarry Cave Construction Company :affiliation_abbrev_2: RQCCC :affiliation_subdiv_2: Hermeneutics Unit; Exegetical Subunit :address_2: 6A Rubble Way, + \\ Bedrock :email_2: barney@rockhead.example.com :phone_2: 789 :fax_2: 012 :publisher: "Hanna Barbera"; "Cartoon Network"; "Ribose, Inc." :copyright-holder: "Ribose, Inc."; Hanna Barbera :part-of: ABC :translated-from: DEF,GHI;JKL MNO,PQR :keywords: a, b, c :pub-address: 1 Infinity Loop + \\ California :pub-phone: 3333333 :pub-fax: 4444444 :pub-email: x@example.com :pub-uri: http://www.example.com :isbn: ISBN-13 :isbn10: ISBN-10 INPUT Main Title — Title 1000-1 ISBN-13 ISBN-10 1000 1000-01-01 1001-01-01 1002-01-01 1003-01-01 1004-01-01 1005-01-01 1006-01-01 1007-01-01 1008-01-01 1009-01-01 1011-01-01 1012-01-01 1010-01-01 1010-01-01 Hanna Barbera Cartoon Network Ribose, Inc. Fred Flintstone Slate Rock and Gravel Company SRG Hermeneutics Unit Exegetical Subunit 6 Rubble Way, Bedrock 123 456 http://slate.example.com Barney B. X. Rubble Rockhead and Quarry Cave Construction Company RQCCC Hermeneutics Unit Exegetical Subunit 6A Rubble Way, Bedrock 789 012 barney@rockhead.example.com Hanna Barbera Cartoon Network Ribose, Inc. 2 2000-01-01 3.4 en 10 20 3 2001 Ribose, Inc. 2001 Hanna Barbera -- ABC GHI DEF PQR JKL MNO a b c article TC TC1 1 2 3 OUTPUT end it "processes complex metadata" do expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT") = Document title Author :docfile: test.adoc :nodoc: :novalid: :revdate: 2000-01 :published-date: 1000-01 :docnumber: 1000 :partnumber: 1-1 :tc-docnumber: 2000 :language: el :script: Grek :publisher: IEC;IETF;ISO :uri: A :xml-uri: B :html-uri: C :pdf-uri: D :doc-uri: E :relaton-uri: F :title-eo: Dokumenttitolo :doctype: This is a DocType :subdivision: Subdivision :subdivision-abbr: SD [abstract] == Abstract This is the abstract of the document This is the second paragraph of the abstract of the document. [language=en] == Clause 1 INPUT Document title Dokumenttitolo A B C D E F 1000-1-1 1000 1000-01 IEC IETF ISO IEC IETF ISO 2000-01 el This is the abstract of the document This is the second paragraph of the abstract of the document. published #{Date.today.year} IEC #{Date.today.year} IETF #{Date.today.year} ISO this-is-a-doctype Abstract This is the abstract of the document This is the second paragraph of the abstract of the document. Clause 1 OUTPUT end it "processes subdivisions" do mock_default_publisher expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT") = Document title Author :docfile: test.adoc :nodoc: :novalid: :revdate: 2000-01 :published-date: 1000-01 :docnumber: 1000 :partnumber: 1-1 :tc-docnumber: 2000 :language: el :script: Grek :subdivision: Subdivision :subdivision-abbr: SD :doctype: This is a DocType :pub-address: 1 Infinity Loop + \\ California :pub-phone: 3333333 :pub-fax: 4444444 :pub-email: x@example.com :pub-uri: http://www.example.com INPUT Document title 1000-1-1 1000 1000-01 International Standards Organization Subdivision SD 1 Infinity Loop California 3333333 4444444 x@example.com http://www.example.com International Standards Organization Subdivision SD 1 Infinity Loop California 3333333 4444444 x@example.com http://www.example.com 2000-01 el published 2020 International Standards Organization Subdivision SD 1 Infinity Loop California 3333333 4444444 x@example.com http://www.example.com this-is-a-doctype OUTPUT end it "reads scripts into blank HTML document" do FileUtils.rm_f "test.html" Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true) = Document title Author :docfile: test.adoc :novalid: :scripts: spec/assets/scripts.html INPUT html = File.read("test.html", encoding: "utf-8") expect(html).to match(%r{
1
2
3
This is the abstract of the document
This is the second paragraph of the abstract of the document.