Bluesky app fork with some witchin' additions 馃挮
at readme-update 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})