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 195 lines 5.5 kB view raw
1import {describe, test} from '@jest/globals' 2 3import { 4 computeCompletedState, 5 syncCompletedState, 6} from '#/components/PolicyUpdateOverlay/usePolicyUpdateState' 7 8jest.mock('../../../state/queries/nuxs') 9 10describe('computeCompletedState', () => { 11 test(`initial state`, () => { 12 const completed = computeCompletedState({ 13 nuxIsReady: false, 14 nuxIsCompleted: false, 15 nuxIsOptimisticallyCompleted: false, 16 completedForDevice: undefined, 17 }) 18 19 expect(completed).toBe(true) 20 }) 21 22 test(`nux loaded state`, () => { 23 const completed = computeCompletedState({ 24 nuxIsReady: true, 25 nuxIsCompleted: false, 26 nuxIsOptimisticallyCompleted: false, 27 completedForDevice: undefined, 28 }) 29 30 expect(completed).toBe(false) 31 }) 32 33 test(`nux saving state`, () => { 34 const completed = computeCompletedState({ 35 nuxIsReady: true, 36 nuxIsCompleted: false, 37 nuxIsOptimisticallyCompleted: true, 38 completedForDevice: undefined, 39 }) 40 41 expect(completed).toBe(true) 42 }) 43 44 test(`nux is completed`, () => { 45 const completed = computeCompletedState({ 46 nuxIsReady: true, 47 nuxIsCompleted: true, 48 nuxIsOptimisticallyCompleted: false, 49 completedForDevice: undefined, 50 }) 51 52 expect(completed).toBe(true) 53 }) 54 55 test(`initial state, but already completed for device`, () => { 56 const completed = computeCompletedState({ 57 nuxIsReady: false, 58 nuxIsCompleted: false, 59 nuxIsOptimisticallyCompleted: false, 60 completedForDevice: true, 61 }) 62 63 expect(completed).toBe(true) 64 }) 65}) 66 67describe('syncCompletedState', () => { 68 describe('!nuxIsReady', () => { 69 test(`!completedForDevice, no-op`, () => { 70 const save = jest.fn() 71 const setCompletedForDevice = jest.fn() 72 syncCompletedState({ 73 nuxIsReady: false, 74 nuxIsCompleted: false, 75 nuxIsOptimisticallyCompleted: false, 76 completedForDevice: false, 77 save, 78 setCompletedForDevice, 79 }) 80 81 expect(save).not.toHaveBeenCalled() 82 expect(setCompletedForDevice).not.toHaveBeenCalled() 83 }) 84 85 test(`completedForDevice, no-op`, () => { 86 const save = jest.fn() 87 const setCompletedForDevice = jest.fn() 88 syncCompletedState({ 89 nuxIsReady: false, 90 nuxIsCompleted: false, 91 nuxIsOptimisticallyCompleted: false, 92 completedForDevice: true, 93 save, 94 setCompletedForDevice, 95 }) 96 97 expect(save).not.toHaveBeenCalled() 98 expect(setCompletedForDevice).not.toHaveBeenCalled() 99 }) 100 }) 101 102 describe('nuxIsReady', () => { 103 describe(`!nuxIsCompleted`, () => { 104 describe(`!nuxIsOptimisticallyCompleted`, () => { 105 test(`!completedForDevice, no-op`, () => { 106 const save = jest.fn() 107 const setCompletedForDevice = jest.fn() 108 syncCompletedState({ 109 nuxIsReady: true, 110 nuxIsCompleted: false, 111 nuxIsOptimisticallyCompleted: false, 112 completedForDevice: false, 113 save, 114 setCompletedForDevice, 115 }) 116 117 expect(save).not.toHaveBeenCalled() 118 expect(setCompletedForDevice).not.toHaveBeenCalled() 119 }) 120 121 test(`completedForDevice, syncs to server`, () => { 122 const save = jest.fn() 123 const setCompletedForDevice = jest.fn() 124 syncCompletedState({ 125 nuxIsReady: true, 126 nuxIsCompleted: false, 127 nuxIsOptimisticallyCompleted: false, 128 completedForDevice: true, 129 save, 130 setCompletedForDevice, 131 }) 132 133 expect(save).toHaveBeenCalled() 134 expect(setCompletedForDevice).not.toHaveBeenCalled() 135 }) 136 }) 137 138 /** 139 * Catches the case where we already called `save` to sync device state 140 * to server, thus `nuxIsOptimisticallyCompleted` is true. 141 */ 142 describe(`nuxIsOptimisticallyCompleted`, () => { 143 test(`completedForDevice, no-op`, () => { 144 const save = jest.fn() 145 const setCompletedForDevice = jest.fn() 146 syncCompletedState({ 147 nuxIsReady: true, 148 nuxIsCompleted: false, 149 nuxIsOptimisticallyCompleted: true, 150 completedForDevice: true, 151 save, 152 setCompletedForDevice, 153 }) 154 155 expect(save).not.toHaveBeenCalled() 156 expect(setCompletedForDevice).not.toHaveBeenCalled() 157 }) 158 }) 159 }) 160 161 describe(`nuxIsCompleted`, () => { 162 test(`!completedForDevice, syncs to device`, () => { 163 const save = jest.fn() 164 const setCompletedForDevice = jest.fn() 165 syncCompletedState({ 166 nuxIsReady: true, 167 nuxIsCompleted: true, 168 nuxIsOptimisticallyCompleted: false, 169 completedForDevice: false, 170 save, 171 setCompletedForDevice, 172 }) 173 174 expect(save).not.toHaveBeenCalled() 175 expect(setCompletedForDevice).toHaveBeenCalled() 176 }) 177 178 test(`completedForDevice, no-op`, () => { 179 const save = jest.fn() 180 const setCompletedForDevice = jest.fn() 181 syncCompletedState({ 182 nuxIsReady: true, 183 nuxIsCompleted: true, 184 nuxIsOptimisticallyCompleted: false, 185 completedForDevice: true, 186 save, 187 setCompletedForDevice, 188 }) 189 190 expect(save).not.toHaveBeenCalled() 191 expect(setCompletedForDevice).not.toHaveBeenCalled() 192 }) 193 }) 194 }) 195})