E le Promise ritornano (risolvono in) function?

Stasera ero qui con un test (acceptance) cercando di accrocchiarlo alla meglio.
In sostanza usando jsdom e jest ho del codice legacy che utilizza jquery (versione vecchissima) e il js è nella pagina. Lo incollo in un file separato, prepare.js. E visto che devo caricarlo tramite node lo metto dentro una funzione che chiamo con parametro $ (che è la jQuery). Tipo:
 
 
let start = ($) => {
   $(function() {
       var actions = ActionGroup($("#actions"));
      .... // e blablabla
      function loadExample() {
        const fs = require('fs');
        var exJson = fs.readFileSync(.....)
        actions.loadObject(JSON.parse(exJson);
     }
    loadExample();
   })
}
module.exports = start

Quindi posso eseguire un solo caso, testare un solo json. (e devo usare anche un timeout a caso per prima di fare expect blabla)

 
Ora arriva un nuovo caso da controllare, un nuovo json. E qui ho un attimo di delirio, penso che forse dovrei trasformare il tutto in una funzione, da usare come class, cioè instanziarla tramite la new … Oppure uso una promise che risolve in una function. Cioè:
 
let start = ($) => {
    return new Promise((resolve, reject) => {
        $(function() {
            actions e blablabla ....
            . ...

             function loadExample(filename) { // parametro
            .....
            ..}
            resolve(loadExample);
         });
    }); // non chiamo mai reject()
};
module.exports = start
 
e così quando la vado a chiamare ho:
 
let prepare = require('./prepare');
prepare(window.$).then((loadAction) => {
   loadAction('./path/tothe1.json');
   expect(window.$('#selector').html()).equals(blabla1);
   loadAction('./path/tothe2.json');
   expect(window.$('#selector').html()).equals(blabla2);
})
.catch( (err) => expect(false).equals(true) )
 
Siccome sono poco funzionale il cambiare 2 righe per ottenere questo m’è sembrata una figata

Posted

in

,

by

Tags: