1 # frozen_string_literal: true
4 module ElementsTestHelper
11 def with_unchanging_request(*, &)
12 with_request(*) do |headers, changeset|
13 assert_no_difference(affected_models.map { |model| -> { model.count } }) do
14 yield headers, changeset
19 assert_equal 0, changeset.num_changes
20 assert_predicate changeset, :num_type_changes_in_sync?
25 def with_request(user_options = [], changeset_options = [], &)
26 user = create_user_for_request(user_options)
27 changeset = create_changeset_for_request(changeset_options, user)
29 yield bearer_authorization_header(user), changeset
32 def create_user_for_request(options)
33 factories = [:user, :importer_user, :moderator_user, :administrator_user, :super_user]
34 options = [:user, *options] unless factories.include? options[0]
39 def create_changeset_for_request(options, user)
40 options = [:changeset, *options] unless options[0] == :changeset
42 if options in [*positional, { **keywords }]
43 keywords = { :user => user }.merge(keywords)
44 create(*positional, **keywords)
46 create(*options, :user => user)
50 def with_unchanging(*, &)
52 element_version = element.version
53 element_visible = element.visible
58 assert_equal element_version, element.version, "element version changed"
59 assert_equal element_visible, element.visible, "element visibility changed"
63 # update the changeset_id of a node element
64 def update_changeset(xml, changeset_id)
65 xml_attr_rewrite(xml, "changeset", changeset_id)