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?

È stato utile?

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()
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top