120 lines
3.0 KiB
Ruby
120 lines
3.0 KiB
Ruby
# encoding: UTF-8
|
|
|
|
shared_examples 'WpItem::Versionable' do
|
|
|
|
describe '#version' do
|
|
let(:fixtures_dir) { MODELS_FIXTURES + '/wp_item/versionable' }
|
|
let(:readme_url) { subject.uri.merge('readme.txt').to_s }
|
|
|
|
context 'when the version is already set' do
|
|
it 'returns it' do
|
|
subject.version = '1.2'
|
|
expect(subject.version).to eq '1.2'
|
|
end
|
|
end
|
|
|
|
context 'otherwise' do
|
|
after do
|
|
stub_request_to_fixture(url: readme_url, fixture: fixtures_dir + @file)
|
|
expect(subject.version).to eq @expected
|
|
end
|
|
|
|
context 'when version is "trunk"' do
|
|
it 'returns nil' do
|
|
@file = '/trunk-version.txt'
|
|
@expected = nil
|
|
end
|
|
end
|
|
|
|
context 'when the version is valid' do
|
|
context 'when leaked from the stable tag' do
|
|
it 'returns it' do
|
|
@file = '/simple-login-lockdown-0.4.txt'
|
|
@expected = '0.4'
|
|
end
|
|
end
|
|
|
|
context 'when leaked from the version' do
|
|
it 'returns it' do
|
|
@file = '/wp-photo-plus-5.1.15.txt'
|
|
@expected = '5.1.15'
|
|
end
|
|
end
|
|
|
|
context 'when version is in a release date format' do
|
|
it 'detects and returns it' do
|
|
@file = '/s2member.txt'
|
|
@expected = '141007'
|
|
end
|
|
end
|
|
|
|
context 'when version contains letters' do
|
|
it 'returns it' do
|
|
@file = '/beta1.txt'
|
|
@expected = '2.0.0-beta1'
|
|
end
|
|
end
|
|
|
|
context 'when parsing the changelog for version numbers' do
|
|
it 'returns it' do
|
|
@file = '/changelog_version.txt'
|
|
@expected = '1.3'
|
|
end
|
|
end
|
|
|
|
context 'when parsing the changelog for version numbers' do
|
|
it 'returns it' do
|
|
@file = '/wp_polls.txt'
|
|
@expected = '2.64'
|
|
end
|
|
end
|
|
|
|
context 'when parsing the changelog for version numbers' do
|
|
it 'returns it' do
|
|
@file = '/nextgen_gallery.txt'
|
|
@expected = '2.0.66.33'
|
|
end
|
|
end
|
|
|
|
context 'when parsing the changelog for version numbers' do
|
|
it 'returns it' do
|
|
@file = '/wp_user_frontend.txt'
|
|
@expected = '1.2.3'
|
|
end
|
|
end
|
|
|
|
context 'when parsing the changelog for version numbers' do
|
|
it 'returns it' do
|
|
@file = '/my_calendar.txt'
|
|
@expected = '2.1.5'
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#to_s' do
|
|
after do
|
|
allow(subject).to receive(:version).and_return(@version)
|
|
subject.name = 'some-name'
|
|
|
|
expect(subject.to_s).to eq @expected
|
|
end
|
|
|
|
context 'when the version does not exist' do
|
|
it 'returns only the name' do
|
|
@version = nil
|
|
@expected = 'some-name'
|
|
end
|
|
end
|
|
|
|
context 'when the version exists' do
|
|
it 'returns the name and the version' do
|
|
@version = '1.3'
|
|
@expected = 'some-name - v1.3'
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|