summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/invidious/search/yt_filters_spec.cr51
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/invidious/search/yt_filters_spec.cr b/spec/invidious/search/yt_filters_spec.cr
index 27357058..bf7f21e7 100644
--- a/spec/invidious/search/yt_filters_spec.cr
+++ b/spec/invidious/search/yt_filters_spec.cr
@@ -89,4 +89,55 @@ Spectator.describe Invidious::Search::Filters do
end
end
end
+
+ # -------------------
+ # Decode YT params
+ # -------------------
+
+ describe "#from_yt_params" do
+ sample DATE_FILTERS do |value, encoded|
+ it "Decodes upload date filter '#{value}'" do
+ params = HTTP::Params.parse("sp=#{encoded}")
+
+ expect(described_class.from_yt_params(params))
+ .to eq(described_class.new(date: value))
+ end
+ end
+
+ sample TYPE_FILTERS do |value, encoded|
+ it "Decodes content type filter '#{value}'" do
+ params = HTTP::Params.parse("sp=#{encoded}")
+
+ expect(described_class.from_yt_params(params))
+ .to eq(described_class.new(type: value))
+ end
+ end
+
+ sample DURATION_FILTERS do |value, encoded|
+ it "Decodes duration filter '#{value}'" do
+ params = HTTP::Params.parse("sp=#{encoded}")
+
+ expect(described_class.from_yt_params(params))
+ .to eq(described_class.new(duration: value))
+ end
+ end
+
+ sample FEATURE_FILTERS do |value, encoded|
+ it "Decodes feature filter '#{value}'" do
+ params = HTTP::Params.parse("sp=#{encoded}")
+
+ expect(described_class.from_yt_params(params))
+ .to eq(described_class.new(features: value))
+ end
+ end
+
+ sample SORT_FILTERS do |value, encoded|
+ it "Decodes sort filter '#{value}'" do
+ params = HTTP::Params.parse("sp=#{encoded}")
+
+ expect(described_class.from_yt_params(params))
+ .to eq(described_class.new(sort: value))
+ end
+ end
+ end
end