Soy bastante nuevo en las pruebas y los rieles y traté de resolverlo por mi cuenta pero sin suerte.probando atributos anidados de rieles con rspec
que tiene los siguientes modelos
class Picture < ActiveRecord::Base
belongs_to :product
has_attached_file :image
end
class Product < ActiveRecord::Base
has_many :pictures, :dependent => :destroy
accepts_nested_attributes_for :pictures, :reject_if => lambda { |p| p[:image].blank? }, :allow_destroy => true
end
y un controlador que es bastante estándar, supongo ...
def create
@product = Product.new(params[:product])
if @product.save
redirect_to products_path, :notice => "blah."
else
render :action => "new"
end
end
cómo iba a ir sobre y probar esto? He intentado algo como esto, pero no puedo hacerlo funcionar:
describe ProductsController do
it "adds given pictures to the product" do
product = Factory.build(:product)
product.pictures.build(Factory.attributes_for(:picture))
post :create, :product => product.attributes
Product.where(:name => product[:name]).first.pictures.count.should == 1 # or something
end
end
Probablemente tiene algo que ver con la forma en que los atributos se pasan a la acción de crear, pero ¿cómo puedo conseguir que esto funcione? Estoy usando raíles 3.1.rc5 pero dudo que eso tenga algo que ver con por qué no está funcionando ...
o no lo probarías del todo ya que es la funcionalidad básica de los rieles y probablemente esté bien probado para empezar?
Estoy totalmente en desacuerdo con esto. No detectará ninguna regresión si no prueba y no tiene ninguna especificación ni documentación. – phikes
@phikes ¿Viste la parte en la que dije probarlo usando pruebas de integración? – jonnii