aggiunti test per meteo

This commit is contained in:
Enrico Fasoli 2015-04-28 19:52:29 +02:00
parent 5a5850ad80
commit 657d4909e2
2 changed files with 68 additions and 1 deletions

View File

@ -16,14 +16,18 @@
moment = require 'moment'
module.exports = (robot) ->
robot.respond /che tempo(?: c'è| fa)?(?: a crema)?(?:\?)?/i, (res) ->
robot.respond /(?:che )?(?:tempo|meteo)(?: c'è| fa)?(?: a crema)?(?:\?)?/i, (res) ->
url = 'http://api.openweathermap.org/data/2.5/weather?id=3177841&lang=it&units=metric'
robot.http(url)
.get() (err, r, body) ->
if err
return res.send 'Errore nel guardare il cielo.\n'+err
try
body = JSON.parse body
catch e
return res.send 'Errore nel guardare il cielo.'
unless body?.sys? and body?.main? and body?.weather?.push?
return res.send 'Errore nel guardare il cielo.\n'+JSON.stringify(body)
alba = moment.unix(body.sys.sunrise).format('H:MM')
tramonto = moment.unix(body.sys.sunset).format('H:MM')
m = body.weather[0].description+' con '+body.main.humidity

63
test/meteo-test.coffee Normal file
View File

@ -0,0 +1,63 @@
nock = require 'nock'
expect = require("chai").should()
Asjon = require '../asjon-testing.coffee'
asjon = undefined
payload =
sys:
sunrise: 12345
sunset: 12345
main:
humidity: 50
temp: 20
weather: [ description: 'ok' ]
describe 'modulo meteo', ->
before (done) ->
# Inizializzo robot
Asjon (assa) ->
asjon = assa
after asjon.after
afterEach asjon.clear
beforeEach nock.disableNetConnect
require('../scripts/meteo.coffee')(asjon.robot)
done()
it 'dovrebbe rispondere quando interrogato', (done) ->
questions = [
"asjon che tempo c'è a crema"
"asjon che tempo fa a crema?"
"asjon che tempo c'è"
"asjon che tempo fa?"
"asjon meteo a crema"
"asjon meteo"
]
nock('http://api.openweathermap.org')
.get('/data/2.5/weather?id=3177841&lang=it&units=metric')
.times questions.length
.reply 200, payload
acc = 0
asjon.receive (e,l) ->
acc++
if acc is questions.length then done()
questions.map (q) -> asjon.send q
it 'dovrebbe reagire correttamente a un errore nel payload', (done) ->
nock('http://api.openweathermap.org')
.get('/data/2.5/weather?id=3177841&lang=it&units=metric')
.reply 500, 'very error'
asjon.receive (e,l) ->
l.join().should.match /^Errore nel guardare il cielo.$/g
done()
asjon.send 'asjon meteo'
it 'dovrebbe parsare correttamente i dati', (done) ->
nock('http://api.openweathermap.org')
.get('/data/2.5/weather?id=3177841&lang=it&units=metric')
.reply 200, payload
asjon.receive (e,l) ->
l.join().should.match /^Meteo per Crema: /g
done()
asjon.send 'asjon meteo'