aggiunti test per meteo
This commit is contained in:
parent
5a5850ad80
commit
657d4909e2
@ -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
63
test/meteo-test.coffee
Normal 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'
|
Loading…
Reference in New Issue
Block a user