@@ -64,6 +64,7 @@ import { ExperimentFlag } from '../../../cli/dvc/constants'
6464import { DvcExecutor } from '../../../cli/dvc/executor'
6565import { shortenForLabel } from '../../../util/string'
6666import { GitExecutor } from '../../../cli/git/executor'
67+ import { WorkspacePlots } from '../../../plots/workspace'
6768
6869suite ( 'Experiments Test Suite' , ( ) => {
6970 const disposable = Disposable . fn ( )
@@ -917,8 +918,76 @@ suite('Experiments Test Suite', () => {
917918 areExperimentsStarred ( experimentsToToggle ) ,
918919 'experiments have been starred'
919920 ) . to . be . true
920- } )
921- } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
921+ } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
922+
923+ it ( 'should be able to handle a message to select experiments for plotting' , async ( ) => {
924+ const { experiments, experimentsModel } = buildExperiments ( disposable )
925+ await experiments . isReady ( )
926+
927+ const webview = await experiments . showWebview ( )
928+ const mockMessageReceived = getMessageReceivedEmitter ( webview )
929+ const mockExperimentIds = [
930+ 'exp-e7a67' ,
931+ 'd1343a87c6ee4a2e82d19525964d2fb2cb6756c9' ,
932+ 'test-branch'
933+ ]
934+
935+ stubWorkspaceExperimentsGetters ( dvcDemoPath , experiments )
936+
937+ const tableChangePromise = experimentsUpdatedEvent ( experiments )
938+
939+ mockMessageReceived . fire ( {
940+ payload : mockExperimentIds ,
941+ type : MessageFromWebviewType . SET_EXPERIMENTS_FOR_PLOTS
942+ } )
943+
944+ await tableChangePromise
945+
946+ const selectExperimentIds = experimentsModel
947+ . getSelectedRevisions ( )
948+ . map ( ( { id } ) => id )
949+ . sort ( )
950+ expect ( selectExperimentIds ) . to . deep . equal ( mockExperimentIds . sort ( ) )
951+ expect ( selectExperimentIds ) . to . deep . equal ( mockExperimentIds )
952+ } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
953+
954+ it ( 'should be able to handle a message to compare experiments plots' , async ( ) => {
955+ const { experiments, experimentsModel } = buildExperiments ( disposable )
956+ const mockShowPlots = stub (
957+ WorkspacePlots . prototype ,
958+ 'showWebview'
959+ ) . resolves ( undefined )
960+
961+ await experiments . isReady ( )
962+
963+ const webview = await experiments . showWebview ( )
964+ const mockMessageReceived = getMessageReceivedEmitter ( webview )
965+ const mockExperimentIds = [
966+ 'exp-e7a67' ,
967+ 'd1343a87c6ee4a2e82d19525964d2fb2cb6756c9' ,
968+ 'test-branch'
969+ ]
970+
971+ stubWorkspaceExperimentsGetters ( dvcDemoPath , experiments )
972+
973+ const tableChangePromise = experimentsUpdatedEvent ( experiments )
974+
975+ mockMessageReceived . fire ( {
976+ payload : mockExperimentIds ,
977+ type : MessageFromWebviewType . SET_EXPERIMENTS_AND_OPEN_PLOTS
978+ } )
979+
980+ await tableChangePromise
981+
982+ const selectExperimentIds = experimentsModel
983+ . getSelectedRevisions ( )
984+ . map ( ( { id } ) => id )
985+ . sort ( )
986+ expect ( selectExperimentIds ) . to . deep . equal ( mockExperimentIds . sort ( ) )
987+ expect ( mockShowPlots ) . to . be . calledOnce
988+ expect ( mockShowPlots ) . to . be . calledWith ( dvcDemoPath )
989+ } ) . timeout ( WEBVIEW_TEST_TIMEOUT )
990+ } )
922991
923992 describe ( 'Sorting' , ( ) => {
924993 it ( 'should be able to sort' , async ( ) => {
0 commit comments