# encoding: UTF-8

require File.expand_path('../../spec_helper', __FILE__)

describe "Domain Management"  do
  
  before :each do
    set_configuration_with_real_credentials if real_credentials_available?
    @client = Loopiator::Client.new
  end
  
  after :each do
    Loopiator.reset
  end

  context "When checking domain availability:" do
    it "I should be able to check that a domain is available" do
      expect(@client).to receive(:domain_is_free).with('dsadsadsadsadsadsadasdas.se').and_return(true) unless real_credentials_available?
      expect(@client.domain_is_free('dsadsadsadsadsadsadasdas.se')).to be == true
    end
  
    it "I should be able to check if a domain is not available" do
      expect(@client).to receive(:domain_is_free).with('aftonbladet.se').and_return(false) unless real_credentials_available?
      expect(@client.domain_is_free('aftonbladet.se')).to be == false
    end
  
    it "I should be able to check if an IDN-domain is available" do
      expect(@client).to receive(:domain_is_free).with('såhärtestarmanenidndomänkanske.se').and_return(true) unless real_credentials_available?
      expect(@client.domain_is_free('såhärtestarmanenidndomänkanske.se')).to be == true
    end
  end

  context "When managing domains" do
    it "I should be able to check the details for a domain that I own" do
    	hash        =   {"paid"             =>  1,
    	                 "unpaid_amount"    =>  0,
    	                 "registered"       =>  1,
    	                 "domain"           =>  "testdomain.se",
    	                 "renewal_status"   =>  "NOT_HANDLED_BY_LOOPIA",
    	                 "expiration_date"  =>  "UNKNOWN",
    	                 "reference_no"     =>  "999999"
    	                }
  	                
    	mock        =   Loopiator::Models::Domain.new(hash)
  	
      expect(@client).to receive(:get_domain).with('testdomain.se').and_return(mock)
    
    	domain      =   @client.get_domain('testdomain.se')
  	
    	expect(domain.paid?).to be              ==  true
      expect(domain.needs_to_be_paid?).to be  ==  false
    	expect(domain.registered?).to be        ==  true
      expect(domain.reference_number).to be   ==  "999999"
    end
  
    it "I should be able to see that a domain hasn't been paid for yet." do
    	hash        =   {"paid"             =>  0,
    	                 "unpaid_amount"    =>  99,
    	                 "registered"       =>  1,
    	                 "domain"           =>  "testdomain.se",
    	                 "renewal_status"   =>  "NOT_HANDLED_BY_LOOPIA",
    	                 "expiration_date"  =>  "UNKNOWN",
    	                 "reference_no"     =>  "1111111"
    	                }
  	                
    	mock        =   Loopiator::Models::Domain.new(hash)
  	
    
      expect(@client).to receive(:get_domain).with('testdomain.se').and_return(mock)
    
    	domain      =   @client.get_domain('testdomain.se')
  	
    	expect(domain.paid?).to be              ==  false
      expect(domain.needs_to_be_paid?).to be  ==  true
    	expect(domain.unpaid_amount).to be      ==  99
      expect(domain.reference_number).to be   ==  "1111111"
    end
  end
    
end