# $Id$

require File.join(File.dirname(__FILE__), %w[spec_helper])

class TestView
  include ActionView::Helpers::DateHelper
end

test_view = TestView.new

describe Ciuchcia do
  it "should correctly tralnlate numbers to words" do
    number_in_words(1).should eql("jeden")
    number_in_words(1000).should eql("tysiąc")
    number_in_words(123).should eql("sto dwadzieścia trzy")
    number_in_words(1047).should eql("tysiąc czterdzieści siedem")
    number_in_words(12).should eql("dwanaście")
    number_in_words(666).should eql("sześćset sześćdziesiąt sześć")
    number_in_words(123456789).should eql("sto dwadzieścia trzy miliony czterysta pięćdziesiąt sześć tysięcy siedemset osiemdziesiąt dziewięć")
  end
  
  it "should know how to count mouney" do
    money_in_words(13.45).should eql("trzynaście złotych czterdzieści pięć groszy")
    money_in_words(2.30).should eql("dwa złote trzydzieści groszy")
    money_in_words(2401).should eql("dwa tysiące czterysta jeden złotych")
  end
  
  it "should tell distance in time po kurwa polsku" do
    test_view.distance_of_time_in_words(Time.now - 60,Time.now).should eql("1 minuta")
    test_view.distance_of_time_in_words(Time.now - 3600*2,Time.now).should eql("około 2 godziny")
  end
  
  it "should correctly validates NIP number" do
    Ciuchcia::Validations.valid_nip?('779-21-25-257').should be_true
    Ciuchcia::Validations.valid_nip?('779-21-25-254').should be_false
    Ciuchcia::Validations.valid_nip?('blablabla').should be_false
    Ciuchcia::Validations.valid_nip?('779-21-25-25423').should be_false
    Ciuchcia::Validations.valid_nip?('7792125223').should be_false
    Ciuchcia::Validations.valid_nip?('525-21-85-036').should be_true
  end

  it "should correctly validates REGON number" do
    Ciuchcia::Validations.valid_regon?('016385358').should be_true
    Ciuchcia::Validations.valid_regon?('016385354').should be_false
  end

  it "should correctly validates PESEL number" do
    Ciuchcia::Validations.valid_pesel?('85120701576').should be_true
    Ciuchcia::Validations.valid_pesel?('85120701575').should be_false
    Ciuchcia::Validations.valid_pesel?('82904310630').should be_false
  end
  
  it "shold have list of vulgar words" do
    Ciuchcia::Profanity.bad_word?('pizda').should be_true
  end
  
  it "should correctly check profanity" do
    Ciuchcia::Profanity.check(' ja kurwa eo').should eql('kurwa')
    Ciuchcia::Profanity.check('pierdole skurwysynów').should_not be_false
    Ciuchcia::Profanity.check('k u R w_a').should_not be_false
    Ciuchcia::Profanity.check('co za piiiizzz_da').should_not be_false
  end

  it "should correctly check profanity for utf-8 words" do
    Ciuchcia::Profanity.check('nie ma co pierdolić').should_not be_false
    Ciuchcia::Profanity.check('przypierdolić pizdą').should_not be_false
    Ciuchcia::Profanity.check('pierdolić').should_not be_false
  end

  it "should correctly check no profanity" do
    Ciuchcia::Profanity.check(' wiele kur warszawa ma').should be_false
    Ciuchcia::Profanity.check('kur.warszawa').should be_false    
  end
  
  it "should correctly check profanity no with no polish letters" do
    Ciuchcia::Profanity.check('pierdolic').should_not be_false
    Ciuchcia::Profanity.check('zapierdolic').should_not be_false    
    Ciuchcia::Profanity.check('pierdol0ny').should_not be_false    
  end
  
end

describe ActiveRecord::Base do
  it "should respond to validations" do
    ActiveRecord::Base.should respond_to(:validates_regon)
    ActiveRecord::Base.should respond_to(:validates_nip)
    ActiveRecord::Base.should respond_to(:validates_pesel)
    ActiveRecord::Base.should respond_to(:validates_no_profanity)
  end
end