@@ -11,7 +11,7 @@ def error(message)
1111 end
1212end
1313
14- module ReactOnRails
14+ module ReactOnRails # rubocop:disable Metrics/ModuleLength
1515 describe VersionChecker do
1616 describe "#warn_if_gem_and_node_package_versions_differ" do
1717 let ( :logger ) { FakeLogger . new }
@@ -24,7 +24,13 @@ module ReactOnRails
2424 before { stub_gem_version ( "2.2.5.beta.2" ) }
2525
2626 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 )
2834 end
2935 end
3036
@@ -38,10 +44,15 @@ module ReactOnRails
3844 it "logs" do
3945 allow ( Rails . logger ) . to receive ( :warn )
4046 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 )
4348 expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
4449 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
4556 end
4657
4758 context "when gem and node package major versions differ" do
@@ -54,10 +65,15 @@ module ReactOnRails
5465 it "logs" do
5566 allow ( Rails . logger ) . to receive ( :warn )
5667 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 )
5969 expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
6070 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
6177 end
6278
6379 context "when gem and node package major versions match and minor differs" do
@@ -70,10 +86,15 @@ module ReactOnRails
7086 it "logs" do
7187 allow ( Rails . logger ) . to receive ( :warn )
7288 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 )
7590 expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
7691 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
7798 end
7899
79100 context "when gem and node package major, minor versions match and patch differs" do
@@ -86,10 +107,15 @@ module ReactOnRails
86107 it "logs" do
87108 allow ( Rails . logger ) . to receive ( :warn )
88109 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 )
91111 expect ( Rails . logger ) . to have_received ( :warn ) . with ( message )
92112 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
93119 end
94120
95121 context "when package json uses a relative path with dots" do
@@ -100,7 +126,27 @@ module ReactOnRails
100126 before { stub_gem_version ( "2.0.0.beta.1" ) }
101127
102128 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 )
104150 end
105151 end
106152 end
@@ -114,11 +160,16 @@ def double_package_version(raw: nil, semver_wildcard: false,
114160 relative_path? : relative_path )
115161 end
116162
117- def check_version ( node_package_version )
163+ def check_version_and_raise ( node_package_version )
118164 version_checker = VersionChecker . new ( node_package_version )
119165 version_checker . raise_if_gem_and_node_package_versions_differ
120166 end
121167
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+
122173 describe VersionChecker ::NodePackageVersion do
123174 subject ( :node_package_version ) { described_class . new ( package_json ) }
124175
@@ -221,6 +272,14 @@ def check_version(node_package_version)
221272 specify { expect ( node_package_version . major_minor_patch ) . to be_nil }
222273 end
223274 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
224283 end
225284 end
226285end
0 commit comments