]> git.openstreetmap.org Git - rails.git/blob - test/controllers/api/elements_test_helper.rb
Move breadcrumbs version click to numbered pagination js module
[rails.git] / test / controllers / api / elements_test_helper.rb
1 module Api
2   module ElementsTestHelper
3     private
4
5     def affected_models
6       []
7     end
8
9     def with_unchanging_request(*, &)
10       with_request(*) do |headers, changeset|
11         assert_no_difference(affected_models.map { |model| -> { model.count } }) do
12           yield headers, changeset
13         end
14
15         if changeset
16           changeset.reload
17           assert_equal 0, changeset.num_changes
18           assert_predicate changeset, :num_type_changes_in_sync?
19         end
20       end
21     end
22
23     def with_request(user_options = [], changeset_options = [], &)
24       user = create_user_for_request(user_options)
25       changeset = create_changeset_for_request(changeset_options, user)
26
27       yield bearer_authorization_header(user), changeset
28     end
29
30     def create_user_for_request(options)
31       factories = [:user, :importer_user, :moderator_user, :administrator_user, :super_user]
32       options = [:user, *options] unless factories.include? options[0]
33
34       create(*options)
35     end
36
37     def create_changeset_for_request(options, user)
38       options = [:changeset, *options] unless options[0] == :changeset
39
40       if options in [*positional, { **keywords }]
41         keywords = { :user => user }.merge(keywords)
42         create(*positional, **keywords)
43       else
44         create(*options, :user => user)
45       end
46     end
47
48     def with_unchanging(*, &)
49       element = create(*)
50       element_version = element.version
51       element_visible = element.visible
52
53       yield element
54
55       element.reload
56       assert_equal element_version, element.version, "element version changed"
57       assert_equal element_visible, element.visible, "element visibility changed"
58     end
59
60     ##
61     # update the changeset_id of a node element
62     def update_changeset(xml, changeset_id)
63       xml_attr_rewrite(xml, "changeset", changeset_id)
64     end
65   end
66 end