Ich möchte meine Migrationsdatei testen. Es gibt zwei Tabellen: Ort und Benutzer. Standort has_many Benutzer. Tabellen sind über location_id verbunden. Die Migration fügt einer Spalte "name" in der Tabelle "Location" eine eindeutige Integritätsregel hinzu und löscht doppelte Zeilen mit dem doppelten Standortnamen in der Tabelle "Location", sodass alle Benutzer auf das erste Vorkommen ihres Standorts verweisen.Rails: Testen der Migrationsdatei
Dies ist der Teil meiner Migration File:
def self.remove_duplications
grouped = all.group_by{|location| [location.name] }
grouped.values.each do |duplicates|
# the first one we want to keep right?
first_one = duplicates.shift # or pop for last one
users = User.all
users.each do |user|
if user.location && user.location.name == first_one.name
user.location_id = first_one.id
user.save!
end
end
duplicates.each do |duplicate|
duplicate.destroy!
end
end
end
end
def self.up
Location.remove_duplications
remove_index :locations, column: :name
add_index :locations, :name, unique: true
end
def self.down
remove_index :locations, column: :name # remove unique index
add_index :locations, :name # adds just index, without unique
end
Wie kann ich das testen? Es wird schwierig, es manuell zu testen.
http://blog.carbonfive.com/2011/01/27/start-testing-your-migrations-right-now/ – p4sh4
Ich hatte dies gesehen, aber es verwendet Rspec zum Testen. Aber ich benutze Rspec nicht. Irgendwelche anderen Vorschläge? – Abhishek