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);
});
});