require "../../spec_helper.cr"

MockLines = [
  {
    "start_time": Time::Span.new(seconds: 1),
    "end_time":   Time::Span.new(seconds: 2),
    "text":       "Line 1",
  },

  {
    "start_time": Time::Span.new(seconds: 2),
    "end_time":   Time::Span.new(seconds: 3),
    "text":       "Line 2",
  },
]

Spectator.describe "WebVTT::Builder" do
  it "correctly builds a vtt file" do
    result = WebVTT.build do |vtt|
      MockLines.each do |line|
        vtt.cue(line["start_time"], line["end_time"], line["text"])
      end
    end

    expect(result).to eq([
      "WEBVTT",
      "",
      "00:00:01.000 --> 00:00:02.000",
      "Line 1",
      "",
      "00:00:02.000 --> 00:00:03.000",
      "Line 2",
      "",
      "",
    ].join('\n'))
  end

  it "correctly builds a vtt file with setting fields" do
    setting_fields = {
      "Kind"     => "captions",
      "Language" => "en",
    }

    result = WebVTT.build(setting_fields) do |vtt|
      MockLines.each do |line|
        vtt.cue(line["start_time"], line["end_time"], line["text"])
      end
    end

    expect(result).to eq([
      "WEBVTT",
      "Kind: captions",
      "Language: en",
      "",
      "00:00:01.000 --> 00:00:02.000",
      "Line 1",
      "",
      "00:00:02.000 --> 00:00:03.000",
      "Line 2",
      "",
      "",
    ].join('\n'))
  end
end