Я пишу свое первое приложение Rails 'Store' и сталкиваюсь с чем-то странным в одном из моих тестов. Я пытаюсь протестировать метод add_product на cart.rb:
class Cart < ActiveRecord::Base
has_many :line_items, :dependent => :destroy
def add_product(product)
current_item = line_items.find_by_product_id(product.id)
if current_item
current_item.quantity += 1
else
current_item = line_items.build(:product_id => product.id, :price => product.price)
end
current_item
end
def total_price
line_items.to_a.sum { |item| item.total_price }
end
end
Я проверяю, что добавление одного и того же продукта в корзину в два раза увеличивает количество, а не добавляет новую строку (line_item). Вот тест:
test "line item quantity is increased when duplicate product is added" do
cart = carts(:one)
ruby_book = products(:ruby)
cart.add_product(ruby_book)
cart.save
assert_equal 1, cart.line_items(ruby_book).to_a.count
cart.add_product(ruby_book)
cart.save
assert_equal 1, cart.line_items(ruby_book).to_a.count
assert_equal 2, cart.line_items(ruby_book).first.quantity # fail!
end
Я получаю ошибку при последнем утверждении. Количество равно 1, где я ожидаю 2. Я проверил файл test.log, и для моего экземпляра sqlite3 никогда не запускалось обновление ... Я могу добавить журнал или файлы Fixtures, если это необходимо, но я уверен, что это такой вопрос новичка, что он не понадобится!
Заранее спасибо,
Stu