2012-01-25 3 views
4

J'ai une bannière, avec un fichier joint, en utilisant un trombone. Paperclip va créer des « dérivés » pour une image téléchargée, en utilisant le paramètre « styles »:Test des styles d'image avec un trombone avec Rspec

class Banner < ActiveRecord::Base 
    has_attached_file :image, 
        :styles => {:medium => "300x300>", 
           :thumb => "100x100>"} 
end 

Je veux tester cette génération de attached_file, de préférence sans tester l'ensemble aller-retour sur un disque et ainsi de suite. Je pourrais créer une bannière, attacher un fichier et ensuite regarder le système de fichiers si un certain fichier avec certaines dimensions est créé, mais cela va à l'encontre de mon idée de tester une partie focalisée, sans tester la pile entière.

Comment puis-je tester si le fichier joint :image a certains styles dans Paperclip?

Répondre

1

Tout ce que la méthode has_attached_file fait est d'ajouter les définitions passées au modèle. La génération est faite par trombone et ne devrait pas avoir besoin d'être testée.

Source: https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip.rb#L174

Cependant, vous pouvez vérifier que les définitions ont été créées en utilisant correctement la méthode attachment_definitions. Quelque chose comme ceci:

it "has correct image style geometry" do 
    Banner.attachment_definitions[:data][:styles][:medium][:geometry].should == "300x300>" 
    Banner.attachment_definitions[:data][:styles][:thumb][:geometry].should == "100x100>" 
end 
+0

Merci. Je suis conscient que je n'ai pas besoin de tester un trombone; mais quand BDD-ing, je voudrais écrire un test comme «ça» devrait avoir une vignette «faire» d'abord, puis l'implémenter. – berkes

+1

J'avais des attachements_definitions vides [: data] .So je l'ai eu à travailler en utilisant attachment.attachment_definitions [: attached_file] [: styles] [: small] construction. –