mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 09:56:05 +00:00
error correction
This commit is contained in:
parent
90a2a31513
commit
9fe876e163
@ -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()
|
||||
})
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user