Comment interagir avec confirmation de la boîte de dialogue dans Atom Package Spec?
-
21-12-2019 - |
Question
question
Quelles options dois-je écrire des spécifications pour le code qui implique d'interagir avec une boîte de dialogue de confirmation de l'éditeur Atom?
Fond
Je travaille sur un package pour Atom et j'ai une commande pour supprimer un fichier qui appuie ensuite les modifications apportées au serveur. J'aimerais écrire un test pour valider le comportement de la commande, mais j'ai du mal à trouver un bon moyen de simuler le bouton Annuler / ok de la boîte de dialogue de confirmation
Le code de commande ressemble à ceci
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)
Ce que je ne peux pas sembler comprendre, c'est comment obtenir l'annulation ou la suppression de rappels à exécuter dans une spécification. J'ai traversé toutes les spécifications de l'Atome et je découvre Google, mais rien ne semble venir. J'espérais que définir le retour à l'index du rappel que je veux tirer travaillerait, mais mon rappel de bouton de suppression ne s'appelle jamais.
# 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()
Y a-t-il un meilleur moyen d'imiter l'utilisateur en cliquant sur un bouton de la boîte de dialogue de confirmation? Y a-t-il des solutions de contournement pour obtenir ce test?
La solution
Il n'apparaît pas être un bon moyen de simuler l'interaction avec une boîte de dialogue de confirmation si vous passez dans des rappels avec vos boutons, mais si vous passez simplement un tableau et que vous avez le déclencheur de commande répondit à cela, puispeut écrire un spec comme souhaité.
Le code de commande ressemblerait alors à ceci
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)
et la spécification fonctionnerait dans sa version actuelle
# 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()