-
-
Notifications
You must be signed in to change notification settings - Fork 627
/
version_checker_spec.rb
109 lines (86 loc) · 3.35 KB
/
version_checker_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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
require_relative "simplecov_helper"
require_relative "spec_helper"
class FakeLogger
attr_accessor :message
def warn(message)
self.message = message
end
end
module ReactOnRails
describe VersionChecker do
describe "#warn_if_gem_and_node_package_versions_differ" do
let(:logger) { FakeLogger.new }
context "when gem and node package major versions are equal" do
let(:node_package_version) { double_package_version(raw: "^2.2.5", normalized: "2.2.5", major: "2") }
before { stub_gem_version("2.0.0.beta.2") }
it "does not log a warning" do
check_version(node_package_version, logger)
expect(logger.message).to be_nil
end
end
context "when gem and node package major versions differ" do
let(:node_package_version) do
double_package_version(raw: "13.0.0.beta-2", normalized: "13.0.0.beta.2", major: "13")
end
before { stub_gem_version("12.0.0.beta.1") }
it "logs a warning" do
check_version(node_package_version, logger)
expect(logger.message).to be_present
end
end
context "when package json uses a relative path" do
let(:node_package_version) do
double_package_version(raw: "../../..", normalized: "", major: "", relative_path: true)
end
before { stub_gem_version("2.0.0.beta.1") }
it "does not log a warning" do
check_version(node_package_version, logger)
expect(logger.message).to be_nil
end
end
end
def stub_gem_version(version)
stub_const("ReactOnRails::VERSION", version)
end
def double_package_version(raw:, normalized:, major:, relative_path: false)
instance_double(NodePackageVersion, raw: raw, normalized: normalized, major: major, relative_path?: relative_path)
end
def check_version(node_package_version, logger)
version_checker = VersionChecker.new(node_package_version, logger)
version_checker.warn_if_gem_and_node_package_versions_differ
end
end
describe NodePackageVersion do
subject(:node_package_version) { NodePackageVersion.new(package_json) }
context "when package json lists a version of '^14.0.0.beta-2'" do
let(:package_json) { File.expand_path("../fixtures/normal_package.json", __FILE__) }
describe "#raw" do
specify { expect(node_package_version.raw).to eq("^14.0.0.beta-2") }
end
describe "#normalized" do
specify { expect(node_package_version.normalized).to eq("14.0.0.beta.2") }
end
describe "#relative_path?" do
specify { expect(node_package_version.relative_path?).to be false }
end
describe "#major" do
specify { expect(node_package_version.major).to eq("14") }
end
end
context "with node version of '../../..'" do
let(:package_json) { File.expand_path("../fixtures/relative_package.json", __FILE__) }
describe "#raw" do
specify { expect(node_package_version.raw).to eq("../../..") }
end
describe "#normalized" do
specify { expect(node_package_version.normalized).to be_nil }
end
describe "#relative_path?" do
specify { expect(node_package_version.relative_path?).to be true }
end
describe "#major" do
specify { expect(node_package_version.major).to be_nil }
end
end
end
end