Пожалуйста, помогите. Я пытаюсь написать модульный тест для метода в моей модели. Он продолжает давать мне следующую ошибку:
{1) Ошибка:
test_Total_for_a_given_date_range_for_Campaigns (LetterTest):
Ошибка типа: невозможно преобразовать ActiveSupport :: Duration в строку
c: /Users/Kay/rails-app/CS5942/app/models/letter.rb: 19: в +'
c:/Users/Kay/rails-app/CS5942/app/models/letter.rb:19:in
tribe_total_on '
test / unit / letter_test.rb: 17: в "блоке"}
Вот что у меня есть в моем тестовом файле:
test "Total for a given date range for Campaigns" do
end_date = (Date.today + 1.day).to_date.strftime('%Y-%m-%d')
expected = Letter.where("letter_campaign_id = '1' and created_at between '#{ (Date.today - 1.day).to_date.strftime('%Y-%m-%d')}' and #{end_date}").count
data = Letter.tribe_total_on( 1 , (Date.today - 1.day).to_date.strftime('%Y-%m-%d') , (Date.today).to_date.strftime('%Y-%m-%d'))
assert_equal expected, data
end
Кажется, есть проблема со знаком плюс. Я был бы очень рад, если бы я мог найти решение для этого. Спасибо.
Это метод tribe_total_on:
def self.tribe_total_on(tribe, start_date, end_date)
#Letter.connection.execute("SELECT COUNT(id) FROM letters WHERE letter_campaign_id = #{tribe} AND created_at BETWEEN '#{start_date.to_date.strftime('%Y-%m-%d')}' and '#{end_date.to_date.strftime('%Y-%m-%d')}'")[0][0]
end_date = end_date + 1.day #This is line 19 ...Had to include the one day to accomodate dates like 2011-06-05 01:02:03
Letter.where("letter_campaign_id = #{tribe} AND created_at between ? and ?", start_date.to_date, end_date.to_date).count
end