require 'spec_helper'
require 'td/client/spec_resources'

describe 'Database API' do
  include_context 'spec symbols'
  include_context 'common helper'

  let :api do
    API.new(nil)
  end

  describe 'create_database' do
    it 'should create a new database' do
      stub_api_request(:post, "/v3/database/create/#{e(db_name)}").to_return(:body => {'database' => db_name}.to_json)

      api.create_database(db_name).should be_true
    end

    it 'should return 400 error with invalid name' do
      invalid_name = 'a'
      err_msg = "Name must be 3 to 256 characters, got #{invalid_name.length} characters. name = '#{invalid_name}'"
      stub_api_request(:post, "/v3/database/create/#{e(invalid_name)}").to_return(:status => 400, :body => {'message' => err_msg}.to_json)

      expect {
        api.create_database(invalid_name)
      }.to raise_error(TreasureData::APIError, /^#{err_msg}/)
    end

    it 'should return 409 error with duplicated name' do
      err_msg = "Database #{db_name} already exists"
      stub_api_request(:post, "/v3/database/create/#{e(db_name)}").to_return(:status => 409, :body => {'message' => err_msg}.to_json)

      expect {
        api.create_database(db_name)
      }.to raise_error(TreasureData::APIError, /^#{err_msg}/)
    end
  end
end