error correction

This commit is contained in:
einhornimmond 2025-04-27 19:20:25 +02:00
parent 90a2a31513
commit 9fe876e163
2 changed files with 53 additions and 55 deletions

View File

@ -18,16 +18,17 @@ vi.mock('@/composables/useToast', () => ({
const mockRefetchFn = vi.fn()
const mockMutateFn = vi.fn()
let onErrorHandler
let onResultHandler
const mockQueryResult = ref(null)
const data = ref({})
const loading = ref(false)
vi.mock('@vue/apollo-composable', () => ({
useQuery: vi.fn(() => ({
data,
refetch: mockRefetchFn,
result: mockQueryResult,
onResult: vi.fn(),
onResult: (handler) => {
onResultHandler = handler
},
onError: (handler) => {
onErrorHandler = handler
},
@ -36,7 +37,9 @@ vi.mock('@vue/apollo-composable', () => ({
useLazyQuery: vi.fn(() => ({
refetch: mockRefetchFn,
result: mockQueryResult,
onResult: vi.fn(),
onResult: (handler) => {
onResultHandler = handler
},
onError: (handler) => {
onErrorHandler = handler
},
@ -118,17 +121,6 @@ describe('DashboardLayout', () => {
beforeEach(() => {
vi.useFakeTimers()
data.value = {
communityStatistics: {
totalUsers: 3113,
activeUsers: 1057,
deletedUsers: 35,
totalGradidoCreated: '4083774.05000000000000000000',
totalGradidoDecayed: '-1062639.13634129622923372197',
totalGradidoAvailable: '2513565.869444365732411569',
totalGradidoUnbookedDecayed: '-500474.6738366222166261272',
},
}
wrapper = createWrapper()
})
@ -142,9 +134,6 @@ describe('DashboardLayout', () => {
})
describe('at first', () => {
beforeEach(() => {
data.value = null
})
it('renders a component Skeleton', () => {
expect(wrapper.findComponent({ name: 'SkeletonOverview' }).exists()).toBe(true)
})
@ -159,17 +148,19 @@ describe('DashboardLayout', () => {
describe('update transactions', () => {
beforeEach(async () => {
data.value = {
transactionList: {
balance: {
balanceGDT: '100',
count: 4,
linkCount: 8,
balance: '1450',
onResultHandler({
data: {
transactionList: {
balance: {
balanceGDT: '100',
count: 4,
linkCount: 8,
balance: '1450',
},
transactions: ['transaction1', 'transaction2', 'transaction3', 'transaction4'],
},
transactions: ['transaction1', 'transaction2', 'transaction3', 'transaction4'],
},
}
})
await wrapper.vm.updateTransactions({ currentPage: 2, pageSize: 5 })
await nextTick() // Ensure all promises are resolved
@ -207,10 +198,10 @@ describe('DashboardLayout', () => {
describe('update transactions returns error', () => {
beforeEach(async () => {
wrapper.vm.skeleton = false
await wrapper
.findComponent({ ref: 'router-view' })
.vm.$emit('update-transactions', { currentPage: 2, pageSize: 5 })
loading.value = true
await nextTick()
})

View File

@ -187,7 +187,7 @@
</template>
<script setup>
import { computed } from 'vue'
import { onMounted, ref } from 'vue'
import { useStore } from 'vuex'
import { useRouter } from 'vue-router'
import { useQuery, useMutation } from '@vue/apollo-composable'
@ -214,10 +214,9 @@ import { useAppToast } from '@/composables/useToast'
const store = useStore()
const router = useRouter()
const {
data: transactionQueryData,
refetch: useRefetchTransactionsQuery,
loading: transactionQueryLoading,
onError,
onResult,
} = useQuery(
transactionsUserCountQuery,
{ currentPage: 1, pageSize: 10, order: 'DESC' },
@ -226,31 +225,20 @@ const {
const { mutate: useLogoutMutation } = useMutation(logout)
const { toastError } = useAppToast()
const pending = computed(() => {
return transactionQueryLoading.value
})
const balance = ref(0)
const GdtBalance = ref(0)
const transactions = ref([])
const transactionCount = ref(0)
const transactionLinkCount = ref(0)
const pending = ref(true)
const skeleton = ref(true)
const totalUsers = ref(null)
const totalUsers = computed(() => {
return transactionQueryData?.value?.communityStatistics?.totalUsers || null
})
const transactions = computed(() => {
return transactionQueryData?.value?.transactionList?.transactions || []
})
const transactionCount = computed(() => {
return transactionQueryData?.value?.transactionList?.balance?.count || 0
})
const transactionLinkCount = computed(() => {
return transactionQueryData?.value?.transactionList?.balance?.linkCount || 0
})
const GdtBalance = computed(() => {
const balanceGdt = transactionQueryData?.value?.transactionList?.balance?.balanceGDT || 0
return balanceGdt === null ? 0 : Number(balanceGdt)
})
const balance = computed(() => {
return Number(transactionQueryData?.value?.transactionList?.balance?.balance) || 0
})
const skeleton = computed(() => {
return pending.value || totalUsers.value === null
// only error correction, normally skeleton should be visible less than 1500ms
onMounted(() => {
setTimeout(() => {
skeleton.value = false
}, 1500)
})
const logoutUser = async () => {
@ -265,9 +253,28 @@ const logoutUser = async () => {
}
const updateTransactions = ({ currentPage, pageSize }) => {
pending.value = true
useRefetchTransactionsQuery({ currentPage, pageSize })
}
onResult((value) => {
if (value && value.data) {
if (value.data.transactionList) {
const tr = value.data.transactionList
GdtBalance.value = tr.balance?.balanceGDT === null ? 0 : Number(tr.balance?.balanceGDT)
transactions.value = tr.transactions || []
balance.value = Number(tr.balance?.balance) || 0
transactionCount.value = tr.balance?.count || 0
transactionLinkCount.value = tr.balance?.linkCount || 0
}
if (value.data.communityStatistics) {
totalUsers.value = value.data.communityStatistics.totalUsers || 0
}
}
pending.value = false
skeleton.value = false
})
onError((error) => {
transactionCount.value = -1
toastError(error.message)