spec/cli_spec.rb in wordless-0.2.1 vs spec/cli_spec.rb in wordless-0.3.0
- old
+ new
@@ -1,11 +1,10 @@
require 'spec_helper'
describe Wordless::CLI do
- before :each do
- # $stdout = StringIO.new
- @original_wd = Dir.pwd
+
+ before :all do
wp_api_response = <<-eof
upgrade
http://wordpress.org/download/
http://wordpress.org/wordpress-3.3.1.zip
3.3.1
@@ -13,81 +12,167 @@
5.2.4
5.0
eof
FakeWeb.register_uri(:get, %r|http://api.wordpress.org/core/version-check/1.5/.*|, :body => wp_api_response)
FakeWeb.register_uri(:get, "http://wordpress.org/wordpress-3.3.1.zip", :body => File.expand_path('spec/fixtures/wordpress_stub.zip'))
+ end
+
+ before :each do
+ Wordless::CLI.class_variable_set :@@config, {
+ :wordless_repo => File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', 'wordless'))
+ }
+ @original_wd = Dir.pwd
Dir.chdir('tmp')
end
-
+
+ after :each do
+ Dir.chdir(@original_wd)
+ %w(tmp/wordpress tmp/myapp).each do |dir|
+ FileUtils.rm_rf(dir) if File.directory? dir
+ end
+ end
+
context "#new" do
it "downloads a copy of WordPress, installs Wordless and creates a theme" do
Wordless::CLI.start ['new', 'myapp']
- File.exists?('wp-content/index.php').should eq true
- (File.exists?('wp-content/plugins/plugin.php') || File.directory?('wp-content/themes/theme')).should eq false
- File.directory?('wp-content/plugins/wordless').should eq true
- File.directory?('wp-content/themes/myapp').should eq true
- File.exists?('wp-content/themes/myapp/index.php').should eq true
+ File.exists?('wp-content/index.php').should be_true
+ (File.exists?('wp-content/plugins/plugin.php') || File.directory?('wp-content/themes/theme')).should be_false
+ File.directory?('wp-content/plugins/wordless').should be_true
+ File.directory?('wp-content/themes/myapp').should be_true
+ File.exists?('wp-content/themes/myapp/index.php').should be_true
end
end
-
+
context "#install" do
context "with a valid WordPress installation" do
it "installs the Wordless plugin" do
WordPressTools::CLI.start ['new']
Dir.chdir 'wordpress'
Wordless::CLI.start ['install']
- File.directory?('wp-content/plugins/wordless').should eq true
- end
+ File.directory?('wp-content/plugins/wordless').should be_true
+ end
end
-
+
context "without a valid WordPress installation" do
it "fails to install the Wordless plugin" do
content = capture(:stdout) { Wordless::CLI.start ['install'] }
content.should =~ %r|Directory 'wp-content/plugins' not found|
end
end
end
-
+
context "#theme" do
context "with a valid WordPress installation and the Wordless plugin" do
before :each do
WordPressTools::CLI.start ['new']
Dir.chdir 'wordpress'
Wordless::CLI.start ['install']
end
-
+
it "creates a Wordless theme" do
Wordless::CLI.start ['theme', 'mytheme']
- File.directory?('wp-content/themes/mytheme').should eq true
- File.exists?('wp-content/themes/mytheme/index.php').should eq true
+ File.directory?('wp-content/themes/mytheme').should be_true
+ File.exists?('wp-content/themes/mytheme/index.php').should be_true
end
end
-
+
context "without a valid WordPress installation" do
it "fails to create a Wordless theme" do
content = capture(:stdout) { Wordless::CLI.start ['theme', 'mytheme'] }
content.should =~ %r|Directory 'wp-content/themes' not found|
end
end
end
-
+
context "#compile" do
context "with a valid Wordless installation" do
before :each do
Wordless::CLI.start ['new', 'myapp']
end
-
+
it "compiles static assets" do
Wordless::CLI.start ['compile']
- File.exists?('wp-content/themes/myapp/assets/stylesheets/screen.css').should eq true
- File.exists?('wp-content/themes/myapp/assets/javascripts/application.js').should eq true
+ File.exists?('wp-content/themes/myapp/assets/stylesheets/screen.css').should be_true
+ File.exists?('wp-content/themes/myapp/assets/javascripts/application.js').should be_true
end
end
end
-
- after :each do
- Dir.chdir(@original_wd)
- %w(tmp/wordpress tmp/myapp).each do |dir|
- FileUtils.rm_rf(dir) if File.directory? dir
+
+ context "#clean" do
+ before do
+ FileUtils.mkdir_p('myapp/wp-content/themes/myapp/assets/stylesheets')
+ FileUtils.mkdir_p('myapp/wp-content/themes/myapp/assets/javascripts')
+ Dir.chdir('myapp')
end
+
+ let(:default_css) { 'wp-content/themes/myapp/assets/stylesheets/screen.css' }
+ let(:default_js) { 'wp-content/themes/myapp/assets/javascripts/application.js' }
+
+ let(:first_css) { 'wp-content/themes/myapp/assets/stylesheets/foo.css' }
+ let(:second_css) { 'wp-content/themes/myapp/assets/stylesheets/bar.css' }
+ let(:first_js) { 'wp-content/themes/myapp/assets/javascripts/robin.js' }
+ let(:second_js) { 'wp-content/themes/myapp/assets/javascripts/galahad.js' }
+
+ it "should remove default default assets" do
+ FileUtils.touch(default_css)
+ FileUtils.touch(default_js)
+
+ Wordless::CLI.start ['clean']
+
+ File.exists?(default_css).should be_false
+ File.exists?(default_js).should be_false
+ end
+
+ it "should remove assets specified on config" do
+ Wordless::CLI.class_variable_set :@@config, {
+ :static_css => [ first_css, second_css ],
+ :static_js => [ first_js, second_js ]
+ }
+
+ [ first_css, second_css, first_js, second_js ].each do |file|
+ FileUtils.touch(file)
+ end
+
+ Wordless::CLI.start ['clean']
+
+ [ first_css, second_css, first_js, second_js ].each do |file|
+ File.exists?(file).should be_false
+ end
+ end
end
-end
\ No newline at end of file
+
+ context "#deploy" do
+
+ let(:cli) { Wordless::CLI.new }
+ let(:file) { 'shrubbery.txt' }
+
+ before :each do
+ FileUtils.mkdir_p('myapp') and Dir.chdir('myapp')
+ FileUtils.touch('wp-config.php')
+ Wordless::CLI.class_variable_set :@@config, {
+ :deploy_command => "touch #{file}"
+ }
+ end
+
+ it "should deploy via the deploy command" do
+ cli.deploy
+ File.exists?(file).should be_true
+ end
+
+ it "should compile and clean if refresh option is passed" do
+ cli.should_receive(:compile).and_return(true)
+ cli.should_receive(:clean).and_return(true)
+ cli.stub(:options).and_return({ 'refresh' => true })
+ cli.deploy
+ end
+
+ context "if a custom deploy is passed" do
+ let(:file) { 'knights.txt' }
+
+ it "should launch the custom deploy command" do
+ cli.stub(:options).and_return({ 'command' => "touch #{file}" })
+ cli.deploy
+ File.exists?(file).should be_true
+ end
+ end
+ end
+end