asjon/test/meteo-test.coffee

90 lines
2.6 KiB
CoffeeScript
Raw Permalink Normal View History

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'