Skip to content

Commit 2ce1e75

Browse files
Add unit tests
1 parent e92f74a commit 2ce1e75

File tree

2 files changed

+74
-8
lines changed

2 files changed

+74
-8
lines changed

WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/OrderTestUtils.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ object OrderTestUtils {
213213
" \"subtotal_tax\":\"0.00\",\n" +
214214
" \"total\":\"10.00\",\n" +
215215
" \"total_tax\":\"0.00\",\n" +
216-
" \"taxes\":[],\n" +
216+
" \"taxes\":[{\"id\":1, \"total\":2}, {\"id\":2, \"total\":5}],\n" +
217217
" \"meta_data\":[],\n" +
218218
" \"sku\":null,\n" +
219219
" \"price\":10\n" +
@@ -241,7 +241,7 @@ object OrderTestUtils {
241241
" \"instance_id\":\"0\",\n" +
242242
" \"total\":\"30.00\",\n" +
243243
" \"total_tax\":\"0.00\",\n" +
244-
" \"taxes\":[],\n" +
244+
" \"taxes\":[{\"id\":1, \"total\":2}, {\"id\":2, \"total\":5}],\n" +
245245
" \"meta_data\":[]}]",
246246
)
247247
}
@@ -258,7 +258,7 @@ object OrderTestUtils {
258258
" \"subtotal_tax\":\"0.00\",\n" +
259259
" \"total\":\"10.00\",\n" +
260260
" \"total_tax\":\"0.00\",\n" +
261-
" \"taxes\":[],\n" +
261+
" \"taxes\":[{\"id\":1, \"total\":2}, {\"id\":2, \"total\":5}],\n" +
262262
" \"meta_data\":[],\n" +
263263
" \"sku\":null,\n" +
264264
" \"price\":10\n" +
@@ -305,7 +305,7 @@ object OrderTestUtils {
305305
" \"subtotal_tax\":\"0.00\",\n" +
306306
" \"total\":\"10.00\",\n" +
307307
" \"total_tax\":\"0.00\",\n" +
308-
" \"taxes\":[],\n" +
308+
" \"taxes\":[{\"id\":1, \"total\":2}, {\"id\":2, \"total\":5}],\n" +
309309
" \"meta_data\":[],\n" +
310310
" \"sku\":null,\n" +
311311
" \"price\":10\n" +
@@ -319,7 +319,7 @@ object OrderTestUtils {
319319
" \"instance_id\":\"0\",\n" +
320320
" \"total\":\"30.00\",\n" +
321321
" \"total_tax\":\"0.00\",\n" +
322-
" \"taxes\":[],\n" +
322+
" \"taxes\":[{\"id\":1, \"total\":2}, {\"id\":2, \"total\":5}],\n" +
323323
" \"meta_data\":[]},\n" +
324324
"{ " +
325325
"\"id\":120,\n" +
@@ -328,7 +328,7 @@ object OrderTestUtils {
328328
" \"instance_id\":\"0\",\n" +
329329
" \"total\":\"20.00\",\n" +
330330
" \"total_tax\":\"0.00\",\n" +
331-
" \"taxes\":[],\n" +
331+
" \"taxes\":[{\"id\":1, \"total\":3}, {\"id\":2, \"total\":4}],\n" +
332332
" \"meta_data\":[]\n" +
333333
"}]",
334334
)
@@ -377,7 +377,8 @@ object OrderTestUtils {
377377
fun generateTestOrderItems(
378378
count: Int = 1,
379379
productId: Long = -1,
380-
quantity: Float = 1F
380+
quantity: Float = 1F,
381+
taxes: (Int) -> List<Order.LineTaxEntry> = { emptyList() }
381382
): List<Item> {
382383
val list = mutableListOf<Item>()
383384
for (i in 1..count) {
@@ -394,7 +395,8 @@ object OrderTestUtils {
394395
totalTax = BigDecimal.ZERO,
395396
total = BigDecimal("10"),
396397
variationId = 0,
397-
attributesList = emptyList()
398+
attributesList = emptyList(),
399+
taxes = taxes(i),
398400
)
399401
)
400402
}

WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/refunds/IssueRefundViewModelTest.kt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.woocommerce.android.ui.orders.OrderTestUtils
1515
import com.woocommerce.android.ui.orders.details.OrderDetailRepository
1616
import com.woocommerce.android.ui.payments.refunds.IssueRefundViewModel.RefundByItemsViewState
1717
import com.woocommerce.android.util.CurrencyFormatter
18+
import com.woocommerce.android.util.getOrAwaitValue
1819
import com.woocommerce.android.viewmodel.BaseUnitTest
1920
import com.woocommerce.android.viewmodel.MultiLiveEvent
2021
import com.woocommerce.android.viewmodel.ResourceProvider
@@ -1206,4 +1207,67 @@ class IssueRefundViewModelTest : BaseUnitTest() {
12061207
assertThat(viewModel.refundItems.value!![1].maxQuantity).isEqualTo(2.0F)
12071208
assertThat(viewModel.refundItems.value!![2].maxQuantity).isEqualTo(2.0F)
12081209
}
1210+
1211+
@Test
1212+
fun `when preparing refund for products, then pass correct tax rates`() {
1213+
testBlocking {
1214+
val order = OrderTestUtils.generateOrderWithOneShipping()
1215+
whenever(orderStore.getOrderByIdAndSite(any(), any())).thenReturn(order)
1216+
1217+
initViewModel()
1218+
viewModel.onSelectButtonTapped()
1219+
1220+
val items = viewModel.refundItems.getOrAwaitValue()
1221+
items.map { it.toDataModel() }.forEach { refundItem ->
1222+
val item = order.getLineItemList().first { it.id == refundItem.itemId }
1223+
assertThat(refundItem.refundTax).allMatch { refundTaxItem ->
1224+
val tax = item.taxes!!.first { it.rateId == refundTaxItem.taxRateId }
1225+
tax.rateId == refundTaxItem.taxRateId &&
1226+
tax.total.isEqualTo(refundTaxItem.refundTotal)
1227+
}
1228+
}
1229+
}
1230+
}
1231+
1232+
@Test
1233+
fun `when preparing refund for shipping, then pass correct tax rates`() {
1234+
testBlocking {
1235+
val order = OrderTestUtils.generateOrderWithOneShipping()
1236+
whenever(orderStore.getOrderByIdAndSite(any(), any())).thenReturn(order)
1237+
1238+
initViewModel()
1239+
viewModel.onSelectButtonTapped()
1240+
1241+
val shippingLines = viewModel.refundShippingLines.getOrAwaitValue()
1242+
shippingLines.map { it.toDataModel() }.forEach { refundItem ->
1243+
val shippingLine = order.getShippingLineList().first { it.id == refundItem.itemId }
1244+
assertThat(refundItem.refundTax).allMatch { refundTaxItem ->
1245+
val tax = shippingLine.taxes!!.first { it.rateId == refundTaxItem.taxRateId }
1246+
tax.rateId == refundTaxItem.taxRateId &&
1247+
tax.total.isEqualTo(refundTaxItem.refundTotal)
1248+
}
1249+
}
1250+
}
1251+
}
1252+
1253+
@Test
1254+
fun `when preparing refund for fees, then pass correct tax rates`() {
1255+
testBlocking {
1256+
val order = OrderTestUtils.generateOrderWithOneShipping()
1257+
whenever(orderStore.getOrderByIdAndSite(any(), any())).thenReturn(order)
1258+
1259+
initViewModel()
1260+
viewModel.onSelectButtonTapped()
1261+
1262+
val feeLines = viewModel.refundFeeLines.getOrAwaitValue()
1263+
feeLines.map { it.toDataModel() }.forEach { refundItem ->
1264+
val feeLine = order.getFeeLineList().first { it.id == refundItem.itemId }
1265+
assertThat(refundItem.refundTax).allMatch { refundTaxItem ->
1266+
val tax = feeLine.taxes!!.first { it.rateId == refundTaxItem.taxRateId }
1267+
tax.rateId == refundTaxItem.taxRateId &&
1268+
tax.total.isEqualTo(refundTaxItem.refundTotal)
1269+
}
1270+
}
1271+
}
1272+
}
12091273
}

0 commit comments

Comments
 (0)