From 8f0f94d28116581380d8594473ea2081aa68c0c9 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Fri, 8 Aug 2025 18:01:58 +0300 Subject: [PATCH] Add changeset counters per element type --- app/models/changeset.rb | 4 ++ test/models/changeset_test.rb | 108 ++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) diff --git a/app/models/changeset.rb b/app/models/changeset.rb index b2ecb48db..fa1bd7e9f 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -241,6 +241,10 @@ class Changeset < ApplicationRecord def num_modified_elements = num_modified_nodes + num_modified_ways + num_modified_relations def num_deleted_elements = num_deleted_nodes + num_deleted_ways + num_deleted_relations + def num_changed_nodes = num_created_nodes + num_modified_nodes + num_deleted_nodes + def num_changed_ways = num_created_ways + num_modified_ways + num_deleted_ways + def num_changed_relations = num_created_relations + num_modified_relations + num_deleted_relations + def num_type_changes_in_sync? num_changes == num_created_elements + num_modified_elements + num_deleted_elements end diff --git a/test/models/changeset_test.rb b/test/models/changeset_test.rb index 6a6c21dbe..fa2617463 100644 --- a/test/models/changeset_test.rb +++ b/test/models/changeset_test.rb @@ -33,41 +33,71 @@ class ChangesetTest < ActiveSupport::TestCase def test_num_type_changes_in_sync_for_new_changeset changeset = create(:changeset) + assert_equal 0, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_not_in_sync_for_changeset_without_type_changes changeset = create(:changeset, :num_changes => 1) + assert_equal 0, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_not_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_created_nodes changeset = create(:changeset, :num_changes => 1, :num_created_nodes => 1) + assert_equal 1, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 1, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_modified_nodes changeset = create(:changeset, :num_changes => 1, :num_modified_nodes => 1) + assert_equal 0, changeset.num_created_elements assert_equal 1, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 1, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_deleted_nodes changeset = create(:changeset, :num_changes => 1, :num_deleted_nodes => 1) + assert_equal 0, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 1, changeset.num_deleted_elements + + assert_equal 1, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end @@ -76,33 +106,57 @@ class ChangesetTest < ActiveSupport::TestCase :num_created_nodes => 3, :num_modified_nodes => 2, :num_deleted_nodes => 1) + assert_equal 3, changeset.num_created_elements assert_equal 2, changeset.num_modified_elements assert_equal 1, changeset.num_deleted_elements + + assert_equal 3 + 2 + 1, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_created_ways changeset = create(:changeset, :num_changes => 1, :num_created_ways => 1) + assert_equal 1, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 1, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_modified_ways changeset = create(:changeset, :num_changes => 1, :num_modified_ways => 1) + assert_equal 0, changeset.num_created_elements assert_equal 1, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 1, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_deleted_ways changeset = create(:changeset, :num_changes => 1, :num_deleted_ways => 1) + assert_equal 0, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 1, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 1, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end @@ -111,33 +165,57 @@ class ChangesetTest < ActiveSupport::TestCase :num_created_ways => 3, :num_modified_ways => 2, :num_deleted_ways => 1) + assert_equal 3, changeset.num_created_elements assert_equal 2, changeset.num_modified_elements assert_equal 1, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 3 + 2 + 1, changeset.num_changed_ways + assert_equal 0, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_created_relations changeset = create(:changeset, :num_changes => 1, :num_created_relations => 1) + assert_equal 1, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 1, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_modified_relations changeset = create(:changeset, :num_changes => 1, :num_modified_relations => 1) + assert_equal 0, changeset.num_created_elements assert_equal 1, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 1, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end def test_num_type_changes_in_sync_for_changeset_with_deleted_relations changeset = create(:changeset, :num_changes => 1, :num_deleted_relations => 1) + assert_equal 0, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 1, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 1, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end @@ -146,9 +224,15 @@ class ChangesetTest < ActiveSupport::TestCase :num_created_relations => 3, :num_modified_relations => 2, :num_deleted_relations => 1) + assert_equal 3, changeset.num_created_elements assert_equal 2, changeset.num_modified_elements assert_equal 1, changeset.num_deleted_elements + + assert_equal 0, changeset.num_changed_nodes + assert_equal 0, changeset.num_changed_ways + assert_equal 3 + 2 + 1, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end @@ -157,9 +241,15 @@ class ChangesetTest < ActiveSupport::TestCase :num_created_nodes => 3, :num_created_ways => 2, :num_created_relations => 1) + assert_equal 3 + 2 + 1, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 3, changeset.num_changed_nodes + assert_equal 2, changeset.num_changed_ways + assert_equal 1, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end @@ -168,9 +258,15 @@ class ChangesetTest < ActiveSupport::TestCase :num_modified_nodes => 3, :num_modified_ways => 2, :num_modified_relations => 1) + assert_equal 0, changeset.num_created_elements assert_equal 3 + 2 + 1, changeset.num_modified_elements assert_equal 0, changeset.num_deleted_elements + + assert_equal 3, changeset.num_changed_nodes + assert_equal 2, changeset.num_changed_ways + assert_equal 1, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end @@ -179,9 +275,15 @@ class ChangesetTest < ActiveSupport::TestCase :num_deleted_nodes => 3, :num_deleted_ways => 2, :num_deleted_relations => 1) + assert_equal 0, changeset.num_created_elements assert_equal 0, changeset.num_modified_elements assert_equal 3 + 2 + 1, changeset.num_deleted_elements + + assert_equal 3, changeset.num_changed_nodes + assert_equal 2, changeset.num_changed_ways + assert_equal 1, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end @@ -196,9 +298,15 @@ class ChangesetTest < ActiveSupport::TestCase :num_deleted_nodes => 13, :num_deleted_ways => 12, :num_deleted_relations => 11) + assert_equal 33 + 32 + 31, changeset.num_created_elements assert_equal 23 + 22 + 21, changeset.num_modified_elements assert_equal 13 + 12 + 11, changeset.num_deleted_elements + + assert_equal 33 + 23 + 13, changeset.num_changed_nodes + assert_equal 32 + 22 + 12, changeset.num_changed_ways + assert_equal 31 + 21 + 11, changeset.num_changed_relations + assert_predicate changeset, :num_type_changes_in_sync? end -- 2.39.5