|
1 | 1 | import { assertEquals } from "https://deno.land/[email protected]/testing/asserts.ts";
|
| 2 | +import { |
| 3 | + assertSpyCall, |
| 4 | + assertSpyCalls, |
| 5 | + spy, |
| 6 | +} from "https://deno.land/[email protected]/testing/mock.ts"; |
2 | 7 | import { test } from "https://deno.land/x/[email protected]/test/mod.ts";
|
3 | 8 | import { batch, BatchHelper } from "./batch.ts";
|
4 | 9 |
|
@@ -161,3 +166,87 @@ test({
|
161 | 166 | ]);
|
162 | 167 | },
|
163 | 168 | });
|
| 169 | +test({ |
| 170 | + mode: "any", |
| 171 | + name: |
| 172 | + "batch() invokes 'redraw()' only once after the batch is actually executed.", |
| 173 | + fn: async (denops) => { |
| 174 | + await denops.cmd("let g:denops_batch_test = []"); |
| 175 | + await denops.cmd( |
| 176 | + "command! -nargs=1 DenopsBatchTest let g:denops_batch_test += [<f-args>]", |
| 177 | + ); |
| 178 | + const redrawSpy = spy(denops, "redraw"); |
| 179 | + try { |
| 180 | + await batch(denops, async (denops) => { |
| 181 | + assertEquals( |
| 182 | + await denops.call("execute", "DenopsBatchTest 1"), |
| 183 | + undefined, |
| 184 | + ); |
| 185 | + await denops.redraw(); |
| 186 | + assertEquals( |
| 187 | + await denops.call("execute", "DenopsBatchTest 2"), |
| 188 | + undefined, |
| 189 | + ); |
| 190 | + await denops.redraw(); |
| 191 | + assertEquals( |
| 192 | + await denops.call("execute", "DenopsBatchTest 3"), |
| 193 | + undefined, |
| 194 | + ); |
| 195 | + await denops.redraw(); |
| 196 | + }); |
| 197 | + } finally { |
| 198 | + redrawSpy.restore(); |
| 199 | + } |
| 200 | + assertEquals(await denops.eval("g:denops_batch_test") as string[], [ |
| 201 | + "1", |
| 202 | + "2", |
| 203 | + "3", |
| 204 | + ]); |
| 205 | + assertSpyCalls(redrawSpy, 1); |
| 206 | + assertSpyCall(redrawSpy, 0, { |
| 207 | + args: [false], |
| 208 | + }); |
| 209 | + }, |
| 210 | +}); |
| 211 | +test({ |
| 212 | + mode: "any", |
| 213 | + name: |
| 214 | + "batch() invokes 'redraw(true)' only once after the batch is actually executed.", |
| 215 | + fn: async (denops) => { |
| 216 | + await denops.cmd("let g:denops_batch_test = []"); |
| 217 | + await denops.cmd( |
| 218 | + "command! -nargs=1 DenopsBatchTest let g:denops_batch_test += [<f-args>]", |
| 219 | + ); |
| 220 | + const redrawSpy = spy(denops, "redraw"); |
| 221 | + try { |
| 222 | + await batch(denops, async (denops) => { |
| 223 | + assertEquals( |
| 224 | + await denops.call("execute", "DenopsBatchTest 1"), |
| 225 | + undefined, |
| 226 | + ); |
| 227 | + await denops.redraw(); |
| 228 | + assertEquals( |
| 229 | + await denops.call("execute", "DenopsBatchTest 2"), |
| 230 | + undefined, |
| 231 | + ); |
| 232 | + await denops.redraw(true); |
| 233 | + assertEquals( |
| 234 | + await denops.call("execute", "DenopsBatchTest 3"), |
| 235 | + undefined, |
| 236 | + ); |
| 237 | + await denops.redraw(); |
| 238 | + }); |
| 239 | + } finally { |
| 240 | + redrawSpy.restore(); |
| 241 | + } |
| 242 | + assertEquals(await denops.eval("g:denops_batch_test") as string[], [ |
| 243 | + "1", |
| 244 | + "2", |
| 245 | + "3", |
| 246 | + ]); |
| 247 | + assertSpyCalls(redrawSpy, 1); |
| 248 | + assertSpyCall(redrawSpy, 0, { |
| 249 | + args: [true], |
| 250 | + }); |
| 251 | + }, |
| 252 | +}); |
0 commit comments