import * as vscode from 'vscode' ; import { getDocUri , activate , testCompletion , updateSettings , resetSettings } from './helper' ; import { ExtensionAPI , MODIFICATION_ACTIONS } from '../src/schema-extension-api' ; describe ( 'Schema sections can be modified in memory' , ( ) => { const completionUri = getDocUri ( 'completion/enum_completion.yaml' ) ; afterEach ( async ( ) => { await resetSettings ( 'schemas' , { } ) ; await resetSettings ( 'schemaStore.enable' , true ) ; } ) ; it ( 'Modified schema gets correct results' , async ( ) => { const extensionAPI = await activate ( completionUri ) ; await updateSettings ( 'schemas' , { 'https://gist.githubusercontent.com/JPinkney/00b908178a64d3a6274e2c9523b39521/raw/53042c011c089b13ef0a42b4b037ea2431bbba8d/basic_completion_schema.json' : 'enum_completion.yaml' , } ) ; await testCompletion ( completionUri , new vscode . Position ( 0 , 10 ) , { items : [ { label : 'my_value' , kind : 11 , } , ] , } ) ; await extensionAPI . modifySchemaContent ( { action : MODIFICATION_ACTIONS . add , path : 'properties/my_key' , key : 'enum' , content : [ 'my_apple' , 'my_banana' , 'my_carrot' ] , schema : 'https://gist.githubusercontent.com/JPinkney/00b908178a64d3a6274e2c9523b39521/raw/53042c011c089b13ef0a42b4b037ea2431bbba8d/basic_completion_schema.json' , } ) ; await testCompletion ( completionUri , new vscode . Position ( 0 , 9 ) , { items : [ { label : 'my_apple' , kind : 11 , } , { label : 'my_banana' , kind : 11 , } , { label : 'my_carrot' , kind : 11 , } , ] , } ) ; } ) ; it ( 'Deleted schema gets correct results' , async ( ) => { const extensionAPI = await activate ( completionUri ) ; await updateSettings ( 'schemas' , { 'https://gist.githubusercontent.com/JPinkney/ee1caa73523b8e0574b9e9b241e2991e/raw/9569ef35a76ce5165b3c1b35abe878c44e861b33/sample.json' : 'enum_completion.yaml' , } ) ; await testCompletion ( completionUri , new vscode . Position ( 0 , 10 ) , { items : [ { label : 'my_test1' , kind : 11 , } , { label : 'my_test2' , kind : 11 , } , ] , } ) ; await extensionAPI . modifySchemaContent ( { action : MODIFICATION_ACTIONS . delete , path : 'properties/my_key' , schema : 'https://gist.githubusercontent.com/JPinkney/ee1caa73523b8e0574b9e9b241e2991e/raw/9569ef35a76ce5165b3c1b35abe878c44e861b33/sample.json' , key : 'enum' , } ) ; await testCompletion ( completionUri , new vscode . Position ( 0 , 9 ) , { items : [ { label : 'my_test2' , kind : 11 , } , ] , } ) ; } ) ; } ) ;