From 0daa9e86875c70f484447b81e248ac1eeb830f8d Mon Sep 17 00:00:00 2001 From: engineering4good <77828983+engineering4good@users.noreply.github.com> Date: Fri, 16 Apr 2021 20:35:56 +0300 Subject: [PATCH] Rebuild the order after a habit deletion. --- .../uhabits/core/models/sqlite/SQLiteHabitList.kt | 4 +--- .../core/models/sqlite/SQLiteHabitListTest.kt | 14 ++++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitList.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitList.kt index d15a29fe3..87d05b9ca 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitList.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitList.kt @@ -131,9 +131,6 @@ class SQLiteHabitList @Inject constructor(private val modelFactory: ModelFactory @Synchronized override fun remove(h: Habit) { loadRecords() - if (Order.BY_POSITION.equals(list.primaryOrder)) { - reorder(h, list.getByPosition(size() - 1)) - } list.remove(h) val record = repository.find( h.id!! @@ -142,6 +139,7 @@ class SQLiteHabitList @Inject constructor(private val modelFactory: ModelFactory h.originalEntries.clear() repository.remove(record) } + rebuildOrder() observable.notifyListeners() } diff --git a/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitListTest.kt b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitListTest.kt index 787f04845..59ee7a585 100644 --- a/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitListTest.kt +++ b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/models/sqlite/SQLiteHabitListTest.kt @@ -158,12 +158,18 @@ class SQLiteHabitListTest : BaseUnitTest() { habitList.remove(h!!) assertThat(habitList.indexOf(h), equalTo(-1)) - habitList.add(h) - val primaryOrder = habitList.primaryOrder + var rec = repository.find(2L) + assertNull(rec) + rec = repository.find(3L)!! + assertThat(rec.position, equalTo(1)) + } + + @Test + fun testRemove_orderByName() { habitList.primaryOrder = HabitList.Order.BY_NAME_DESC - habitList.remove(h) + val h = habitList.getById(2) + habitList.remove(h!!) assertThat(habitList.indexOf(h), equalTo(-1)) - habitList.primaryOrder = primaryOrder var rec = repository.find(2L) assertNull(rec)