aggiunti test di integrità
This commit is contained in:
parent
c7c168ce8d
commit
833f00591c
15
README.md
15
README.md
@ -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
30
asjon-testing.coffee
Normal 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
|
@ -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
79
test/memoria-test.coffee
Normal 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'
|
||||
|
Loading…
Reference in New Issue
Block a user