1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- require 'rails_helper'
- describe Agents::WitaiAgent do
- before do
- stub_request(:get, /wit/).to_return(:body => File.read(Rails.root.join('spec/data_fixtures/witai.json')), :status => 200, :headers => {'Content-Type' => 'text/json'})
- @valid_params = {
- :server_access_token => 'x',
- :expected_receive_period_in_days => '2',
- :query => '{{message.content}}'
- }
- @checker = Agents::WitaiAgent.new :name => 'wit.ai agent',
- :options => @valid_params
- @checker.user = users :jane
- @checker.save!
- @event = Event.new
- @event.agent = agents :jane_weather_agent
- @event.payload = {:message => {
- :content => 'set the temperature to 22 degrees at 7 PM'
- }}
- @event.save!
- end
- describe '#validation' do
- before do
- expect(@checker).to be_valid
- end
- it 'validates presence of server access token' do
- @checker.options[:server_access_token] = nil
- expect(@checker).not_to be_valid
- end
- it 'validates presence of query' do
- @checker.options[:query] = nil
- expect(@checker).not_to be_valid
- end
- it 'validates presence of expected receive period in days key' do
- @checker.options[:expected_receive_period_in_days] = nil
- expect(@checker).not_to be_valid
- end
- end
- describe '#working' do
- it 'checks if agent is working when event is received withing expected number of days' do
- expect(@checker).not_to be_working
- Agents::WitaiAgent.async_receive @checker.id, [@event.id]
- expect(@checker.reload).to be_working
- two_days_from_now = 2.days.from_now
- allow(Time).to receive(:now) { two_days_from_now }
- expect(@checker.reload).not_to be_working
- end
- end
- describe '#receive' do
- it 'checks that a new event is created after receiving one' do
- expect {
- @checker.receive([@event])
- }.to change { Event.count }.by(1)
- end
- it 'checks the integrity of new event' do
- @checker.receive([@event])
- expect(Event.last.payload[:outcomes][0][:_text]).to eq(@event.payload[:message][:content])
- end
- end
- end
|