]> 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 f53245c1b6bd11b9c51de7b8c35a48daeb2970ea..c4c947a4f8858099f2bdfe1b7e84d3bb8c3a1207 100644 (file)
@@ -1,9 +1,28 @@
-FactoryGirl.define do
+FactoryBot.define do
   factory :relation do
     timestamp Time.now
     visible true
     version 1
 
     changeset
   factory :relation do
     timestamp Time.now
     visible true
     version 1
 
     changeset
+
+    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
   end
 end