forked from ManageIQ/depot.manageiq.org
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathextract_extension_version_worker_spec.rb
More file actions
executable file
·71 lines (58 loc) · 2.93 KB
/
Copy pathextract_extension_version_worker_spec.rb
File metadata and controls
executable file
·71 lines (58 loc) · 2.93 KB
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
require "spec_helper"
describe ExtractExtensionVersionWorker do
let(:extension_id) { 123 }
let(:tag) { "1.0" }
let(:compatible_platforms) { ["1", "2"] }
let(:extension) { double(:extension, id: extension_id, github_repo: "cvincent/test", extension_versions: versions, octokit: octokit) }
let(:versions) { double(:versions) }
let(:octokit) { double(:octokit, readme: { name: "README.md", content: "hi" }) }
let(:version) { double(:version, extension_version_platforms: evp_assoc, id: 456) }
let(:evp_assoc) { double(:evp_assoc) }
let(:supported_platforms) do
[
double(:p1, id: 1),
double(:p2, id: 2)
]
end
subject { ExtractExtensionVersionWorker.new }
before do
stub_const("Extension", Class.new)
allow(Extension).to receive(:find).with(extension_id) { extension }
allow(SupportedPlatform).to receive(:find).with(compatible_platforms) { supported_platforms }
allow(versions).to receive(:create!) { version }
allow(versions).to receive(:first_or_create) { version }
allow(version).to receive(:update_attributes)
allow(evp_assoc).to receive(:create)
allow(evp_assoc).to receive(:first_or_create)
end
it "creates a README based on the one returned from GitHub" do
allow(octokit).to receive(:readme).with("cvincent/test", ref: "1.0") do
{ name: "README.md", content: Base64.encode64("Hello world!") }
end
expect(versions).to receive(:first_or_create).with(tag: "1.0", version: "1.0")
expect(version).to receive(:update_attributes).with(readme: "Hello world!",
readme_extension: "md",
yml_line_count: 0,
rb_line_count: 0)
subject.perform(extension_id, tag, compatible_platforms)
end
it "creates a default README if one is missing" do
allow(octokit).to receive(:readme).with("cvincent/test", ref: "1.0").and_raise(Octokit::NotFound)
expect(versions).to receive(:first_or_create).with(tag: "1.0", version: "1.0")
expect(version).to receive(:update_attributes).with(readme: "There is no README file for this asset.",
readme_extension: "txt",
yml_line_count: 0,
rb_line_count: 0)
subject.perform(extension_id, tag, compatible_platforms)
end
it "links the version to its supported platforms" do
expect(evp_assoc).to receive(:first_or_create).with(supported_platform_id: 1)
expect(evp_assoc).to receive(:first_or_create).with(supported_platform_id: 2)
subject.perform(extension_id, tag, compatible_platforms)
end
it "fails silently if the tag is not a well-formatted SemVer" do
expect {
subject.perform(extension_id, "v1.0", compatible_platforms)
}.not_to raise_error
end
end