2 module ElementsTestHelper
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
17 assert_equal 0, changeset.num_changes
18 assert_predicate changeset, :num_type_changes_in_sync?
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)
27 yield bearer_authorization_header(user), changeset
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]
37 def create_changeset_for_request(options, user)
38 options = [:changeset, *options] unless options[0] == :changeset
40 if options in [*positional, { **keywords }]
41 keywords = { :user => user }.merge(keywords)
42 create(*positional, **keywords)
44 create(*options, :user => user)
48 def with_unchanging(*, &)
50 element_version = element.version
51 element_visible = element.visible
56 assert_equal element_version, element.version, "element version changed"
57 assert_equal element_visible, element.visible, "element visibility changed"
61 # update the changeset_id of a node element
62 def update_changeset(xml, changeset_id)
63 xml_attr_rewrite(xml, "changeset", changeset_id)