Fixes #164 README.txt detection
This commit is contained in:
@@ -7,17 +7,30 @@ class WpItem
|
||||
|
||||
# @return [ Boolean ]
|
||||
def has_readme?
|
||||
Browser.get(readme_url).code == 200 ? true : false
|
||||
!readme_url.nil?
|
||||
end
|
||||
|
||||
# @return [ String ] The url to the readme file
|
||||
# @return [ String,nil ] The url to the readme file, nil if not found
|
||||
def readme_url
|
||||
@uri.merge('readme.txt').to_s
|
||||
%w{readme.txt README.txt}.each do |readme|
|
||||
url = @uri.merge(readme).to_s
|
||||
return url if url_is_200?(url)
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
||||
# @return [ Boolean ]
|
||||
def has_changelog?
|
||||
Browser.get(changelog_url).code == 200 ? true : false
|
||||
url_is_200?(changelog_url)
|
||||
end
|
||||
|
||||
# Checks if the url status code is 200
|
||||
#
|
||||
# @param [ String ] url
|
||||
#
|
||||
# @return [ Boolean ] True if the url status is 200
|
||||
def url_is_200?(url)
|
||||
Browser.get(url).code == 200
|
||||
end
|
||||
|
||||
# @return [ String ] The url to the changelog file
|
||||
|
||||
@@ -6,7 +6,6 @@ describe WpItem do
|
||||
it_behaves_like 'WpItem::Existable'
|
||||
it_behaves_like 'WpItem::Findable#Found_From='
|
||||
it_behaves_like 'WpItem::Infos' do
|
||||
let(:readme_url) { uri.merge('readme.txt').to_s }
|
||||
let(:changelog_url) { uri.merge('changelog.txt').to_s }
|
||||
let(:error_log_url) { uri.merge('error_log').to_s }
|
||||
end
|
||||
|
||||
@@ -4,30 +4,46 @@ shared_examples 'WpItem::Infos' do
|
||||
|
||||
# 3 expected urls have to be set in the described class (or subject)
|
||||
# e.g :
|
||||
# let(:readme_url) { }
|
||||
# let(:changelog_url) { }
|
||||
# let(:error_log_url) { }
|
||||
|
||||
describe '#readme_url' do
|
||||
after { subject.readme_url.should === @expected }
|
||||
|
||||
it 'returns nil' do
|
||||
stub_request(:get, /.*/).to_return(status: 404)
|
||||
@expected = nil
|
||||
end
|
||||
|
||||
context 'when the file exists' do
|
||||
%w{readme.txt README.txt}.each do |readme|
|
||||
it 'returns the correct url' do
|
||||
subject.readme_url.should == readme_url
|
||||
url = uri.merge(readme).to_s
|
||||
@expected = url
|
||||
|
||||
stub_request(:get, %r{^(?!#{url})}).to_return(status: 404)
|
||||
stub_request(:get, url).to_return(status: 200)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#has_readme?' do
|
||||
after :each do
|
||||
stub_request(:get, subject.readme_url).to_return(status: @status)
|
||||
after do
|
||||
subject.stub(readme_url: @stub)
|
||||
subject.has_readme?.should === @expected
|
||||
end
|
||||
|
||||
it 'returns true on a 200' do
|
||||
@status = 200
|
||||
@expected = true
|
||||
context 'when readme_url is nil'
|
||||
it 'returns false' do
|
||||
@stub = nil
|
||||
@expected = false
|
||||
end
|
||||
|
||||
it 'returns false otherwise' do
|
||||
@status = 404
|
||||
@expected = false
|
||||
context 'when readme_url is not nil'
|
||||
it 'returns true' do
|
||||
@stub = uri.merge('readme.txt').to_s
|
||||
@expected = true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ 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
|
||||
@@ -14,7 +15,7 @@ shared_examples 'WpItem::Versionable' do
|
||||
|
||||
context 'otherwise' do
|
||||
after do
|
||||
stub_request_to_fixture(url: subject.readme_url, fixture: fixtures_dir + @file)
|
||||
stub_request_to_fixture(url: readme_url, fixture: fixtures_dir + @file)
|
||||
subject.version.should == @expected
|
||||
end
|
||||
|
||||
|
||||
@@ -22,10 +22,11 @@ shared_examples 'WpTheme::Versionable' do
|
||||
|
||||
context 'when the version is not found' do
|
||||
let(:file) { 'twentyeleven-unknow.css' }
|
||||
let(:readme_url) { subject.uri.merge('readme.txt').to_s }
|
||||
|
||||
context 'from the style_url' do
|
||||
it 'gets it from the readme' do
|
||||
stub_request(:get, subject.readme_url).to_return(status: 200, body: 'Stable Tag: 1.3.4')
|
||||
stub_request(:get, readme_url).to_return(status: 200, body: 'Stable Tag: 1.3.4')
|
||||
|
||||
@file = file
|
||||
@expected = '1.3.4'
|
||||
@@ -34,7 +35,8 @@ shared_examples 'WpTheme::Versionable' do
|
||||
|
||||
context 'from both style & readme' do
|
||||
it 'returns nil' do
|
||||
stub_request(:get, subject.readme_url).to_return(status: 404)
|
||||
subject.stub(readme_url: readme_url)
|
||||
stub_request(:get, readme_url).to_return(status: 404)
|
||||
|
||||
@file = file
|
||||
@expected = nil
|
||||
|
||||
Reference in New Issue
Block a user