summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorSamantaz Fox <coding@samantaz.fr>2022-03-03 23:29:13 +0100
committerSamantaz Fox <coding@samantaz.fr>2022-03-29 20:31:23 +0200
commit75c9dbaf6bec907f73c606be2a1710c9d3a68fc3 (patch)
tree49fb6f874e524c34bb24d74b47defc1db53267a8 /spec
parentc01a29fe76c78d403e80d1e9000046c45ac97a72 (diff)
downloadinvidious-75c9dbaf6bec907f73c606be2a1710c9d3a68fc3.tar.gz
invidious-75c9dbaf6bec907f73c606be2a1710c9d3a68fc3.tar.bz2
invidious-75c9dbaf6bec907f73c606be2a1710c9d3a68fc3.zip
Add a function to parse youtube search parameters
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