spec/papers_spec.rb in papers-2.0.0 vs spec/papers_spec.rb in papers-2.1.0
- old
+ new
@@ -5,28 +5,29 @@
describe 'Papers' do
let(:validator) { Papers::LicenseValidator.new }
it 'validates a manifest with empty values and set of dependencies' do
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {}
})
- Papers::Gem.stub(:introspected).and_return([])
+ allow(Papers::Gem).to receive(:introspected).and_return([])
expect(validator.valid?).to be_truthy
end
it 'detects mismatched gems' do
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {
'foo-1.2' => { 'license' => 'MIT' },
'baz-1.3' => { 'license' => 'BSD' }
}
})
- Bundler.stub_chain(:load, :specs).and_return([
+
+ allow(Bundler).to receive_message_chain(:load, :specs).and_return([
double(name: 'bar', version: '1.2', licenses: ['MIT']),
double(name: 'baz', version: '1.3', licenses: ['BSD'])
])
expect(validator.valid?).to be_falsey
@@ -38,20 +39,19 @@
validator.valid?
end
it 'detects mismatched gem versions' do
- Papers::Configuration.any_instance.stub(:validate_javascript?).and_return(false)
-
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::Configuration).to receive(:validate_javascript?).and_return(false)
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {
'foo-1.2' => { 'license' => 'MIT' },
'baz-1.3' => { 'license' => 'BSD' }
}
})
- Bundler.stub_chain(:load, :specs).and_return([
+ allow(Bundler).to receive_message_chain(:load, :specs).and_return([
double(name: 'foo', version: '1.2', licenses: ['MIT']),
double(name: 'baz', version: '1.2', licenses: ['BSD'])
])
expect(validator.valid?).to be_falsey
@@ -62,20 +62,19 @@
])
validator.valid?
end
it 'detects omitted gem versions' do
- Papers::Configuration.any_instance.stub(:validate_javascript?).and_return(false)
-
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::Configuration).to receive(:validate_javascript?).and_return(false)
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {
'foo' => { 'license' => 'MIT' },
'baz-1.2' => { 'license' => 'BSD' }
}
})
- Bundler.stub_chain(:load, :specs).and_return([
+ allow(Bundler).to receive_message_chain(:load, :specs).and_return([
double(name: 'foo', version: '1.2', licenses: ['MIT']),
double(name: 'baz', version: '1.2', licenses: ['BSD'])
])
expect(validator).not_to be_valid
@@ -86,55 +85,55 @@
])
validator.valid?
end
it 'is OK with matching gem sets' do
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {
'foo-1.2' => { 'license' => 'MIT' },
'baz-1.2' => { 'license' => 'BSD' }
}
})
- Bundler.stub_chain(:load, :specs).and_return([
+ allow(Bundler).to receive_message_chain(:load, :specs).and_return([
double(name: 'foo', version: '1.2', licenses: ['MIT']),
double(name: 'baz', version: '1.2', licenses: ['BSD'])
])
expect(validator.valid?).to be_truthy
end
it 'is OK with whitelisting gem versions on a specific license' do
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {
'foo' => { 'license' => 'MIT' },
'baz' => { 'license' => 'BSD' }
}
})
- Bundler.stub_chain(:load, :specs).and_return([
+ allow(Bundler).to receive_message_chain(:load, :specs).and_return([
double(name: 'foo', version: '1.2', licenses: ['MIT']),
double(name: 'baz', version: '1.2', licenses: ['BSD'])
])
- Papers::Configuration.any_instance.stub(:version_whitelisted_license).and_return('MIT')
+ allow_any_instance_of(Papers::Configuration).to receive(:version_whitelisted_license).and_return('MIT')
expect(validator).not_to be_valid
expect(validator.errors).to eq([
'baz-1.2 is included in the application, but not in the manifest',
'baz is included in the manifest, but not in the application'
])
end
it 'is OK with matching gem sets but complain about a license issue' do
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {
'foo-1.2' => { 'license' => 'MIT' },
'baz-1.3' => { 'license' => 'GPL' }
}
})
- Bundler.stub_chain(:load, :specs).and_return([
+ allow(Bundler).to receive_message_chain(:load, :specs).and_return([
double(name: 'foo', version: '1.2', licenses: ['MIT']),
double(name: 'baz', version: '1.3', licenses: ['GPL'])
])
expect(validator).not_to be_valid
@@ -143,11 +142,11 @@
'baz-1.3 is licensed under GPL, which is not whitelisted'
])
end
it 'displays gem licenses in a pretty format without versions' do
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {
'foo-1.2' => { 'license' => 'MIT' },
'baz-1.3' => { 'license' => 'BSD' },
'with-hyphens-1.4' => { 'license' => 'MIT' }
@@ -175,46 +174,68 @@
}
])
end
it 'displays JS libraries in a pretty format without versions' do
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {
'/path/to/foo.js' => {
'license' => 'MIT',
'license_url' => nil,
'project_url' => nil
},
- '/path/to/newrelic.js' => {
+ '/path/to/bar.coffee' => {
+ 'license' => 'MIT',
+ 'license_url' => nil,
+ 'project_url' => nil
+ },
+ '/path/to/newrelic.js.erb' => {
'license' => 'New Relic',
'license_url' => nil,
'project_url' => nil
+ },
+ '/path/to/newrelic.js.coffee' => {
+ 'license' => 'New Relic',
+ 'license_url' => nil,
+ 'project_url' => nil
}
},
'gems' => {}
})
- expect(validator.pretty_js_list).to eq([
+ expect(validator.pretty_js_list).to contain_exactly(
{
:name =>'/path/to/foo.js',
:license =>'MIT',
:license_url => nil,
:project_url => nil
},
{
- :name =>'/path/to/newrelic.js',
+ :name =>'/path/to/bar.coffee',
+ :license =>'MIT',
+ :license_url => nil,
+ :project_url => nil
+ },
+ {
+ :name =>'/path/to/newrelic.js.erb',
:license =>'New Relic',
:license_url => nil,
:project_url => nil
+ },
+ {
+ :name =>'/path/to/newrelic.js.coffee',
+ :license =>'New Relic',
+ :license_url => nil,
+ :project_url => nil
}
- ])
+ )
end
it 'displays bower component licenses in a pretty format without versions' do
- Papers::Configuration.any_instance.stub(:validate_bower_components?).and_return(true)
+ allow_any_instance_of(Papers::Configuration).to receive(:validate_bower_components?).and_return(true)
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {},
'bower_components' => {
'foo-1.2' => {
'license' => 'MIT',
@@ -255,13 +276,13 @@
}
])
end
it 'skips bower versions for whitelisted licenses' do
- Papers::Configuration.any_instance.stub(:version_whitelisted_license).and_return('Whitelist')
+ allow_any_instance_of(Papers::Configuration).to receive(:version_whitelisted_license).and_return('Whitelist')
- Papers::BowerComponent.stub(:bower_json_entries).and_return([
+ allow(Papers::BowerComponent).to receive(:bower_json_entries).and_return([
{
'name' => 'foo',
'_release' => '1.2',
'license' => 'MIT',
},
@@ -284,13 +305,13 @@
'internal-thing'
])
end
it 'displays npm package licenses in a pretty format without versions' do
- Papers::Configuration.any_instance.stub(:validate_npm_packages?).and_return(true)
+ allow_any_instance_of(Papers::Configuration).to receive(:validate_npm_packages?).and_return(true)
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {},
'gems' => {},
'npm_packages' => {
'foo-1.2' => {
'license' => 'MIT',
@@ -337,29 +358,30 @@
expect('foo').to eq(gemspec.name_without_version)
end
it 'is OK with whitelisting javascript javascript_paths' do
# contents of javascript dir and no gems
- Dir.stub(:glob){[
+ allow(Dir).to receive(:glob).and_return([
'app/javascripts/node_modules/should_be_whitelisted.js',
'app/javascripts/test.js'
- ]}
- Papers::Gem.stub(:introspected).and_return([])
+ ])
- Papers::LicenseValidator.any_instance.stub(:manifest).and_return({
+ allow(Papers::Gem).to receive(:introspected).and_return([])
+
+ allow_any_instance_of(Papers::LicenseValidator).to receive(:manifest).and_return({
'javascripts' => {
'app/javascripts/test.js' => {
'license' => 'MIT',
'license_url' => nil,
'project_url' => nil
}
},
'gems' => {}
})
- Papers::Configuration.any_instance.stub(:javascript_paths).and_return(['app/javascripts/'])
+ allow_any_instance_of(Papers::Configuration).to receive(:javascript_paths).and_return(['app/javascripts/'])
# whitelist this directory
- Papers::Configuration.any_instance.stub(:whitelist_javascript_paths).and_return(['app/javascripts/node_modules'])
+ allow_any_instance_of(Papers::Configuration).to receive(:whitelist_javascript_paths).and_return(['app/javascripts/node_modules'])
expect(Papers::Javascript.introspected).to_not include('app/javascripts/node_modules/should_be_whitelisted.js')
expect(validator).to be_valid
end