Come interagire con la finestra di dialogo Conferma in Atom Package Specs?
-
21-12-2019 - |
Domanda
domanda
Quali opzioni devo scrivere specifiche per il codice che prevede interagire con una finestra di dialogo di conferma dell'editor Atom?
Sfondo
Sto lavorando su un pacchetto per Atom e hai un comando per eliminare un file che quindi spinge le modifiche al server. Mi piacerebbe scrivere un test per convalidare il comportamento del comando, ma sto avendo problemi a trovare un buon modo per simulare facendo clic sul pulsante Annulla / OK sulla finestra di dialogo di conferma
Il codice di comando sembra questo
atom.workspaceView.command "mavensmate:delete-file-from-server", =>
# do setup stuff (build the params object)
atom.confirm
message: "You sure?"
buttons:
Cancel: => # nothing to do here, just let the window close
Delete: => # run the delete handler
@mm.run(params).then (result) =>
@mmResponseHandler(params, result)
.
Quello che non riesco a capire è come ottenere le callback di annullamento o eliminare per eseguire in una specifica. Ho scavato attraverso tutte le specifiche Atom e sgradando Google, ma nulla sembra inventa. Speravo di impostare il ritorno all'indice del callback voglio sparare funzionere, ma la mia callback del pulsante Elimina non viene mai chiamata.
# Delete the metadata in the active pane from the server
describe 'Delete File from Server', ->
filePath = ''
beforeEach ->
# set up the workspace with a fake apex class
directory = temp.mkdirSync()
atom.project.setPath(directory)
filePath = path.join(directory, 'MyClass.cls')
spyOn(mm, 'run').andCallThrough()
waitsForPromise ->
atom.workspace.open(filePath)
it 'should invoke mavensmate:delete-file-from-server if confirmed', ->
spyOn(atom, 'confirm').andReturn(1)
atom.workspaceView.trigger 'mavensmate:delete-file-from-server'
expect(mm.run).toHaveBeenCalled()
.
C'è un modo migliore per imitare l'utente facendo clic su un pulsante sulla finestra di dialogo di conferma? Ci sono soluzioni alternative per essere testati?
Soluzione
Non sembra essere un buon modo per simulare l'interazione con una finestra di dialogo di conferma se stai passando in callback con i pulsanti, ma se passa una matrice, e hai il grilletto del comando rispondere a questo, allora tupuò scrivere una specifica come desiderato.
Il codice di comando sarà quindi simile a questo
atom.workspaceView.command "mavensmate:delete-file-from-server", =>
# do setup stuff (build the params object)
atom.confirm
message: "You sure?"
buttons: ["Cancel", "Delete"]
if answer == 1
@mm.run(params).then (result) =>
@mmResponseHandler(params, result)
.
E la specifica funzionerebbe nella sua versione corrente
# Delete the metadata in the active pane from the server
describe 'Delete File from Server', ->
filePath = ''
beforeEach ->
# set up the workspace with a fake apex class
directory = temp.mkdirSync()
atom.project.setPath(directory)
filePath = path.join(directory, 'MyClass.cls')
spyOn(mm, 'run').andCallThrough()
waitsForPromise ->
atom.workspace.open(filePath)
it 'should invoke mavensmate:delete-file-from-server if confirmed', ->
spyOn(atom, 'confirm').andReturn(1)
atom.workspaceView.trigger 'mavensmate:delete-file-from-server'
expect(mm.run).toHaveBeenCalled()
.