-
Notifications
You must be signed in to change notification settings - Fork 4
/
vim_dot_org_spec.rb
73 lines (47 loc) · 1.59 KB
/
vim_dot_org_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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
require 'spec_helper'
include Vimmer::Installers
describe "When installing from vim.org" do
VDO_NOT_FOUND_URL = "http://www.vim.org/scripts/script.php?script_id=0000"
VDO_MALFORMED_URL = "https://foo.com/bar"
RSpec::Matchers.define :be_a_valid_url do |expected|
match do
VimDotOrg.match?(expected) == true
end
end
context "with a non-existent URL" do
before do
VimDotOrg.stubs(:repository).returns({})
end
it { should be_a_valid_url(VDO_NOT_FOUND_URL) }
specify "the installer should raise an exception" do
lambda { VimDotOrg.for_url(VDO_NOT_FOUND_URL) }.should raise_error(Vimmer::PluginNotFoundError)
end
end
context "with a malformed URL" do
it { should_not be_a_valid_url(VDO_MALFORMED_URL) }
end
context "with a good URL" do
before do
VimDotOrg.stubs(:repository).returns({"2975" => "fugitive.vim"})
end
let(:installer) { VimDotOrg.for_url("http://www.vim.org/scripts/script.php?script_id=2975") }
context "using the vim-scripts mirror" do
it "should return a Github installer" do
installer.should be_a(Github)
end
it "uses the Github path" do
installer.path.should == "https://github.com/vim-scripts/fugitive.vim.git"
end
end
specify "the installer should not raise an exception" do
class << installer
def git_clone(arg1, arg2)
end
end
lambda { installer.install }.should_not raise_error
end
specify "the installer calculates the plugin's name" do
installer.plugin_name.should == "fugitive.vim"
end
end
end