/
application_spec.rb
47 lines (40 loc) · 1.34 KB
/
application_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# frozen_string_literal: true
require "spec_helper"
require "mock_application"
class JunkApp < Launchy::Application
def self.handles?(uri)
uri.scheme == "junk"
end
end
describe Launchy::Application do
it "registers inherited classes" do
# rubocop:disable Lint/ConstantDefinitionInBlock
class Junk2App < Launchy::Application
def self.handles?(uri)
uri.scheme == "junk2"
end
end
# rubocop:enable Lint/ConstantDefinitionInBlock
_(Launchy::Application.children).must_include(Junk2App)
Launchy::Application.children.delete(Junk2App)
end
it "can find an app" do
_(Launchy::Application.children).must_include(JunkApp)
_(Launchy::Application.children.size).must_equal 3
uri = Addressable::URI.parse("junk:///foo")
_(Launchy::Application.handling(uri)).must_equal(JunkApp)
end
it "raises an error if an application cannot be found for the given scheme" do
uri = Addressable::URI.parse("foo:///bar")
_(-> { Launchy::Application.handling(uri) }).must_raise(Launchy::ApplicationNotFoundError)
end
it "can find open or curl or xdg-open" do
found = %w[open curl xdg-open].any? do |app|
Launchy::Application.find_executable(app)
end
_(found).must_equal true
end
it "does not find xyzzy" do
_(Launchy::Application.find_executable("xyzzy")).must_be_nil
end
end