Ciao a tutti.
Stavo provando a fare alcuni piccoli test su un piccolo esercizio che
sto usando per imparare il linguaggio.
Volevo verificare l’univocità di un particolare attributo che, nel mio
modello, ho dichiarato come:
validates_uniqueness_of :Prodotto
Per fare questo ho creato una piccolo file (prodottis.yml) nella
cartella fixtures contenente il seguente codice:
ruby_book:
Prodotto: speriamo
Descrizione: un libro di fave
URLimmagine: immagine.jpg
prezzo: 1234
prova:
Prodotto: speriamo
Descrizione: un libro di fave
URLimmagine: immagine.jpg
prezzo: 1234
dopodichè ho editato il file di test (prodotti_test.rb) in questo modo:
fixtures :prodottis
test “unique title” do
product = Prodotti.new(:Prodotto => prodottis(:ruby_book).Prodotto,
:Descrizione => “yyy”, :URLimmagine => “zzz.jpg”)
assert !product.save
assert_equal “has already been taken”, product.errors.on(:Prodotto)
prod = Prodotti.new(:Prodotto => prodottis(:prova).Prodotto,
:Descrizione => “yyy”, :URLimmagine => “zzz.jpg”)
assert !prod.save
assert_equal “has already been taken”, prod.errors.on(:Prodotto)
end
Hai verificato anche da console? E’ il test più veloce.
Permettimi un consiglio che non tocca il quesito: il model dovrebbe
essere singolare e se vuoi usare i nomi in italiano puoi sempre
modificare il file inflections per evitare quegli obrobri di plurali
anglosassioni su parole italiane
config\initializers\inflections.rb
Hai verificato anche da console? E’ il test più veloce.
Permettimi un consiglio che non tocca il quesito: il model dovrebbe
essere singolare e se vuoi usare i nomi in italiano puoi sempre
modificare il file inflections per evitare quegli obrobri di plurali
anglosassioni su parole italiane
config\initializers\inflections.rb
Ciao
Lo so…solo che era il mio primo model e non sapevo della storia dei
plurali
Puoi aiutarmi sul test?
quindi le cose non tornano di nuovo
Inoltre controllando le date di creazione delle entry sembra che,
nonostante la failure, all’interno del DB test vengano comunque create
due nuove entry con lo stesso campo “Prodotto”.
Il product.save dovrebbe ritornare true, probabilmente c’è qualche altro
errore e questo il motivo per cui è ininfluente commentare il vincolo
nel model. Controlla il messaggio di errore in product.errors
Il product.save dovrebbe ritornare true, probabilmente c’è qualche altro
errore e questo il motivo per cui è ininfluente commentare il vincolo
nel model. Controlla il messaggio di errore in product.errors
La prima volta non dovrebbe esserci quel prodotto quindi dovrebbe
inserirlo, la seconda volta invece dovrebbe darti false …altrimenti
non ho capito il senso del tuo test
La prima volta non dovrebbe esserci quel prodotto quindi dovrebbe
inserirlo, la seconda volta invece dovrebbe darti false …altrimenti
non ho capito il senso del tuo test