require_relative "test_helper" module IOStreams class PathTest < Minitest::Test describe IOStreams do describe ".root" do it "return default path" do path = ::File.expand_path(::File.join(__dir__, "../tmp/default")) assert_equal path, IOStreams.root.to_s end it "return downloads path" do path = ::File.expand_path(::File.join(__dir__, "../tmp/downloads")) assert_equal path, IOStreams.root(:downloads).to_s end end describe ".join" do it "returns path" do assert_equal IOStreams.root.to_s, IOStreams.join.to_s end it "adds path to root" do assert_equal ::File.join(IOStreams.root.to_s, "test"), IOStreams.join("test").to_s end it "adds paths to root" do assert_equal ::File.join(IOStreams.root.to_s, "test", "second", "third"), IOStreams.join("test", "second", "third").to_s end it "returns path and filename" do path = ::File.join(IOStreams.root.to_s, "file.xls") assert_equal path, IOStreams.join("file.xls").to_s end it "adds path to root and filename" do path = ::File.join(IOStreams.root.to_s, "test", "file.xls") assert_equal path, IOStreams.join("test", "file.xls").to_s end it "adds paths to root" do path = ::File.join(IOStreams.root.to_s, "test", "second", "third", "file.xls") assert_equal path, IOStreams.join("test", "second", "third", "file.xls").to_s end it "return path as sent in when full path" do path = ::File.join(IOStreams.root.to_s, "file.xls") assert_equal path, IOStreams.join(path).to_s end end describe ".path" do it "default" do path = IOStreams.path("a.xyz") assert path.is_a?(IOStreams::Paths::File), path end it "s3" do skip "TODO" IOStreams.path("s3://a.xyz") assert_equal :s3, path end end describe ".temp_file" do it "returns value from block" do result = IOStreams.temp_file("base", ".ext") { |_path| 257 } assert_equal 257, result end it "supplies new temp file_name" do path1 = nil path2 = nil IOStreams.temp_file("base", ".ext") { |path| path1 = path } IOStreams.temp_file("base", ".ext") { |path| path2 = path } refute_equal path1.to_s, path2.to_s assert path1.is_a?(IOStreams::Paths::File), path1 assert path2.is_a?(IOStreams::Paths::File), path2 end end end end end