Pregunta

Pregunta

¿Qué opciones tengo para escribir especificaciones para código que implica interactuar con un cuadro de diálogo de confirmación del editor Atom?

Fondo

Estoy trabajando en un paquete para Atom y tengo un comando para eliminar un archivo que luego envía los cambios al servidor.Me gustaría escribir una prueba para validar el comportamiento del comando, pero tengo problemas para encontrar una buena manera de simular hacer clic en el botón cancelar/Aceptar en el cuadro de diálogo de confirmación.

El código de comando se ve así

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)

Lo que parece que no puedo entender es cómo hacer que cancelar o eliminar devoluciones de llamada se ejecute en una especificación.He estado investigando todas las especificaciones atómicas y buscando en Google, pero parece que no aparece nada.Esperaba que funcionara configurar el retorno al índice de la devolución de llamada que quiero activar, pero nunca se llama a la devolución de llamada del botón de eliminación.

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

¿Existe una mejor manera de imitar al usuario haciendo clic en un botón en el cuadro de diálogo de confirmación?¿Existe alguna solución para hacer esta prueba?

¿Fue útil?

Solución

No parece haber una buena manera de simular la interacción con un cuadro de diálogo de confirmación si está pasando en devoluciones de llamada con sus botones, pero si simplemente pasa una matriz, y tiene el comando disparador responder a eso, entoncesPuede escribir una especificación como desee.

El código de comando se vería así

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)

y la especificación funcionaría en su versión actual

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top