# -*- coding: utf-8 -*-
require "test_helper"

class SablonTest < Sablon::TestCase
  include Sablon::Test::Assertions

  def setup
    super
    @base_path = Pathname.new(File.expand_path("../", __FILE__))
    @output_path = @base_path + "sandbox/sablon.docx"
  end

  def test_generate_document_from_template
    template = Sablon.template(@base_path + "fixtures/sablon_template.docx")
    person = OpenStruct.new "first_name" => "Ronald", "last_name" => "Anderson", "address" => {"street" => "Panda Bay 4A"}
    item = Struct.new(:index, :label, :rating)
    position = Struct.new(:duration, :label, :description)
    language = Struct.new(:name, :skill)
    context = {
      current_time: Time.now.strftime("%d.%m.%Y %H:%M"),
      author: "Yves Senn",
      title: "Letter of application",
      person: person,
      items: [item.new("1.", "Ruby", "★" * 5), item.new("2.", "Java", "★" * 1), item.new("3.", "Python", "★" * 3)],
      career: [position.new("1999 - 2006", "Junior Java Engineer", "Lorem ipsum dolor\nsit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."),
               position.new("2006 - 2013", "Senior Ruby Developer", "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo."),
               position.new("2013 - today", "Sales...", nil)],
      technologies: ["HTML", "CSS", "SASS", "LESS", "JavaScript"],
      languages: [language.new("German", "native speaker"), language.new("English", "fluent")],
      training: "At vero eos et accusam et justo duo dolores et ea rebum.\n\nStet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
    }
    properties = {
      start_page_number: 7
    }
    template.render_to_file @output_path, context, properties

    assert_docx_equal @base_path + "fixtures/sablon_sample.docx", @output_path
  end
end