Sha256: c7f000ff7531a45eae29f9455e6955cb7e1e1abed8c55e9e1dce7fd8cf18bd64

Contents?: true

Size: 1.81 KB

Versions: 7

Compression:

Stored size: 1.81 KB

Contents

require "spec_helper"

describe Lita::Message do
  let(:robot) { double("Lita::Robot", name: "Lita", mention_name: "LitaBot") }

  subject do
    described_class.new(robot, "Hello", "Carl")
  end

  it "has a body" do
    expect(subject.body).to eq("Hello")
  end

  it "has a source" do
    expect(subject.source).to eq("Carl")
  end

  describe "#args" do
    it "returns an array of the 2nd through nth word in the message" do
      subject = described_class.new(robot, "args foo bar", "Carl")
      expect(subject.args).to eq(["foo", "bar"])
    end

    it "escapes messages that have mismatched quotes" do
      subject = described_class.new(robot, "args it's working", "Carl")
      expect(subject.args).to eq(["it's", "working"])
    end
  end

  describe "#command!" do
    it "marks a message as a command" do
      subject.command!
      expect(subject).to be_a_command
    end
  end

  describe "#command?" do
    it "is true when the message is addressed to the Robot" do
      subject = described_class.new(
        robot,
        "#{robot.mention_name}: hello",
        "Carl"
      )
      expect(subject).to be_a_command
    end

    it "is true when the Robot's name is capitalized differently" do
      subject = described_class.new(
        robot,
        "#{robot.mention_name.upcase}: hello",
        "Carl"
      )
      expect(subject).to be_a_command
    end

    it "is false when the message is not addressed to the Robot" do
      expect(subject).not_to be_a_command
    end
  end

  describe "#user" do
    it "delegates to #source" do
      expect(subject.source).to receive(:user)
      subject.user
    end
  end

  describe "#reply" do
    it "sends strings back to the source through the robot" do
      expect(robot).to receive(:send_messages).with("Carl", "foo", "bar")
      subject.reply("foo", "bar")
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lita-2.3.0 spec/lita/message_spec.rb
lita-2.2.1 spec/lita/message_spec.rb
lita-2.2.0 spec/lita/message_spec.rb
lita-2.1.2 spec/lita/message_spec.rb
lita-2.1.1 spec/lita/message_spec.rb
lita-2.1.0 spec/lita/message_spec.rb
lita-2.0.0 spec/lita/message_spec.rb