import React from "react";
import { assert } from "chai";
import loadEL from "../../node/el/loadEL";
import type * as std from "../../law/std";
import { DOCXLaw, HTMLLaw } from "./law";
import { renderToStaticMarkup } from "../common";
import { renderDocxAsync } from "../common/docx/file";
import ensureTempTestDir from "../../../test/ensureTempTestDir";
import path from "path";
import fs from "fs";
import formatXML from "../../util/formatXml";
import htmlCSS from "./htmlCSS";
import { promisify } from "util";
describe("Test HTML law", () => {
/* eslint-disable no-irregular-whitespace */
it("Success case", async () => {
const input = loadEL({
tag: "Law",
attr: {
Era: "Heisei",
Lang: "ja",
LawType: "Act",
Num: "88",
Year: "5",
},
children: [
{
tag: "LawNum",
attr: {},
children: ["平成五年法律第八十八号"],
},
{
tag: "LawBody",
attr: {},
children: [
{
tag: "LawTitle",
attr: {},
children: ["行政手続法"],
},
{
tag: "MainProvision",
attr: {},
children: [
{
tag: "Chapter",
attr: { Num: "1",
},
children: [
{
tag: "ChapterTitle",
attr: {},
children: ["第一章 総則"],
},
{
tag: "Article",
attr: { },
children: [
{
tag: "ArticleCaption",
attr: {},
children: ["(目的等)"],
},
{
tag: "ArticleTitle",
attr: {},
children: ["第一条"],
},
{
tag: "Paragraph",
attr: {},
children: [
{
tag: "ParagraphNum",
attr: {},
children: [],
},
{
tag: "ParagraphSentence",
attr: {},
children: [
{
tag: "Sentence",
attr: {},
children: ["この法律は、処分、行政指導及び届出に関する手続並びに命令等を定める手続に関し、共通する事項を定めることによって、行政運営における公正の確保と透明性(行政上の意思決定について、その内容及び過程が国民にとって明らかであることをいう。第四十六条において同じ。)の向上を図り、もって国民の権利利益の保護に資することを目的とする。"],
},
],
},
],
},
{
tag: "Paragraph",
attr: {},
children: [
{
tag: "ParagraphNum",
attr: {},
children: ["2"],
},
{
tag: "ParagraphSentence",
attr: {},
children: [
{
tag: "Sentence",
attr: {},
children: ["処分、行政指導及び届出に関する手続並びに命令等を定める手続に関しこの法律に規定する事項について、他の法律に特別の定めがある場合は、その定めるところによる。"],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
}) as std.Law;
const expectedHTML = /*html*/`\
行政手続法
(平成五年法律第八十八号)
第一章 総則
(目的等)
第一条
この法律は、処分、行政指導及び届出に関する手続並びに命令等を定める手続に関し、共通する事項を定めることによって、行政運営における公正の確保と透明性(行政上の意思決定について、その内容及び過程が国民にとって明らかであることをいう。第四十六条において同じ。)の向上を図り、もって国民の権利利益の保護に資することを目的とする。
2
処分、行政指導及び届出に関する手続並びに命令等を定める手続に関しこの法律に規定する事項について、他の法律に特別の定めがある場合は、その定めるところによる。
`;
const element = ;
const rendered = renderToStaticMarkup(element);
const formatted = formatXML(rendered, { collapseContent: true });
assert.strictEqual(
formatted,
expectedHTML,
);
const html = /*html*/`\
${rendered}
`;
const tempParsedHtml = path.join(ensureTempTestDir(), "renderer.law.html");
await promisify(fs.writeFile)(tempParsedHtml, html);
console.log(` Saved html: ${tempParsedHtml}`);
});
});
describe("Test DOCX law", () => {
/* eslint-disable no-irregular-whitespace */
it("Success case", async () => {
const input = loadEL({
tag: "Law",
attr: {
Era: "Heisei",
Lang: "ja",
LawType: "Act",
Num: "88",
Year: "5",
},
children: [
{
tag: "LawNum",
attr: {},
children: ["平成五年法律第八十八号"],
},
{
tag: "LawBody",
attr: {},
children: [
{
tag: "LawTitle",
attr: {},
children: ["行政手続法"],
},
{
tag: "MainProvision",
attr: {},
children: [
{
tag: "Chapter",
attr: { Num: "1",
},
children: [
{
tag: "ChapterTitle",
attr: {},
children: ["第一章 総則"],
},
{
tag: "Article",
attr: { },
children: [
{
tag: "ArticleCaption",
attr: {},
children: ["(目的等)"],
},
{
tag: "ArticleTitle",
attr: {},
children: ["第一条"],
},
{
tag: "Paragraph",
attr: {},
children: [
{
tag: "ParagraphNum",
attr: {},
children: [],
},
{
tag: "ParagraphSentence",
attr: {},
children: [
{
tag: "Sentence",
attr: {},
children: ["この法律は、処分、行政指導及び届出に関する手続並びに命令等を定める手続に関し、共通する事項を定めることによって、行政運営における公正の確保と透明性(行政上の意思決定について、その内容及び過程が国民にとって明らかであることをいう。第四十六条において同じ。)の向上を図り、もって国民の権利利益の保護に資することを目的とする。"],
},
],
},
],
},
{
tag: "Paragraph",
attr: {},
children: [
{
tag: "ParagraphNum",
attr: {},
children: ["2"],
},
{
tag: "ParagraphSentence",
attr: {},
children: [
{
tag: "Sentence",
attr: {},
children: ["処分、行政指導及び届出に関する手続並びに命令等を定める手続に関しこの法律に規定する事項について、他の法律に特別の定めがある場合は、その定めるところによる。"],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
}) as std.Law;
const expectedDOCX = /*xml*/`\
行政手続法
(
平成五年法律第八十八号
)
第一章 総則
(目的等)
第一条
この法律は、処分、行政指導及び届出に関する手続並びに命令等を定める手続に関し、共通する事項を定めることによって、行政運営における公正の確保と透明性(行政上の意思決定について、その内容及び過程が国民にとって明らかであることをいう。第四十六条において同じ。)の向上を図り、もって国民の権利利益の保護に資することを目的とする。
2
処分、行政指導及び届出に関する手続並びに命令等を定める手続に関しこの法律に規定する事項について、他の法律に特別の定めがある場合は、その定めるところによる。
`;
const element = ;
const rendered = renderToStaticMarkup(element);
const formatted = formatXML(rendered, { collapseContent: true });
assert.strictEqual(
formatted,
expectedDOCX,
);
const u8 = await renderDocxAsync(element);
const tempParsedDocx = path.join(ensureTempTestDir(), "renderer.law.docx");
fs.writeFileSync(tempParsedDocx, u8);
console.log(` Saved docx: ${tempParsedDocx}`);
});
});