aggiunti test di integrità

This commit is contained in:
Enrico Fasoli 2015-04-27 16:40:35 +02:00
parent c7c168ce8d
commit 833f00591c
4 changed files with 131 additions and 2 deletions

View File

@ -45,7 +45,7 @@ Asjon necessita di:
1. lanciare `bin/hubot` per testare il bot. Per usare le variabili d'ambiente usare
la sintassi di bash `VARIABILE=valore VAR2=valore2 bin/hubot`.
### Testing
### Utilizzo
Puoi avviare asjon eseguendo
@ -58,6 +58,19 @@ Se tutto va bene dovrebbe comparire una cosa del genere:
Puoi interagire con asjon scrivendo `asjon help` o qualsiasi altro suo comando.
### Test
Asjon dispone di alcuni test d'integrità nella cartella `test/`.
Per eseguirli, occorre:
1. installare [mocha](http://mochajs.org) tramite `npm install -g mocha` (potrebbe essere necessario sudo)
1. installare le dipendenze di sviluppo tramite `npm install --dev`
1. lanciare i test tramite `npm test` dalla cartella della repo
__Nota Bene:__ è opportuno __eseguire sempre i test d'integrità prima di contribuire una modifica__. Ancora meglio sarebbe
allegare dei test di integrità insieme alle nuove funzioni aggiunte
### Scripting
Gli script di Asjon sono nella cartella `scripts`.

30
asjon-testing.coffee Normal file
View File

@ -0,0 +1,30 @@
#expect = require("chai").expect
path = require("path")
Robot = require("hubot/src/robot")
TextMessage = require("hubot/src/message").TextMessage
before = (done) ->
robot = new Robot null, "mock-adapter", no, 'asjon'
robot.adapter.on 'connected', ->
#robot.loadFile (path.resolve path.join 'scripts/memoria.coffee'), 'memoria.coffee'
user = robot.brain.userForId "1", { name: 'mocha', room: '#mocha' }
adapter = robot.adapter
send = (s) -> robot.adapter.receive new TextMessage user, s
receive = (f) -> robot.adapter.on 'send', f
after = -> robot.shutdown()
clear = -> robot.adapter.removeAllListeners(); robot.httpListener = []
# Mock http calls
###
robot.onHttp = (f) -> robot.httpListener = f
robot.http = (addr) ->
get: ->
robot.onHttp addr,
###
done
robot: robot, user: user, send: send, receive: receive
TextMessage: TextMessage, Robot: Robot
adapter: adapter, after: after, clear: clear
robot.run()
module.exports = before

View File

@ -1,6 +1,6 @@
{
"name": "asjon",
"version": "0.0.0",
"version": "1.1.2",
"private": true,
"author": "Enrico Fasoli <fazius2009@gmail.com>",
"description": "Il miglior amico della 5IA",
@ -29,7 +29,14 @@
"soupselect": "^0.2.0",
"weak": "^0.4.0"
},
"scripts": {
"test": "mocha test/ --compilers coffee:coffee-script/register"
},
"engines": {
"node": "0.10.x"
},
"devDependencies": {
"chai": "^2.3.0",
"hubot-mock-adapter": "^1.0.0"
}
}

79
test/memoria-test.coffee Normal file
View File

@ -0,0 +1,79 @@
expect = require("chai").should()
Asjon = require '../asjon-testing.coffee'
asjon = undefined
describe 'modulo memoria', ->
before (done) ->
# Inizializzo robot
Asjon (assa) ->
asjon = assa
after asjon.after
afterEach asjon.clear
require('../scripts/memoria.coffee')(asjon.robot)
done()
it 'risponde quando richiesto', (done) ->
replies = 0
arr = ["cos'è","qual'è","chi è","cosa sono","quand'è"]
asjon.receive (envelope,strings) ->
replies++
if replies is 5 then done()
arr.map (x) -> 'asjon ' + x + ' test' + (if Math.random() > 0.5 then '?' else '')
.forEach (x) -> asjon.send x
it 'permette di memorizzare un ricordo', (done) ->
asjon.receive (e,l) ->
l.join().should.match /non sapevo che (.+)/i
done()
asjon.send 'asjon ricordati che a è b'
it 'permette di alterare un ricordo', (done) ->
acc = 0
asjon.receive (e,l) ->
l.join().should.match /pensavo che a fosse(ro)? (?:b|c). Mi ricorderò che invece è (?:c|b)/i
acc++
if acc is 3 then done()
asjon.send "asjon ricordati che a è c"
asjon.send "asjon ricordati che a = b"
asjon.send "asjon ricordati che a sono c"
it 'permette di eliminare un ricordo', (done) ->
asjon.receive (e,l) ->
l.join().should.match /^in caso cambi idea/i
done()
asjon.send 'asjon dimentica a'
it 'permette di visualizzare una data', (done) ->
asjon.receive (e,l) ->
l.join().should.match /^l'8 dicembre è Martedì 8º dicembre 2015 ovvero/i
done()
asjon.send "asjon quand'è l'8 dicembre"
it 'visualizza un argomento data solo se opportuno', (done) ->
asjon.receive (e,l) ->
l.join().should.not.match /^l'8 dicembre è Martedì 8º dicembre 2015 ovvero/i
done()
asjon.send "asjon chi è l'8 dicembre"
it 'visualizza un valore data solo se opportuno', (done) ->
acc = 0
asjon.receive (e,l) ->
acc++
l.join().should.not.match /a è Martedì .+/i
if acc is 2 then done()
asjon.send "asjon ricordati che a è l'8 dicembre"
asjon.send "asjon chi è a?"
it 'offre un memory dump per debugging', (done) ->
asjon.receive (e,l) ->
JSON.parse(l.join()).should.be.a 'object'
done()
asjon.send 'asjon memory-dump'
it 'non interferisce con "circolari"', (done) ->
# se done() viene chiamato piu di 1 volta il test fallisce
asjon.receive (e,l) -> done()
asjon.send 'asjon cosa sono a?'
asjon.send 'asjon cosa sono le circolari'