{expect} = require "chai"

{Tags, SelfClosingTags} = require "../lib/tags.json"

TagBuilder = require "../lib/TagBuilder"

describe "TagBuilder", ->

  it "build", ->
    for tag in Tags
      builder = new TagBuilder()

      if tag in SelfClosingTags
        expect(builder.build tag).to.be.equal "<#{tag} />"
      else
        expect(builder.build tag).to.be.equal "<#{tag} > </#{tag}>"

  it "adds attributes", ->
    builder = new TagBuilder()

    tagName = "div"
    html = builder.build tagName, class: "table"

    expect(html).to.be.equal "<#{tagName} class=\"table\" > </#{tagName}>"

  it "sets text", ->
    builder = new TagBuilder()

    tagName = "div"
    html = builder.build tagName, "Hello World"

    expect(html).to.be.equal "<#{tagName} >Hello World </#{tagName}>"

  it "sets content", ->
    builder = new TagBuilder()

    tagName = "div"
    html = builder.build tagName, ->
      "Hello World"

    expect(html).to.be.equal "<#{tagName} >Hello World </#{tagName}>"

  it "does not allow text and content together", ->
    builder = new TagBuilder()

    tagName = "div"
    html = -> builder.build tagName, "Hello World", ->
      "Hello World"

    expect(html).to.be.throw Error
