require 'rails_helper' require 'models/concerns/oauthable' describe Agents::WunderlistAgent do it_behaves_like Oauthable before(:each) do @valid_params = { 'list_id' => '12345', 'title' => '{{title}}: {{url}}', } @checker = Agents::WunderlistAgent.new(:name => "somename", :options => @valid_params) @checker.user = users(:jane) @checker.service = services(:generic) @checker.save! @event = Event.new @event.agent = agents(:bob_weather_agent) @event.payload = { title: 'hello', url: 'www.example.com'} @event.save! end describe "validating" do before do expect(@checker).to be_valid end it "should require the title" do @checker.options['title'] = nil expect(@checker).not_to be_valid end it "should require the list_id" do @checker.options['list_id'] = nil expect(@checker).not_to be_valid end end it "should generate the request_options" do expect(@checker.send(:request_options)).to eq({:headers=>{"Content-Type"=>"application/json", "User-Agent"=>"Huginn - https://github.com/huginn/huginn", "X-Access-Token"=>"1234token", "X-Client-ID"=>"wunderoauthkey"}}) end describe "#complete_list_id" do it "should return a array of hashes" do stub_request(:get, 'https://a.wunderlist.com/api/v1/lists').to_return( :body => JSON.dump([{title: 'test', id: 12345}]), :headers => {"Content-Type" => "text/json"} ) expect(@checker.complete_list_id).to eq([{:text=>"test (12345)", :id=>12345}]) end end describe "#receive" do it "send a message to the hipchat" do stub_request(:post, 'https://a.wunderlist.com/api/v1/tasks') @checker.receive([@event]) expect(WebMock).to have_requested(:post, "https://a.wunderlist.com/api/v1/tasks") end end describe "#working?" do it "should be working with no entry in the error log" do expect(@checker).to be_working end it "should not be working with a recent entry in the error log" do @checker.error("test") @checker.reload @checker.last_event_at = Time.now expect(@checker).to_not be_working end end end