2015-04-28 19:52:29 +02:00
|
|
|
nock = require 'nock'
|
|
|
|
expect = require("chai").should()
|
|
|
|
|
2017-02-27 00:27:39 +01:00
|
|
|
Asjon = require './asjon-testing.coffee'
|
2015-04-28 19:52:29 +02:00
|
|
|
asjon = undefined
|
|
|
|
|
2015-08-28 01:08:36 +02:00
|
|
|
loc_payload =
|
|
|
|
city: "Milano"
|
|
|
|
|
2016-03-19 16:09:25 +01:00
|
|
|
key = 'totally-legit-key'
|
|
|
|
|
2015-04-28 19:52:29 +02:00
|
|
|
payload =
|
2015-08-28 01:08:36 +02:00
|
|
|
name: loc_payload.city
|
2015-04-28 19:52:29 +02:00
|
|
|
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()
|
|
|
|
|
2016-03-19 16:09:25 +01:00
|
|
|
it 'non dovrebbe rispondere se manca l\'API key', (done) ->
|
|
|
|
process.env.WEATHER_API_KEY = ''
|
|
|
|
asjon.receive (e,l) ->
|
|
|
|
l.join().should.equal 'errore nel guardare il cielo:\nnon ho la chiave per openweathermap :('
|
|
|
|
done()
|
|
|
|
asjon.send 'asjon meteo'
|
|
|
|
|
2015-04-28 19:52:29 +02:00
|
|
|
it 'dovrebbe rispondere quando interrogato', (done) ->
|
2016-03-19 16:09:25 +01:00
|
|
|
process.env.WEATHER_API_KEY = key
|
2015-04-28 19:52:29 +02:00
|
|
|
questions = [
|
2018-09-15 13:29:13 +02:00
|
|
|
"asjon mi dici il tempo per roma?"
|
|
|
|
"asjon dammi le previsioni!"
|
|
|
|
"asjon dammi le previsioni per milano"
|
|
|
|
"asjon mi dai il meteo per l'aquila?"
|
|
|
|
"asjon che tempo c'è in grecia?"
|
2015-04-28 19:52:29 +02:00
|
|
|
"asjon che tempo fa a crema?"
|
2015-08-28 01:08:36 +02:00
|
|
|
"asjon che tempo c'è?"
|
2015-04-28 19:52:29 +02:00
|
|
|
"asjon che tempo fa?"
|
|
|
|
]
|
|
|
|
nock('http://api.openweathermap.org')
|
2016-03-19 16:09:25 +01:00
|
|
|
.get('/data/2.5/weather?lang=it&units=metric&appid='+key+'&q='+loc_payload.city)
|
2015-04-28 19:52:29 +02:00
|
|
|
.times questions.length
|
|
|
|
.reply 200, payload
|
2015-08-28 01:08:36 +02:00
|
|
|
nock('http://ip-api.com')
|
|
|
|
.get('/json')
|
|
|
|
.times 2
|
|
|
|
.reply 200, loc_payload
|
2015-04-28 19:52:29 +02:00
|
|
|
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) ->
|
2016-03-19 16:09:25 +01:00
|
|
|
process.env.WEATHER_API_KEY = key
|
2015-04-28 19:52:29 +02:00
|
|
|
nock('http://api.openweathermap.org')
|
2016-03-19 16:09:25 +01:00
|
|
|
.get('/data/2.5/weather?lang=it&units=metric&appid='+key+'&q='+loc_payload.city)
|
2015-04-28 19:52:29 +02:00
|
|
|
.reply 500, 'very error'
|
|
|
|
asjon.receive (e,l) ->
|
2015-08-28 01:08:36 +02:00
|
|
|
l.join().should.match /^errore nel guardare il cielo/g
|
2015-04-28 19:52:29 +02:00
|
|
|
done()
|
|
|
|
asjon.send 'asjon meteo'
|
|
|
|
|
2015-08-28 01:08:36 +02:00
|
|
|
it 'dovrebbe trovare la posizione correttamente', (done) ->
|
2016-03-19 16:09:25 +01:00
|
|
|
process.env.WEATHER_API_KEY = key
|
2015-04-28 19:52:29 +02:00
|
|
|
nock('http://api.openweathermap.org')
|
2016-03-19 16:09:25 +01:00
|
|
|
.get('/data/2.5/weather?lang=it&units=metric&appid='+key+'&q='+loc_payload.city)
|
2015-04-28 19:52:29 +02:00
|
|
|
.reply 200, payload
|
2015-08-28 01:08:36 +02:00
|
|
|
nock('http://ip-api.com')
|
|
|
|
.get('/json/')
|
|
|
|
.times 1
|
|
|
|
.reply 200, loc_payload
|
|
|
|
asjon.receive (e,l) ->
|
|
|
|
l.join().split(' ')[2].should.equal loc_payload.city+":\n"
|
|
|
|
l.join().should.match /^meteo per /g
|
|
|
|
done()
|
2015-04-28 19:52:29 +02:00
|
|
|
asjon.send 'asjon meteo'
|