summaryrefslogtreecommitdiffstats
path: root/spec/helpers/vtt
diff options
context:
space:
mode:
authorCaian Benedicto <caianbene@gmail.com>2024-12-13 18:29:28 -0300
committerCaian Benedicto <caianbene@gmail.com>2024-12-13 20:26:52 -0300
commitd7f5cdc2f971af524c496aaeb25226eb9f8236df (patch)
tree1e69d1088ee67407b1058f490cc188cd1dd4e287 /spec/helpers/vtt
parent78773d732672d8985795fb040a39dd7e946c7b7c (diff)
parent98926047586154269bb269d01e3e52e60e044035 (diff)
downloadinvidious-d7f5cdc2f971af524c496aaeb25226eb9f8236df.tar.gz
invidious-d7f5cdc2f971af524c496aaeb25226eb9f8236df.tar.bz2
invidious-d7f5cdc2f971af524c496aaeb25226eb9f8236df.zip
Merge branch 'master' into unix-sockets
Diffstat (limited to 'spec/helpers/vtt')
-rw-r--r--spec/helpers/vtt/builder_spec.cr87
1 files changed, 87 insertions, 0 deletions
diff --git a/spec/helpers/vtt/builder_spec.cr b/spec/helpers/vtt/builder_spec.cr
new file mode 100644
index 00000000..dc1f4613
--- /dev/null
+++ b/spec/helpers/vtt/builder_spec.cr
@@ -0,0 +1,87 @@
+require "../../spec_helper.cr"
+
+MockLines = ["Line 1", "Line 2"]
+MockLinesWithEscapableCharacter = ["<Line 1>", "&Line 2>", '\u200E' + "Line\u200F 3", "\u00A0Line 4"]
+
+Spectator.describe "WebVTT::Builder" do
+ it "correctly builds a vtt file" do
+ result = WebVTT.build do |vtt|
+ 2.times do |i|
+ vtt.cue(
+ Time::Span.new(seconds: i),
+ Time::Span.new(seconds: i + 1),
+ MockLines[i]
+ )
+ end
+ end
+
+ expect(result).to eq([
+ "WEBVTT",
+ "",
+ "00:00:00.000 --> 00:00:01.000",
+ "Line 1",
+ "",
+ "00:00:01.000 --> 00:00:02.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|
+ 2.times do |i|
+ vtt.cue(
+ Time::Span.new(seconds: i),
+ Time::Span.new(seconds: i + 1),
+ MockLines[i]
+ )
+ end
+ end
+
+ expect(result).to eq([
+ "WEBVTT",
+ "Kind: captions",
+ "Language: en",
+ "",
+ "00:00:00.000 --> 00:00:01.000",
+ "Line 1",
+ "",
+ "00:00:01.000 --> 00:00:02.000",
+ "Line 2",
+ "",
+ "",
+ ].join('\n'))
+ end
+
+ it "properly escapes characters" do
+ result = WebVTT.build do |vtt|
+ 4.times do |i|
+ vtt.cue(Time::Span.new(seconds: i), Time::Span.new(seconds: i + 1), MockLinesWithEscapableCharacter[i])
+ end
+ end
+
+ expect(result).to eq([
+ "WEBVTT",
+ "",
+ "00:00:00.000 --> 00:00:01.000",
+ "&lt;Line 1&gt;",
+ "",
+ "00:00:01.000 --> 00:00:02.000",
+ "&amp;Line 2&gt;",
+ "",
+ "00:00:02.000 --> 00:00:03.000",
+ "&lrm;Line&rlm; 3",
+ "",
+ "00:00:03.000 --> 00:00:04.000",
+ "&nbsp;Line 4",
+ "",
+ "",
+ ].join('\n'))
+ end
+end