@@ -4,7 +4,7 @@ import { expect } from 'chai'
44import { restore , spy , stub } from 'sinon'
55import { commands , TextDocument , Uri , window } from 'vscode'
66import isEqual from 'lodash.isequal'
7- import { buildPlots } from '../plots/util'
7+ import { buildPlots , buildPlotsWebview } from '../plots/util'
88import { Disposable } from '../../../extension'
99import expShowFixtureWithoutErrors from '../../fixtures/expShow/base/noErrors'
1010import gitLogFixture from '../../fixtures/expShow/base/gitLog'
@@ -19,8 +19,8 @@ import {
1919 bypassProcessManagerDebounce ,
2020 closeAllEditors ,
2121 getFirstArgOfLastCall ,
22- getMockNow ,
23- getMessageReceivedEmitter
22+ getMessageReceivedEmitter ,
23+ getMockNow
2424} from '../util'
2525import { dvcDemoPath } from '../../util'
2626import {
@@ -169,12 +169,11 @@ suite('Plots Test Suite', () => {
169169 } )
170170
171171 it ( 'should handle a section resized message from the webview' , async ( ) => {
172- const { plots , plotsModel } = await buildPlots ( { disposer : disposable } )
173-
174- const webview = await plots . showWebview ( )
172+ const { mockMessageReceived , plotsModel } = await buildPlotsWebview ( {
173+ disposer : disposable
174+ } )
175175
176176 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
177- const mockMessageReceived = getMessageReceivedEmitter ( webview )
178177
179178 const mockSetPlotSize = stub (
180179 plotsModel ,
@@ -208,14 +207,12 @@ suite('Plots Test Suite', () => {
208207 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
209208
210209 it ( 'should handle a section collapsed message from the webview' , async ( ) => {
211- const { plots, plotsModel, messageSpy } = await buildPlots ( {
212- disposer : disposable
213- } )
214-
215- const webview = await plots . showWebview ( )
210+ const { mockMessageReceived, plotsModel, messageSpy } =
211+ await buildPlotsWebview ( {
212+ disposer : disposable
213+ } )
216214
217215 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
218- const mockMessageReceived = getMessageReceivedEmitter ( webview )
219216
220217 const mockSetSectionCollapsed = spy ( plotsModel , 'setSectionCollapsed' )
221218 const mockSectionCollapsed = { [ PlotsSection . CUSTOM_PLOTS ] : true }
@@ -249,15 +246,13 @@ suite('Plots Test Suite', () => {
249246 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
250247
251248 it ( 'should handle a comparison revisions reordered message from the webview' , async ( ) => {
252- const { plots, plotsModel, messageSpy } = await buildPlots ( {
253- disposer : disposable ,
254- plotsDiff : plotsDiffFixture
255- } )
256-
257- const webview = await plots . showWebview ( )
249+ const { messageSpy, mockMessageReceived, plotsModel } =
250+ await buildPlotsWebview ( {
251+ disposer : disposable ,
252+ plotsDiff : plotsDiffFixture
253+ } )
258254
259255 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
260- const mockMessageReceived = getMessageReceivedEmitter ( webview )
261256
262257 const mockSetComparisonOrder = spy ( plotsModel , 'setComparisonOrder' )
263258 const mockComparisonOrder = [
@@ -301,15 +296,13 @@ suite('Plots Test Suite', () => {
301296 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
302297
303298 it ( 'should handle a comparison rows reordered message from the webview' , async ( ) => {
304- const { plots, pathsModel, messageSpy } = await buildPlots ( {
305- disposer : disposable ,
306- plotsDiff : plotsDiffFixture
307- } )
308-
309- const webview = await plots . showWebview ( )
299+ const { messageSpy, mockMessageReceived, pathsModel } =
300+ await buildPlotsWebview ( {
301+ disposer : disposable ,
302+ plotsDiff : plotsDiffFixture
303+ } )
310304
311305 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
312- const mockMessageReceived = getMessageReceivedEmitter ( webview )
313306
314307 const mockSetComparisonPathsOrder = spy (
315308 pathsModel ,
@@ -354,15 +347,13 @@ suite('Plots Test Suite', () => {
354347 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
355348
356349 it ( 'should handle a template plots reordered message from the webview' , async ( ) => {
357- const { pathsModel, plots, messageSpy } = await buildPlots ( {
358- disposer : disposable ,
359- plotsDiff : plotsDiffFixture
360- } )
361-
362- const webview = await plots . showWebview ( )
350+ const { pathsModel, messageSpy, mockMessageReceived } =
351+ await buildPlotsWebview ( {
352+ disposer : disposable ,
353+ plotsDiff : plotsDiffFixture
354+ } )
363355
364356 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
365- const mockMessageReceived = getMessageReceivedEmitter ( webview )
366357
367358 const mockSetTemplateOrder = spy ( pathsModel , 'setTemplateOrder' )
368359 const mockTemplateOrder = [
@@ -404,15 +395,12 @@ suite('Plots Test Suite', () => {
404395 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
405396
406397 it ( 'should handle a plot zoomed message from the webview' , async ( ) => {
407- const { plots } = await buildPlots ( {
398+ const { mockMessageReceived } = await buildPlotsWebview ( {
408399 disposer : disposable ,
409400 plotsDiff : plotsDiffFixture
410401 } )
411402
412- const webview = await plots . showWebview ( )
413-
414403 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
415- const mockMessageReceived = getMessageReceivedEmitter ( webview )
416404
417405 mockMessageReceived . fire ( {
418406 type : MessageFromWebviewType . ZOOM_PLOT
@@ -427,16 +415,13 @@ suite('Plots Test Suite', () => {
427415 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
428416
429417 it ( 'should handle a plot zoomed message from the webview for an image' , async ( ) => {
430- const { plots } = await buildPlots ( {
418+ const { mockMessageReceived , webview } = await buildPlotsWebview ( {
431419 disposer : disposable ,
432420 plotsDiff : plotsDiffFixture
433421 } )
434422 stub ( FileSystem , 'openImageFileInEditor' ) . resolves ( true )
435423
436- const webview = await plots . showWebview ( )
437-
438424 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
439- const mockMessageReceived = getMessageReceivedEmitter ( webview )
440425
441426 mockMessageReceived . fire ( {
442427 payload : webview . getWebviewUri ( 'a/path.jpg' ) ,
@@ -452,17 +437,15 @@ suite('Plots Test Suite', () => {
452437 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
453438
454439 it ( 'should open an image when receiving a plot zoomed message from the webview with a payload' , async ( ) => {
455- const { plots } = await buildPlots ( {
440+ const { webview , mockMessageReceived } = await buildPlotsWebview ( {
456441 disposer : disposable ,
457442 plotsDiff : plotsDiffFixture
458443 } )
459444
460- const webview = await plots . showWebview ( )
461445 const imagePath = 'some/path/image.jpg'
462446
463447 stub ( Telemetry , 'sendTelemetryEvent' )
464448 const mockExecuteCommands = stub ( commands , 'executeCommand' )
465- const mockMessageReceived = getMessageReceivedEmitter ( webview )
466449
467450 mockMessageReceived . fire ( {
468451 payload : webview . getWebviewUri ( imagePath ) ,
@@ -476,14 +459,12 @@ suite('Plots Test Suite', () => {
476459 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
477460
478461 it ( 'should handle an export plot data as json message from the webview' , async ( ) => {
479- const { plots } = await buildPlots ( {
462+ const { mockMessageReceived } = await buildPlotsWebview ( {
480463 disposer : disposable ,
481464 plotsDiff : plotsDiffFixture
482465 } )
483466
484- const webview = await plots . showWebview ( )
485467 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
486- const mockMessageReceived = getMessageReceivedEmitter ( webview )
487468 const customPlot = customPlotsFixture . plots [ 0 ]
488469 const mockShowSaveDialog = stub ( window , 'showSaveDialog' )
489470 const mockWriteJson = stub ( FileSystem , 'writeJson' )
@@ -522,14 +503,12 @@ suite('Plots Test Suite', () => {
522503 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
523504
524505 it ( 'should handle an export plot data as csv message from the webview' , async ( ) => {
525- const { plots } = await buildPlots ( {
506+ const { mockMessageReceived } = await buildPlotsWebview ( {
526507 disposer : disposable ,
527508 plotsDiff : plotsDiffFixture
528509 } )
529510
530- const webview = await plots . showWebview ( )
531511 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
532- const mockMessageReceived = getMessageReceivedEmitter ( webview )
533512 const mockShowSaveDialog = stub ( window , 'showSaveDialog' )
534513 const mockWriteCsv = stub ( FileSystem , 'writeCsv' )
535514 const mockOpenFile = stub ( FileSystem , 'openFileInEditor' )
@@ -567,14 +546,12 @@ suite('Plots Test Suite', () => {
567546 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
568547
569548 it ( 'should handle an export plot data as tsv message from the webview' , async ( ) => {
570- const { plots } = await buildPlots ( {
549+ const { mockMessageReceived } = await buildPlotsWebview ( {
571550 disposer : disposable ,
572551 plotsDiff : plotsDiffFixture
573552 } )
574553
575- const webview = await plots . showWebview ( )
576554 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
577- const mockMessageReceived = getMessageReceivedEmitter ( webview )
578555 const mockShowSaveDialog = stub ( window , 'showSaveDialog' )
579556 const mockWriteTsv = stub ( FileSystem , 'writeTsv' )
580557 const mockOpenFile = stub ( FileSystem , 'openFileInEditor' )
@@ -612,14 +589,12 @@ suite('Plots Test Suite', () => {
612589 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
613590
614591 it ( 'should handle export data messages from the webview when the file is cancelled or errors are thrown during file writing' , async ( ) => {
615- const { plots } = await buildPlots ( {
592+ const { mockMessageReceived } = await buildPlotsWebview ( {
616593 disposer : disposable ,
617594 plotsDiff : plotsDiffFixture
618595 } )
619596
620- const webview = await plots . showWebview ( )
621597 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
622- const mockMessageReceived = getMessageReceivedEmitter ( webview )
623598 const mockShowSaveDialog = stub ( window , 'showSaveDialog' )
624599 const mockWriteCsv = stub ( FileSystem , 'writeCsv' )
625600 const mockOpenFile = stub ( FileSystem , 'openFileInEditor' )
@@ -666,12 +641,11 @@ suite('Plots Test Suite', () => {
666641 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
667642
668643 it ( 'should handle a custom plots reordered message from the webview' , async ( ) => {
669- const { plots, plotsModel, messageSpy } = await buildPlots ( {
670- disposer : disposable ,
671- plotsDiff : plotsDiffFixture
672- } )
673-
674- const webview = await plots . showWebview ( )
644+ const { plotsModel, messageSpy, mockMessageReceived } =
645+ await buildPlotsWebview ( {
646+ disposer : disposable ,
647+ plotsDiff : plotsDiffFixture
648+ } )
675649
676650 const mockNewCustomPlotsOrder = [
677651 'custom-summary.json:accuracy-params.yaml:epochs' ,
@@ -683,7 +657,6 @@ suite('Plots Test Suite', () => {
683657 . returns ( customPlotsFixture )
684658
685659 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
686- const mockMessageReceived = getMessageReceivedEmitter ( webview )
687660 const mockSetCustomPlotsOrder = stub ( plotsModel , 'setCustomPlotsOrder' )
688661 mockSetCustomPlotsOrder . returns ( undefined )
689662
@@ -715,7 +688,7 @@ suite('Plots Test Suite', () => {
715688 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
716689
717690 it ( 'should handle a select experiments message from the webview' , async ( ) => {
718- const { plots , experiments } = await buildPlots ( {
691+ const { experiments , mockMessageReceived } = await buildPlotsWebview ( {
719692 disposer : disposable ,
720693 plotsDiff : plotsDiffFixture
721694 } )
@@ -725,10 +698,7 @@ suite('Plots Test Suite', () => {
725698 'selectExperimentsToPlot'
726699 ) . resolves ( undefined )
727700
728- const webview = await plots . showWebview ( )
729-
730701 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
731- const mockMessageReceived = getMessageReceivedEmitter ( webview )
732702
733703 mockMessageReceived . fire ( {
734704 type : MessageFromWebviewType . SELECT_EXPERIMENTS
@@ -744,7 +714,7 @@ suite('Plots Test Suite', () => {
744714 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
745715
746716 it ( 'should handle a select plots message from the webview' , async ( ) => {
747- const { plots } = await buildPlots ( {
717+ const { mockMessageReceived , plots } = await buildPlotsWebview ( {
748718 disposer : disposable ,
749719 plotsDiff : plotsDiffFixture
750720 } )
@@ -753,10 +723,7 @@ suite('Plots Test Suite', () => {
753723 undefined
754724 )
755725
756- const webview = await plots . showWebview ( )
757-
758726 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
759- const mockMessageReceived = getMessageReceivedEmitter ( webview )
760727
761728 mockMessageReceived . fire ( {
762729 type : MessageFromWebviewType . SELECT_PLOTS
@@ -818,14 +785,11 @@ suite('Plots Test Suite', () => {
818785 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
819786
820787 it ( 'should be able to make the plots webview visible' , async ( ) => {
821- const { plots , messageSpy, mockPlotsDiff } = await buildPlots ( {
788+ const { messageSpy, mockPlotsDiff, webview } = await buildPlotsWebview ( {
822789 disposer : disposable ,
823790 plotsDiff : plotsDiffFixture
824791 } )
825792
826- const webview = await plots . showWebview ( )
827- await webview . isReady ( )
828-
829793 expect ( mockPlotsDiff ) . to . be . called
830794
831795 const {
@@ -1019,7 +983,7 @@ suite('Plots Test Suite', () => {
1019983 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
1020984
1021985 it ( 'should handle a toggle experiment message from the webview' , async ( ) => {
1022- const { plots , experiments } = await buildPlots ( {
986+ const { experiments , mockMessageReceived } = await buildPlotsWebview ( {
1023987 disposer : disposable ,
1024988 plotsDiff : plotsDiffFixture
1025989 } )
@@ -1029,10 +993,7 @@ suite('Plots Test Suite', () => {
1029993 'toggleExperimentStatus'
1030994 ) . resolves ( undefined )
1031995
1032- const webview = await plots . showWebview ( )
1033-
1034996 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
1035- const mockMessageReceived = getMessageReceivedEmitter ( webview )
1036997
1037998 mockMessageReceived . fire ( {
1038999 payload : 'main' ,
@@ -1049,13 +1010,11 @@ suite('Plots Test Suite', () => {
10491010 } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
10501011
10511012 it ( 'should handle an add custom plot message from the webview' , async ( ) => {
1052- const { plots } = await buildPlots ( {
1013+ const { mockMessageReceived } = await buildPlotsWebview ( {
10531014 disposer : disposable ,
10541015 plotsDiff : plotsDiffFixture
10551016 } )
10561017
1057- const webview = await plots . showWebview ( )
1058- const mockMessageReceived = getMessageReceivedEmitter ( webview )
10591018 const executeCommandSpy = spy ( commands , 'executeCommand' )
10601019
10611020 mockMessageReceived . fire ( {
@@ -1069,13 +1028,11 @@ suite('Plots Test Suite', () => {
10691028 } )
10701029
10711030 it ( 'should handle a remove custom plot message from the webview' , async ( ) => {
1072- const { plots } = await buildPlots ( {
1031+ const { mockMessageReceived } = await buildPlotsWebview ( {
10731032 disposer : disposable ,
10741033 plotsDiff : plotsDiffFixture
10751034 } )
10761035
1077- const webview = await plots . showWebview ( )
1078- const mockMessageReceived = getMessageReceivedEmitter ( webview )
10791036 const executeCommandSpy = spy ( commands , 'executeCommand' )
10801037
10811038 mockMessageReceived . fire ( {
@@ -1089,14 +1046,12 @@ suite('Plots Test Suite', () => {
10891046 } )
10901047
10911048 it ( 'should handle an update smooth plot values message from the webview' , async ( ) => {
1092- const { plots , plotsModel } = await buildPlots ( {
1049+ const { mockMessageReceived , plotsModel } = await buildPlotsWebview ( {
10931050 disposer : disposable ,
10941051 plotsDiff : plotsDiffFixture
10951052 } )
10961053 const templatePlot = templatePlotsFixture . plots [ 0 ] . entries [ 0 ]
10971054
1098- const webview = await plots . showWebview ( )
1099- const mockMessageReceived = getMessageReceivedEmitter ( webview )
11001055 const mockSendTelemetryEvent = stub ( Telemetry , 'sendTelemetryEvent' )
11011056 const mockSetSmoothPlotValues = stub ( plotsModel , 'setSmoothPlotValues' )
11021057
0 commit comments