Skip to content
Extraits de code Groupes Projets
twitter_spec.rb 3,17 ko
Newer Older
  • Learn to ignore specific revisions
  • describe Services::Twitter do
    
        @post = @user.post(:status_message, :text => "hello", :to =>@user.aspects.first.id)
    
        @service = Services::Twitter.new(:access_token => "yeah", :access_secret => "foobar")
        @user.services << @service
      end
    
      describe '#post' do
        it 'posts a status message to twitter' do
    
    Raphael Sofaer's avatar
    Raphael Sofaer a validé
          Twitter.should_receive(:update).with(@post.text)
    
    maxwell's avatar
    maxwell a validé
          @service.post(@post)
        end
    
         it 'swallows exception raised by twitter always being down' do
    
          Twitter.should_receive(:update).and_raise(StandardError)
    
    maxwell's avatar
    maxwell a validé
          @service.post(@post)
        end
    
        it 'should call public message' do
          Twitter.stub!(:update)
          url = "foo"
          @service.should_receive(:public_message).with(@post, url)
          @service.post(@post, url)
    
      describe "message size limits" do
        before :each do
    
          @long_message_start = SecureRandom.hex(25)
          @long_message_end = SecureRandom.hex(25)
    
        end
    
        it "should not truncate a short message" do
    
          short_message = SecureRandom.hex(20)
    
          short_post = stub(:text => short_message )
    
          @service.public_message(short_post, '').should == short_message
        end
        it "should truncate a long message" do
    
          long_message = SecureRandom.hex(220)
    
          long_post = stub(:text => long_message )
    
          @service.public_message(long_post, '').should == long_message.first(137) + "..."
    
        end
        it "should not truncate a long message with an http url" do
    
          long_message = @long_message_start + " http://joindiaspora.com/a-very-long-url-name-that-will-be-shortened.html " + @long_message_end
    
          long_post = stub(:text => long_message )
    
          answer = @service.public_message(long_post, '')
    
    
          answer.starts_with?( @long_message_start ).should be_true
          answer.ends_with?( @long_message_end ).should be_true
    
        end
        it "should not truncate a long message with an https url" do
    
          long_message = @long_message_start + " https://joindiaspora.com/a-very-long-url-name-that-will-be-shortened.html " + @long_message_end
    
          long_post = stub(:text => long_message )
    
          answer = @service.public_message(long_post, '')
    
          answer.starts_with?( @long_message_start ).should be_true
          answer.ends_with?( @long_message_end ).should be_true
    
        it "should truncate a long message with an ftp url" do
          long_message = @long_message_start + " ftp://joindiaspora.com/a-very-long-url-name-that-will-be-shortened.html " + @long_message_end
    
          long_post = stub(:text => long_message )
    
          answer = @service.public_message(long_post, '')
    
    
          answer.starts_with?( @long_message_start ).should be_true
          answer.ends_with?( @long_message_end ).should_not be_true
    
          stub_request(:get, "https://api.twitter.com/1/users/profile_image/joindiaspora?size=original").
    
            to_return(:status => 302, :body => "", :headers => {:location => "http://a2.twimg.com/profile_images/uid/avatar.png"})
    
    
          @service.nickname = "joindiaspora"
          @service.profile_photo_url.should == 
    
          "http://a2.twimg.com/profile_images/uid/avatar.png"