@@ -6,27 +6,45 @@ defmodule Tzdata.DataLoaderTest do
66
77 setup :verify_on_exit!
88
9+ @ default_download_url "https://data.iana.org/time-zones/tzdata-latest.tar.gz"
10+
11+ @ config_download_url "https://data.iana.org/time-zones/tzdata2024a.tar.gz"
12+
13+ @ custom_download_url "https://data.iana.org/time-zones/tzdata2024b.tar.gz"
14+
915 setup do
1016 client = Application . get_env ( :tzdata , :http_client )
11- Application . put_env ( :tzdata , :http_client , Tzdata.HTTPClient.Mock )
1217
13- Application . put_env (
14- :tzdata ,
15- :download_url ,
16- "https://data.iana.org/time-zones/tzdata-latest.tar.gz"
17- )
18+ :ok = Application . put_env ( :tzdata , :http_client , Tzdata.HTTPClient.Mock )
1819
1920 on_exit ( fn ->
2021 Application . put_env ( :tzdata , :http_client , client )
2122 :ok
2223 end )
2324 end
2425
25- describe "download_new/1" do
26- test "when url not given, should download content from default url" do
27- expect ( Mock , :get , fn "https://data.iana.org/time-zones/tzdata-latest.tar.gz" ,
28- _ ,
29- [ follow_redirect: true ] ->
26+ describe "download_new/0" do
27+ test "when download_url config not set, should download content from default url" do
28+ expect ( Mock , :get , fn @ default_download_url , _ , [ follow_redirect: true ] ->
29+ { :ok ,
30+ { 200 , [ { "Last-Modified" , "Wed, 21 Oct 2015 07:28:00 GMT" } ] ,
31+ File . read! ( "test/tzdata_fixtures/tzdata2024a.tar.gz" ) } }
32+ end )
33+
34+ assert { :ok , 451_270 , "2024a" , _new_dir_name , "Wed, 21 Oct 2015 07:28:00 GMT" } =
35+ Tzdata.DataLoader . download_new ( )
36+ end
37+
38+ test "when download_url config set, should download content from given url" do
39+ download_url = Application . get_env ( :tzdata , :download_url )
40+ :ok = Application . put_env ( :tzdata , :download_url , @ config_download_url )
41+
42+ on_exit ( fn ->
43+ Application . put_env ( :tzdata , :download_url , download_url )
44+ :ok
45+ end )
46+
47+ expect ( Mock , :get , fn @ config_download_url , _ , [ follow_redirect: true ] ->
3048 { :ok ,
3149 { 200 , [ { "Last-Modified" , "Wed, 21 Oct 2015 07:28:00 GMT" } ] ,
3250 File . read! ( "test/tzdata_fixtures/tzdata2024a.tar.gz" ) } }
@@ -35,18 +53,18 @@ defmodule Tzdata.DataLoaderTest do
3553 assert { :ok , 451_270 , "2024a" , _new_dir_name , "Wed, 21 Oct 2015 07:28:00 GMT" } =
3654 Tzdata.DataLoader . download_new ( )
3755 end
56+ end
3857
39- test "when url given, should download content from given url" do
40- expect ( Mock , :get , fn "https://data.iana.org/time-zones/tzdata2024a.tar.gz" , _ , _ ->
58+ describe "download_new/1" do
59+ test "should download content from given url" do
60+ expect ( Mock , :get , fn @ custom_download_url , _ , _ ->
4161 { :ok ,
4262 { 200 , [ { "Last-Modified" , "Wed, 21 Oct 2015 07:28:00 GMT" } ] ,
4363 File . read! ( "test/tzdata_fixtures/tzdata2024a.tar.gz" ) } }
4464 end )
4565
4666 assert { :ok , 451_270 , "2024a" , _new_dir_name , "Wed, 21 Oct 2015 07:28:00 GMT" } =
47- Tzdata.DataLoader . download_new (
48- "https://data.iana.org/time-zones/tzdata2024a.tar.gz"
49- )
67+ Tzdata.DataLoader . download_new ( @ custom_download_url )
5068 end
5169 end
5270end
0 commit comments