spec/lita/handlers/tweet_spec.rb in lita-tweet-0.3.0 vs spec/lita/handlers/tweet_spec.rb in lita-tweet-0.4.0

- old
+ new

@@ -1,4 +1,63 @@ require "spec_helper" describe Lita::Handlers::Tweet, lita_handler: true do + # Chat routes + { + "tweet some text" => :tweet, + "untweet" => :untweet, + "twitter accounts" => :accounts, + "twitter accounts add" => :accounts, + "twitter accounts remove foo" => :accounts, + "twitter default foo" => :default, + "twitter map" => :map, + "twitter map foo" => :map, + "twitter unmap foo" => :unmap + }.each do |command, method| + it { is_expected.to route_command(command). + with_authorization_for(:tweeters). + to(method) } + end + + # HTTP routes + { + "/twitter/auth" => :twitter_auth, + "/twitter/callback" => :twitter_auth_callback + }.each do |route, method| + it { is_expected.to route_http(:get, route).to(method) } + end + + before(:each) do + Lita::Authorization.new(registry.config).add_user_to_group!(source.user, :tweeters) + end + + describe "#tweet" do + context "without an authorized account" do + it "should complain" do + send_command("tweet some text") + expect(replies).to include(/no accounts/i) + end + end + + context "with an authorized account" do + before do + subject.twitter_data.add_account("token", "secret", "handle") + end + + it "should send a tweet" do + stub_request(:post, "https://api.twitter.com/1.1/statuses/update.json"). + with(body: {status: "some text"}).to_return(status: 200, body: %q[{ + "created_at": "Sun Aug 14 01:53:54 +0000 2016", + "id": 12345, + "text": "some text", + "user": { + "id": 123, + "screen_name": "handle", + "created_at": "Wed Nov 04 17:18:22 +0000 2009" + } + }]) + send_command("tweet some text") + expect(replies).to include("https://twitter.com/handle/status/12345") + end + end + end end