Skip to content

Commit f556057

Browse files
Merge pull request #14335 from woocommerce/issue/WOOMOB-871-tax-class-room-crash
Fix crash when tax classes are duplicated
2 parents feb6487 + a9ea208 commit f556057

File tree

2 files changed

+15
-1
lines changed
  • libs/fluxc-plugin/src

2 files changed

+15
-1
lines changed

libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/TaxClassDao.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.wordpress.android.fluxc.persistence.dao
22

33
import androidx.room.Dao
44
import androidx.room.Insert
5+
import androidx.room.OnConflictStrategy
56
import androidx.room.Query
67
import androidx.room.Transaction
78
import org.wordpress.android.fluxc.model.LocalOrRemoteId.LocalId
@@ -31,6 +32,6 @@ internal abstract class TaxClassDao {
3132
)
3233
protected abstract suspend fun deleteAll(siteId: LocalId): Int
3334

34-
@Insert
35+
@Insert(onConflict = OnConflictStrategy.REPLACE)
3536
protected abstract suspend fun insertAll(classes: List<WCTaxClassModel>)
3637
}

libs/fluxc-plugin/src/test/java/org/wordpress/android/fluxc/persistence/dao/TaxClassDaoTest.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,17 @@ class TaxClassDaoTest {
121121
val otherSiteResult = sut.getTaxClasses(LocalId(999))
122122
assertThat(otherSiteResult).containsExactly(differentSiteTaxClass)
123123
}
124+
125+
@Test
126+
fun `when there are duplicate tax classes, replaceAll keeps the last one`() = runTest {
127+
// given
128+
val taxClasses = listOf(sampleTaxClass1, sampleTaxClass2, sampleTaxClass1)
129+
sut.replaceAll(site.localId(), taxClasses)
130+
131+
// when
132+
val result = sut.getTaxClasses(site.localId())
133+
134+
// then
135+
assertThat(result).containsExactlyInAnyOrderElementsOf(listOf(sampleTaxClass1, sampleTaxClass2))
136+
}
124137
}

0 commit comments

Comments
 (0)