2017-07-26 08:21:53 -04:00
require 'spec_helper'
describe Gitlab :: ProjectTemplate do
describe '.all' do
it 'returns a all templates' do
expected = [
2017-10-11 05:07:19 -04:00
described_class . new ( 'rails' , 'Ruby on Rails' , 'Includes an MVC structure, .gitignore, Gemfile, and more great stuff' , 'https://gitlab.com/gitlab-org/project-templates/rails' ) ,
described_class . new ( 'spring' , 'Spring' , 'Includes an MVC structure, .gitignore, Gemfile, and more great stuff' , 'https://gitlab.com/gitlab-org/project-templates/spring' ) ,
described_class . new ( 'express' , 'NodeJS Express' , 'Includes an MVC structure, .gitignore, Gemfile, and more great stuff' , 'https://gitlab.com/gitlab-org/project-templates/express' )
2017-07-26 08:21:53 -04:00
]
expect ( described_class . all ) . to be_an ( Array )
expect ( described_class . all ) . to eq ( expected )
end
end
describe '.find' do
subject { described_class . find ( query ) }
context 'when there is a match' do
let ( :query ) { :rails }
it { is_expected . to be_a ( described_class ) }
end
context 'when there is no match' do
let ( :query ) { 'no-match' }
it { is_expected . to be ( nil ) }
end
end
describe 'instance methods' do
2017-10-11 05:07:19 -04:00
subject { described_class . new ( 'phoenix' , 'Phoenix Framework' , 'Phoenix description' , 'link-to-template' ) }
2017-07-26 08:21:53 -04:00
2017-08-07 08:21:28 -04:00
it { is_expected . to respond_to ( :logo , :file , :archive_path ) }
2017-07-26 08:21:53 -04:00
end
describe 'validate all templates' do
2017-08-01 08:34:11 -04:00
set ( :admin ) { create ( :admin ) }
2017-07-26 08:21:53 -04:00
described_class . all . each do | template |
it " #{ template . name } has a valid archive " do
2017-08-01 06:38:10 -04:00
archive = template . archive_path
2017-07-26 08:21:53 -04:00
expect ( File . exist? ( archive ) ) . to be ( true )
2017-08-01 08:34:11 -04:00
end
context 'with valid parameters' do
it 'can be imported' do
params = {
template_name : template . name ,
namespace_id : admin . namespace . id ,
path : template . name
}
project = Projects :: CreateFromTemplateService . new ( admin , params ) . execute
expect ( project ) . to be_valid
expect ( project ) . to be_persisted
end
2017-07-26 08:21:53 -04:00
end
end
end
end