@@ -11,7 +11,7 @@ def error(message)
11
11
end
12
12
end
13
13
14
- module ReactOnRails
14
+ module ReactOnRails # rubocop:disable Metrics/ModuleLength
15
15
describe VersionChecker do
16
16
describe "#warn_if_gem_and_node_package_versions_differ" do
17
17
let ( :logger ) { FakeLogger . new }
@@ -24,7 +24,13 @@ module ReactOnRails
24
24
before { stub_gem_version ( "2.2.5.beta.2" ) }
25
25
26
26
it "does not raise" do
27
- expect { check_version ( node_package_version ) } . not_to raise_error
27
+ expect { check_version_and_raise ( node_package_version ) } . not_to raise_error
28
+ end
29
+
30
+ it "does not log" do
31
+ allow ( Rails . logger ) . to receive ( :warn )
32
+ check_version_and_log ( node_package_version )
33
+ expect ( Rails . logger ) . not_to have_received ( :warn )
28
34
end
29
35
end
30
36
@@ -38,10 +44,15 @@ module ReactOnRails
38
44
it "logs" do
39
45
allow ( Rails . logger ) . to receive ( :warn )
40
46
message = /ReactOnRails: Your node package version for react-on-rails contains a \^ or ~/
41
- # expect { check_version(node_package_version) }.to raise_error(message)
42
- check_version ( node_package_version )
47
+ check_version_and_log ( node_package_version )
43
48
expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
44
49
end
50
+
51
+ it "raises" do
52
+ allow ( Rails . logger ) . to receive ( :warn )
53
+ message = /ReactOnRails: Your node package version for react-on-rails contains a \^ or ~/
54
+ expect { check_version_and_raise ( node_package_version ) } . to raise_error ( message )
55
+ end
45
56
end
46
57
47
58
context "when gem and node package major versions differ" do
@@ -54,10 +65,15 @@ module ReactOnRails
54
65
it "logs" do
55
66
allow ( Rails . logger ) . to receive ( :warn )
56
67
message = /ReactOnRails: ReactOnRails gem and node package versions do not match/
57
- # expect { check_version(node_package_version) }.to raise_error(message)
58
- check_version ( node_package_version )
68
+ check_version_and_log ( node_package_version )
59
69
expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
60
70
end
71
+
72
+ it "raises" do
73
+ allow ( Rails . logger ) . to receive ( :warn )
74
+ message = /ReactOnRails: ReactOnRails gem and node package versions do not match/
75
+ expect { check_version_and_raise ( node_package_version ) } . to raise_error ( message )
76
+ end
61
77
end
62
78
63
79
context "when gem and node package major versions match and minor differs" do
@@ -70,10 +86,15 @@ module ReactOnRails
70
86
it "logs" do
71
87
allow ( Rails . logger ) . to receive ( :warn )
72
88
message = /ReactOnRails: ReactOnRails gem and node package versions do not match/
73
- # expect { check_version(node_package_version) }.to raise_error(message)
74
- check_version ( node_package_version )
89
+ check_version_and_log ( node_package_version )
75
90
expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
76
91
end
92
+
93
+ it "raises" do
94
+ allow ( Rails . logger ) . to receive ( :warn )
95
+ message = /ReactOnRails: ReactOnRails gem and node package versions do not match/
96
+ expect { check_version_and_raise ( node_package_version ) } . to raise_error ( message )
97
+ end
77
98
end
78
99
79
100
context "when gem and node package major, minor versions match and patch differs" do
@@ -86,10 +107,15 @@ module ReactOnRails
86
107
it "logs" do
87
108
allow ( Rails . logger ) . to receive ( :warn )
88
109
message = /ReactOnRails: ReactOnRails gem and node package versions do not match/
89
- # expect { check_version(node_package_version) }.to raise_error(message)
90
- check_version ( node_package_version )
110
+ check_version_and_log ( node_package_version )
91
111
expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
92
112
end
113
+
114
+ it "raises" do
115
+ allow ( Rails . logger ) . to receive ( :warn )
116
+ message = /ReactOnRails: ReactOnRails gem and node package versions do not match/
117
+ expect { check_version_and_raise ( node_package_version ) } . to raise_error ( message )
118
+ end
93
119
end
94
120
95
121
context "when package json uses a relative path with dots" do
@@ -100,7 +126,27 @@ module ReactOnRails
100
126
before { stub_gem_version ( "2.0.0.beta.1" ) }
101
127
102
128
it "does not raise" do
103
- expect { check_version ( node_package_version ) } . not_to raise_error
129
+ expect { check_version_and_raise ( node_package_version ) } . not_to raise_error
130
+ end
131
+
132
+ it "does not log" do
133
+ allow ( Rails . logger ) . to receive ( :warn )
134
+ check_version_and_log ( node_package_version )
135
+ expect ( Rails . logger ) . not_to have_received ( :warn )
136
+ end
137
+ end
138
+
139
+ context "when package json doesn't exist" do
140
+ let ( :node_package_version ) do
141
+ double_package_version ( raw : nil )
142
+ end
143
+
144
+ it "raise method returns true" do
145
+ expect ( check_version_and_raise ( node_package_version ) ) . to be ( true )
146
+ end
147
+
148
+ it "log method returns true" do
149
+ expect ( check_version_and_log ( node_package_version ) ) . to be ( true )
104
150
end
105
151
end
106
152
end
@@ -114,11 +160,16 @@ def double_package_version(raw: nil, semver_wildcard: false,
114
160
relative_path? : relative_path )
115
161
end
116
162
117
- def check_version ( node_package_version )
163
+ def check_version_and_raise ( node_package_version )
118
164
version_checker = VersionChecker . new ( node_package_version )
119
165
version_checker . raise_if_gem_and_node_package_versions_differ
120
166
end
121
167
168
+ def check_version_and_log ( node_package_version )
169
+ version_checker = VersionChecker . new ( node_package_version )
170
+ version_checker . log_if_gem_and_node_package_versions_differ
171
+ end
172
+
122
173
describe VersionChecker ::NodePackageVersion do
123
174
subject ( :node_package_version ) { described_class . new ( package_json ) }
124
175
@@ -221,6 +272,14 @@ def check_version(node_package_version)
221
272
specify { expect ( node_package_version . major_minor_patch ) . to be_nil }
222
273
end
223
274
end
275
+
276
+ context "with non-existing package.json" do
277
+ let ( :package_json ) { File . expand_path ( "fixtures/nonexistent_package.json" , __dir__ ) }
278
+
279
+ describe "#raw" do
280
+ specify { expect ( node_package_version . raw ) . to be_nil }
281
+ end
282
+ end
224
283
end
225
284
end
226
285
end
0 commit comments