require 'spec_helper'
require 'squib'

describe  Squib::Commands::New do

  describe '#process' do
    before(:all) do
      @old_stderr = $stderr
      $stderr = StringIO.new
      @oldpwd = Dir.pwd
      Dir.chdir(output_dir)
    end

    before(:each) do
      FileUtils.rm_rf('foo', secure: true)
      @cmd = Squib::Commands::New.new
    end

    it 'raises an error if no directory was specified' do
      expect{@cmd.process([])}.to raise_error(ArgumentError, 'Please specify a path.')
    end

    it 'creates a new template on an fresh directory' do
      @cmd.process(['foo'])
      expect(File.exists?('foo/deck.rb')).to be true
    end

    it 'creates a new template on an empty directory' do
      Dir.mkdir('foo')
      @cmd.process(['foo'])
      expect(File.exists?('foo/deck.rb')).to be true
    end

    it 'does not create a new template on an empty ' do
      Dir.mkdir('foo')
      File.new('foo/somefile.txt', 'w+')
      @cmd.process(['foo'])
      $stderr.rewind
      expect($stderr.string.chomp).to end_with ' exists and is not empty. Doing nothing and quitting.'
    end

    after(:all) do
      $stderr = @old_stderr
      Dir.chdir(@oldpwd)
    end
  end

end
