我正在使用此代码生成csv导出文件,该代码与报告类
相关class Reports::Donors < Reports::Report
def initialize(args = {})
super(args)
@campaign = args[:report]
@campaign.report.data[:donations][:tiers].each do |contribution_tier|
@data = []
tmp_arr = []
tmp_arr << ActionController::Base.helpers.number_to_currency(contribution_tier.amount_in_dollars)
@data << tmp_arr
@data << ['Date','User Name','Amount in dollars','Address','Email','State']
contribution_tier.contributions.sort{|a,b| a.amount_in_dollars <=> b.amount_in_dollars}.each do |c|
tmp_arr = []
tmp_arr << c.created_at
tmp_arr << c.user.full_name
tmp_arr << ActionController::Base.helpers.number_to_currency(c.amount_in_dollars)
tmp_arr << c.user.address
tmp_arr << c.user.email
tmp_arr << c.state.titleize
@data << tmp_arr
end
if @campaign.report.data[:donations][:non_tier][:sum] > 0
@campaign.campaign.open_contributions.sort{|a,b| a.amount_in_dollars <=> b.amount_in_dollars}.each do |c|
tmp_arr = []
tmp_arr << c.created_at
tmp_arr << c.user.full_name
tmp_arr << ActionController::Base.helpers.number_to_currency(c.amount_in_dollars)
tmp_arr << c.user.address
tmp_arr << c.user.email
tmp_arr << c.state.titleize
@data << tmp_arr
end
end
end
end
端
我需要为此编写一个规范,但我不知道从哪开始。
答案 0 :(得分:1)
FWIW - 后来看一个方法并试图提出一个规范会导致沮丧,内疚和狂欢。如果您使用TDD创建它,它将被分解为易于验证的小方法。
提示:将代码分解为小方法。测试那些方法。