64 lines
1.7 KiB
CoffeeScript
64 lines
1.7 KiB
CoffeeScript
|
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'
|