]> git.openstreetmap.org Git - rails.git/blobdiff - test/factories/relation.rb
use a controller method to handle cancan denials
[rails.git] / test / factories / relation.rb
index 1631b92de2d92efe1a2dee11776952b3707cab89..c4c947a4f8858099f2bdfe1b7e84d3bb8c3a1207 100644 (file)
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
   factory :relation do
     timestamp Time.now
     visible true
@@ -9,5 +9,20 @@ FactoryGirl.define do
     trait :deleted do
       visible false
     end
+
+    trait :with_history do
+      after(:create) do |relation, _evaluator|
+        (1..relation.version).each do |n|
+          create(:old_relation, :relation_id => relation.id, :version => n, :changeset => relation.changeset)
+        end
+
+        # For deleted relations, make sure the most recent old_relation is also deleted.
+        if relation.visible == false
+          latest = relation.old_relations.find_by(:version => relation.version)
+          latest.visible = false
+          latest.save
+        end
+      end
+    end
   end
 end