import { renderComponent as render } from "./makeInlineComponent"; import { defaultOptions } from "../../options"; describe("stateless attribute", ()=> { it("works correctly", ()=>{ const template = "Hello {props.name}"; const props = {name: "Nino"}; const rendered = render(template, props); const expected = "
Hello Nino
"; expect(rendered).toEqual(expected); }); xit("can be placed only on the root node", ()=>{ }); }); describe("custom brackets", ()=> { it("is rendered correctly", ()=>{ let options = defaultOptions(); options.brackets = "{% %}"; const rendered = render("Hello {% props.name %}", {name: "Nino"}, options); const expected = "
Hello Nino
"; expect(rendered).toEqual(expected); }); }); describe("default brackets", ()=> { it("is rendered correctly", ()=>{ const template = "Hello {props.name}"; const props = {name: "Nino"}; const rendered = render(template, props); const expected = "
Hello Nino
"; expect(rendered).toEqual(expected); }); }); describe("CLI option --normalize-html-whitespace", ()=> { it("does trim spaces when turned on", ()=>{ const template = "\n Hello \n {props.name} "; const props = {name: "Nino"}; const rendered = render(template, props); const expected = "
Hello Nino
"; expect(rendered).toEqual(expected); }); it("does not trim when turned off", ()=>{ const options = defaultOptions(); options.normalizeHtmlWhitespace = false; const template = "\n Hello \n {props.name} "; const props = {name: "Nino"}; const rendered = render(template, props, options); const expected = "
\n Hello \n Nino
"; expect(rendered).toEqual(expected); }); }); describe("scope attribute", ()=> { it("works correctly", ()=>{ const template = 'Hello {name}'; const props = {name: "Nino"}; const rendered = render(template, props); const expected = "
Hello Nino
"; expect(rendered).toEqual(expected); }); }); describe("naming convention", ()=> { it("retains kebab-cased named components", ()=>{ const template = `
this is div
this is my-div
`; const props = {name: "Nino"}; const rendered = render(template, props); const expected = `
this is div
this is my-div
`; expect(rendered).toEqual(expected); }); it("forbids kebab-cased names in tag definition", ()=>{ const template = `Hello`; const props = {name: "Nino"}; const rendered = ()=>render(template, props); ; expect(rendered).toThrow("invalid tag name 'example-tag' for definition"); }); }); describe("yield", ()=> { it("yields in a stateless component", ()=>{ const template = ""; const props = {children: "this was yield"}; const rendered = render(template, props); const expected = "
this was yield
"; expect(rendered).toEqual(expected); }); xit("yields in a stateful component", ()=>{ const template = ""; const props = {children: "Nino"}; const rendered = render(template, props); const expected = "
Nino
"; expect(rendered).toEqual(expected); }); });