# encoding: utf-8

require File.dirname(__FILE__) + '/integration_helper'

describe Locomotive::Wagon do
  it 'imports' do
    File.exists?('site/config/site.yml').should be_false
    clone_site
    YAML.load_file('site/config/site.yml').should == {
      'name'      => 'locomotive',
      'locales'   => ['en', 'es'],
      'subdomain' => 'sample',
      'domains'   => ['sample.example.com'],
      'timezone'  => 'UTC'
    }
  end

  it "pulls the expected data" do
    clone_site
    es = YAML.load_file('site/app/views/pages/products.es.liquid')
    es["seo_title"].should == "Productos SEO"
    es["meta_description"].should == "Descripción molona de los productos"
    es["meta_keywords"].should == "palabras, clave, productos"
    en = YAML.load_file('site/app/views/pages/products.liquid')
    en["seo_title"].should == "Search friendly products"
    en["meta_description"].should == "Fancy products description"
    en["meta_keywords"].should == "fancy, products, keywords"
  end

  it 'pushes' do
    clone_site
    file_name = File.dirname(__FILE__) + '/../../site/app/views/pages/index.liquid'
    text = File.read(file_name)
    text.gsub!(/Content of the home page/, 'New content of the home page')
    File.open(file_name, 'w') { |file| file.puts text}
    VCR.use_cassette('push') do
      Locomotive::Wagon.push('site', { host: 'sample.example.com:3000', email: 'admin@locomotivecms.com', password: 'locomotive' })
    end
    WebMock.should have_requested(:put, /pages\/.+.json\?auth_token=.+/).with(body: /page\[raw_template\]=New%20content%20of%20the%20home%20page/).once
  end

  describe "push with unrecognized resources" do
    subject do
      lambda do
        clone_site
        VCR.use_cassette('push') do
          Locomotive::Wagon.push('site', { host: 'sample.example.com:3000', email: 'admin@locomotivecms.com', password: 'locomotive' }, {resources: ['all']})
        end
      end
    end

    it { should raise_exception(ArgumentError, /'all' resource not recognized/) }
  end
end