Bluesky app fork with some witchin' additions 馃挮 witchsky.app
bluesky fork client
119
fork

Configure Feed

Select the types of activity you want to include in your feed.

at a876aae44ea07494ebea9727350aa060b81f317b 213 lines 4.9 kB view raw
1import {describe, expect, it} from '@jest/globals' 2import {addDays, subDays, subHours, subMinutes, subSeconds} from 'date-fns' 3 4import {dateDiff} from '../useTimeAgo' 5 6const base = new Date('2024-06-17T00:00:00Z') 7 8describe('dateDiff', () => { 9 it(`works with numbers`, () => { 10 const earlier = subDays(base, 3) 11 expect(dateDiff(earlier, Number(base))).toEqual({ 12 value: 3, 13 unit: 'day', 14 earlier, 15 later: base, 16 }) 17 }) 18 it(`works with strings`, () => { 19 const earlier = subDays(base, 3) 20 expect(dateDiff(earlier, base.toString())).toEqual({ 21 value: 3, 22 unit: 'day', 23 earlier, 24 later: base, 25 }) 26 }) 27 it(`works with dates`, () => { 28 const earlier = subDays(base, 3) 29 expect(dateDiff(earlier, base)).toEqual({ 30 value: 3, 31 unit: 'day', 32 earlier, 33 later: base, 34 }) 35 }) 36 37 it(`equal values return now`, () => { 38 expect(dateDiff(base, base)).toEqual({ 39 value: 0, 40 unit: 'now', 41 earlier: base, 42 later: base, 43 }) 44 }) 45 it(`future dates return now`, () => { 46 const earlier = addDays(base, 3) 47 expect(dateDiff(earlier, base)).toEqual({ 48 value: 0, 49 unit: 'now', 50 earlier, 51 later: base, 52 }) 53 }) 54 55 it(`values < 5 seconds ago return now`, () => { 56 const then = subSeconds(base, 4) 57 expect(dateDiff(then, base)).toEqual({ 58 value: 0, 59 unit: 'now', 60 earlier: then, 61 later: base, 62 }) 63 }) 64 it(`values >= 5 seconds ago return seconds`, () => { 65 const then = subSeconds(base, 5) 66 expect(dateDiff(then, base)).toEqual({ 67 value: 5, 68 unit: 'second', 69 earlier: then, 70 later: base, 71 }) 72 }) 73 74 it(`values < 1 min return seconds`, () => { 75 const then = subSeconds(base, 59) 76 expect(dateDiff(then, base)).toEqual({ 77 value: 59, 78 unit: 'second', 79 earlier: then, 80 later: base, 81 }) 82 }) 83 it(`values >= 1 min return minutes`, () => { 84 const then = subSeconds(base, 60) 85 expect(dateDiff(then, base)).toEqual({ 86 value: 1, 87 unit: 'minute', 88 earlier: then, 89 later: base, 90 }) 91 }) 92 it(`minutes round down`, () => { 93 const then = subSeconds(base, 119) 94 expect(dateDiff(then, base)).toEqual({ 95 value: 1, 96 unit: 'minute', 97 earlier: then, 98 later: base, 99 }) 100 }) 101 102 it(`values < 1 hour return minutes`, () => { 103 const then = subMinutes(base, 59) 104 expect(dateDiff(then, base)).toEqual({ 105 value: 59, 106 unit: 'minute', 107 earlier: then, 108 later: base, 109 }) 110 }) 111 it(`values >= 1 hour return hours`, () => { 112 const then = subMinutes(base, 60) 113 expect(dateDiff(then, base)).toEqual({ 114 value: 1, 115 unit: 'hour', 116 earlier: then, 117 later: base, 118 }) 119 }) 120 it(`hours round down`, () => { 121 const then = subMinutes(base, 119) 122 expect(dateDiff(then, base)).toEqual({ 123 value: 1, 124 unit: 'hour', 125 earlier: then, 126 later: base, 127 }) 128 }) 129 130 it(`values < 1 day return hours`, () => { 131 const then = subHours(base, 23) 132 expect(dateDiff(then, base)).toEqual({ 133 value: 23, 134 unit: 'hour', 135 earlier: then, 136 later: base, 137 }) 138 }) 139 it(`values >= 1 day return days`, () => { 140 const then = subHours(base, 24) 141 expect(dateDiff(then, base)).toEqual({ 142 value: 1, 143 unit: 'day', 144 earlier: then, 145 later: base, 146 }) 147 }) 148 it(`days round down`, () => { 149 const then = subHours(base, 47) 150 expect(dateDiff(then, base)).toEqual({ 151 value: 1, 152 unit: 'day', 153 earlier: then, 154 later: base, 155 }) 156 }) 157 158 it(`values < 30 days return days`, () => { 159 const then = subDays(base, 29) 160 expect(dateDiff(then, base)).toEqual({ 161 value: 29, 162 unit: 'day', 163 earlier: then, 164 later: base, 165 }) 166 }) 167 it(`values >= 30 days return months`, () => { 168 const then = subDays(base, 30) 169 expect(dateDiff(then, base)).toEqual({ 170 value: 1, 171 unit: 'month', 172 earlier: then, 173 later: base, 174 }) 175 }) 176 it(`months round down`, () => { 177 const then = subDays(base, 59) 178 expect(dateDiff(then, base)).toEqual({ 179 value: 1, 180 unit: 'month', 181 earlier: then, 182 later: base, 183 }) 184 }) 185 it(`values are rounded by increments of 30`, () => { 186 const then = subDays(base, 61) 187 expect(dateDiff(then, base)).toEqual({ 188 value: 2, 189 unit: 'month', 190 earlier: then, 191 later: base, 192 }) 193 }) 194 195 it(`values < 360 days return months`, () => { 196 const then = subDays(base, 359) 197 expect(dateDiff(then, base)).toEqual({ 198 value: 11, 199 unit: 'month', 200 earlier: then, 201 later: base, 202 }) 203 }) 204 it(`values >= 360 days return the earlier value`, () => { 205 const then = subDays(base, 360) 206 expect(dateDiff(then, base)).toEqual({ 207 value: 12, 208 unit: 'month', 209 earlier: then, 210 later: base, 211 }) 212 }) 213})