C’est tellement évident que ca prend 3 plombes à trouver :
<ion-select [(ngModel)]=”connectedDevice” > <ion-option *ngFor=”let item of devices” [value]=”item” > { { item.name }}
C’est tellement évident que ca prend 3 plombes à trouver :
<ion-select [(ngModel)]=”connectedDevice” > <ion-option *ngFor=”let item of devices” [value]=”item” > { { item.name }}
Tellement en ajouter un c’est simple :
git submodule add [repo] [folder]
Tellement un supprimer un … c’est plus compliqué :
Suppression de la référence au submodule dans .gitmodules (normalement, il y a trois lignes)
Intégration (commit) de la modification dans le repo (un stage (add) doit suffire mais bon)
Suppression de la référence au submodule dans .git/config (normalement, il y a deux lignes,
Execution de
git rm --cached [rep/du/submodule]
Execution de
rm -rf .git/modules/submodule_name
Commit !
Exécution de
rm -Rf [rep/du/submodule]
Voilà …
En surfant, j’ai trouvé plein de trucs compliqués mais au final, voici quelques choses qui fonctionnent bien :
// getLocalContainer
it('LocalContainerService : getLocalContainer 1stTime', (done) => {
service.getLocalContainer(defaultCode).then(function(obj) {
expect(defaultCode).toBe('to be found');
done();
}).catch(function(err) {
expect(err).toBe('NOTFOUND');
done();
});
});
L’astuce est de passer en paramètre done. Les explications sont ici. Différents exemples : ici. Par défaut, l’attente est assez courte si il y a plusieurs appels. Il est possible de le modifier :
// Instanciation of service
beforeEach(() => {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
afterEach(function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});
Toujours dans l’optique de rattraper mon retard : cette semaine c’est Auth0. Il s’agit d’un service/provider d’authentification disponible sous la forme d’un service. D’après la documentation, il permet d’intégrer dans son application des connecteurs vers différents types de sources d’authentification : réseaux sociaux, bases de données, etc.
Un truc surement basique mais quand on connait pas. Dans un service, j’ai besoin d’un fichier JS que j’ai un peu injecté à la main (bouhh). Bon ben forcément dans les tests, il le faut aussi. Pour cela, il faut modifier le fichier karma.conf.js et ajouter le fichier :
files: [
{ pattern: './src/assets/vendors/loki/loki-indexed-adapter.js', included: true, watched: false }
, { pattern: './src/test.ts', watched: false }
]
J’ai passé un peu de temps à chercher et j’ai fini par trouver cette page : https://ajsblackbelt.wordpress.com/2014/05/18/jasmine-tests-expect-tothrow/comment-page-1/. Elle explique bien le souci :) Mon code :
it('ToolsService.getSecond : Unit not know', () => {
expect(
function() { service.getSecond(1, 'other'); }
).toThrowError('Unit not know');
});
La commande ng test permet de lancer les tests. Sauf qu’il ne trouve aucun test. Pour corriger cela, il ajouter la ligne suivante dans karma.conf.js (Karma étant le test runner utilisé …)
mime: { 'text/x-typescript': ['ts','tsx'] }
Après Cordova : Ionic 2.
Ma vision de Ionic 2 est la suivante : c’est la combinaison dans un seul outil de Cordova / Angular 2 / Ionic components. Il est possible de faire la même chose sans Ionic mais c’est plus compliqué alors … Bon, encore une fois c’est une vision très partielle des choses.
Lors d’une précédente session, j’avais commencé à regarder Cordova. Pendant cette session, je me suis concentré sur la création de l’environnement et sur l’intégration d’un projet existant. Pour être honnête, il y avait un objectif pro derrière. Donc pour cette deuxième session, je vais repartir sur différents tutoriels me permettant d’aller un peu plus loin dans la compréhension de Cordova.
Il s’agit d’un point déjà vu mais je le mets dans un quickie. Dans le fichier platforms/browser/cordova/run :
if(args.target == "none") { return; }
else {
return cordovaServe.launchBrowser({target: args.target, url: projectUrl});
}