From fb3a43fa352d197b3b4936f72ad7baa1f2eb38d0 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Thu, 10 Jul 2025 17:14:37 +0300 Subject: [PATCH] Add total created/modified/deleted counts to changesets --- app/models/changeset.rb | 16 +++++++++-- test/models/changeset_test.rb | 54 +++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 3 deletions(-) diff --git a/app/models/changeset.rb b/app/models/changeset.rb index a8f299ef9..1928621b5 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -237,9 +237,19 @@ class Changeset < ApplicationRecord ) end + def num_created_elements + num_created_nodes + num_created_ways + num_created_relations + end + + def num_modified_elements + num_modified_nodes + num_modified_ways + num_modified_relations + end + + def num_deleted_elements + num_deleted_nodes + num_deleted_ways + num_deleted_relations + end + def num_type_changes_in_sync? - num_changes == num_created_nodes + num_modified_nodes + num_deleted_nodes + - num_created_ways + num_modified_ways + num_deleted_ways + - num_created_relations + num_modified_relations + num_deleted_relations + num_changes == num_created_elements + num_modified_elements + num_deleted_elements end end diff --git a/test/models/changeset_test.rb b/test/models/changeset_test.rb index 5d4a1b41e..6a6c21dbe 100644 --- a/test/models/changeset_test.rb +++ b/test/models/changeset_test.rb @@ -33,26 +33,41 @@ 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_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_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_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_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_predicate changeset, :num_type_changes_in_sync? end @@ -61,21 +76,33 @@ 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_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_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_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_predicate changeset, :num_type_changes_in_sync? end @@ -84,21 +111,33 @@ 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_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_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_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_predicate changeset, :num_type_changes_in_sync? end @@ -107,6 +146,9 @@ 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_predicate changeset, :num_type_changes_in_sync? end @@ -115,6 +157,9 @@ 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_predicate changeset, :num_type_changes_in_sync? end @@ -123,6 +168,9 @@ 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_predicate changeset, :num_type_changes_in_sync? end @@ -131,6 +179,9 @@ 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_predicate changeset, :num_type_changes_in_sync? end @@ -145,6 +196,9 @@ 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_predicate changeset, :num_type_changes_in_sync? end -- 2.39.5