2013-04-16 3 views
1

이들은 내 Cashout 모델의 일부 코드입니다. 모든 모델을 rspec으로 테스트 할 수는 있지만 이러한 범위를 테스트하는 방법을 모르겠습니다.rspec으로 범위를 테스트하는 방법

cashout.rb

class Cashout < ActiveRecord::Base 

belongs_to :partner 

scope :add_virtual_columns, select(
    "cashouts.*, 
    (SELECT SUM(c.amount) FROM cashouts c WHERE c.partner_id = cashouts.partner_id) as total_paid_amount, 
    (
     (
     CASE 
     WHEN (SELECT partner_type FROM partners WHERE cashouts.partner_id = partners.id) = 'administrator' 
     THEN 
      (
      CASE 
       WHEN (SELECT SUM(cr.partner_profit) FROM contact_records cr WHERE cr.partner_id in (SELECT id FROM partners WHERE company_id in (SELECT company_id FROM partners WHERE id = cashouts.partner_id))) IS NULL 
       THEN 0 
       ELSE (SELECT SUM(cr.partner_profit + cr.company_profit) FROM contact_records cr WHERE cr.partner_id in (SELECT id FROM partners WHERE company_id in (SELECT company_id FROM partners WHERE id = cashouts.partner_id))) 
      END 
      ) 
     ELSE 
      (
      CASE 
      WHEN (SELECT SUM(cr.partner_profit) FROM contact_records cr WHERE cr.partner_id = cashouts.partner_id) IS NULL 
      THEN 0 
      ELSE (SELECT SUM(cr.partner_profit) FROM contact_records cr WHERE cr.partner_id = cashouts.partner_id) 
      END 
     ) 
     END 
    ) 
     - 
     (SELECT SUM(c.amount) FROM cashouts c WHERE c.partner_id = cashouts.partner_id) 
    ) as unpaid_amount" 
).group('cashouts.id') 
    scope :sort_by_total_paid_amount_asc, order("total_paid_amount ASC") 
    scope :sort_by_total_paid_amount_desc, order("total_paid_amount DESC") 
    scope :sort_by_unpaid_amount_asc, order("unpaid_amount ASC") 
    scope :sort_by_unpaid_amount_desc, order("unpaid_amount DESC") 
end 

당신은 내가 RSpec에와 factorygirl 이러한 범위를 테스트 할 수있는 방법을 알고 계십니까?

답변

0

내 의도는 테스트 데이터를 만들고 범위 결과를 예상 한 것과 비교하는 것입니다. FactoryGirl을 사용하면 amountpartner_id 모델을 덮어 쓰고 PartnerContactRecord 모델을 생성 할 수있는 Cashout 모델을 만들 수 있습니다. 후자의 범위에 대한

, 당신은

Cashout.sort_by_total_paid_amount_asc.to_sql.should == Cashout.order('total_paid_amount ASC').to_sql 
같은 뭔가를 할 수
관련 문제