⬅️ Back to Table of Contents
📄 index.test.ts
📊 Analysis Summary
Metric |
Count |
🔧 Functions |
4 |
📦 Imports |
11 |
📊 Variables & Constants |
5 |
🟢 Vue Composition API |
1 |
📑 Type Aliases |
1 |
📚 Table of Contents
🛠️ File Location:
📂 packages/core/useTimeAgo/index.test.ts
📦 Imports
Name |
Source |
ComputedRef |
vue |
timestamp |
@vueuse/shared |
afterEach |
vitest |
beforeEach |
vitest |
describe |
vitest |
expect |
vitest |
it |
vitest |
vi |
vitest |
computed |
vue |
shallowRef |
vue |
useTimeAgo |
./index |
Variables & Constants
Name |
Type |
Kind |
Value |
Exported |
UNITS |
{ max: number; value: number; name: string; }[] |
const |
`[ |
|
{ max: 60000, value: 1000, name: 'second' }, |
|
|
|
|
{ max: 2760000, value: 60000, name: 'minute' }, |
|
|
|
|
{ max: 72000000, value: 3600000, name: 'hour' }, |
|
|
|
|
{ max: 518400000, value: 86400000, name: 'day' }, |
|
|
|
|
{ max: 2419200000, value: 604800000, name: 'week' }, |
|
|
|
|
{ max: 28512000000, value: 2592000000, name: 'month' }, |
|
|
|
|
{ max: Number.POSITIVE_INFINITY, value: 31536000000, name: 'year' }, |
|
|
|
|
]` |
✗ |
|
|
|
baseTime |
number |
let/var |
*not shown* |
✗ |
changeTime |
ComputedRef<number> |
let/var |
*not shown* |
✗ |
text |
"past" | "future" |
const |
isFuture ? 'future' : 'past' |
✗ |
nextTime |
number |
const |
getNeededTimeChange('minute', 1, -1) * (isFuture ? 1 : -1) |
✗ |
Vue Composition API
Name |
Type |
Reactive Variables |
Composables |
computed |
computed |
none |
none |
Functions
Code
function fullDateFormatter(value: any) {
return new Date(value).toISOString().slice(0, 10)
}
- Parameters:
value: any
- Return Type:
string
- Calls:
new Date(value).toISOString().slice
getNeededTimeChange(type: TimeUnit, count: number, adjustSecond: number): number
Code
function getNeededTimeChange(type: TimeUnit, count: number, adjustSecond?: number) {
const unit = UNITS.find(i => i.name === type)
return (unit?.value || 0) * count + (adjustSecond || 0) * 1000
}
- Parameters:
type: TimeUnit
count: number
adjustSecond: number
- Return Type:
number
- Calls:
UNITS.find
reset(): void
Code
function reset() {
vi.useFakeTimers()
baseTime = timestamp()
vi.setSystemTime(baseTime)
changeValue.value = 0
changeTime = computed(() => baseTime + changeValue.value)
}
- Return Type:
void
- Calls:
vi.useFakeTimers
timestamp (from @vueuse/shared)
vi.setSystemTime
computed (from vue)
testSecond(isFuture: boolean): void
Code
function testSecond(isFuture: boolean) {
const text = isFuture ? 'future' : 'past'
const nextTime = getNeededTimeChange('minute', 1, -1) * (isFuture ? 1 : -1)
it(`${text}: less than 1 minute`, () => {
changeValue.value = nextTime
expect(useTimeAgo(changeTime).value).toBe('just now')
})
it(`${text}: less than 1 second`, () => {
changeValue.value = getNeededTimeChange('minute', 1, -59.6) * (isFuture ? 1 : -1)
expect(useTimeAgo(changeTime, { showSecond: true }).value).toBe(
isFuture ? 'in 0 second' : '0 second ago',
)
})
it(`${text}: less than 1 minute/ with showSecond`, () => {
changeValue.value = nextTime
expect(useTimeAgo(changeTime, { showSecond: true }).value).toBe(
isFuture ? 'in 59 seconds' : '59 seconds ago',
)
})
it(`${text}: less than 1 minute but more than 10 seconds with showSecond`, () => {
changeValue.value = nextTime
expect(useTimeAgo(changeTime, { showSecond: true, max: 10000 }).value).toBe(fullDateFormatter(changeTime.value))
})
it(`${text}: more than 1 minute`, () => {
changeValue.value = getNeededTimeChange('minute', 1, 1) * (isFuture ? 1 : -1)
expect(useTimeAgo(changeTime, { showSecond: true, max: 'second' }).value).toBe(fullDateFormatter(changeTime.value))
})
}
- Parameters:
isFuture: boolean
- Return Type:
void
- Calls:
getNeededTimeChange
it (from vitest)
expect(useTimeAgo(changeTime).value).toBe
expect(useTimeAgo(changeTime, { showSecond: true }).value).toBe
expect(useTimeAgo(changeTime, { showSecond: true, max: 10000 }).value).toBe
fullDateFormatter
expect(useTimeAgo(changeTime, { showSecond: true, max: 'second' }).value).toBe
Type Aliases
TimeUnit
type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';