From 947e828527a11c43f4e94f7986730a60bb73e4bf Mon Sep 17 00:00:00 2001 From: "Montague, Brent" Date: Tue, 13 Dec 2016 15:28:58 -0500 Subject: [PATCH] Add profile field to slack user and lita user objects --- lib/lita/adapters/slack/slack_user.rb | 6 +++--- lib/lita/adapters/slack/user_creator.rb | 3 ++- spec/lita/adapters/slack/slack_user_spec.rb | 10 ++++++---- spec/lita/adapters/slack/user_creator_spec.rb | 12 +++++++----- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lib/lita/adapters/slack/slack_user.rb b/lib/lita/adapters/slack/slack_user.rb index ca49cd5..7cff537 100644 --- a/lib/lita/adapters/slack/slack_user.rb +++ b/lib/lita/adapters/slack/slack_user.rb @@ -27,8 +27,8 @@ def from_data_array(users_data) attr_reader :name # @return [String] The user's display name, e.g. Alice Bobhart attr_reader :real_name - # @return [String] The user's email address, e.g. alice@example.com - attr_reader :email + # @return [Hash] The user's profile object from slack + attr_reader :profile # @return [Hash] The raw user data received from Slack, including many more fields. attr_reader :metadata @@ -36,7 +36,7 @@ def initialize(id, name, real_name, metadata) @id = id @name = name @real_name = real_name.to_s - @email = metadata['email'].to_s + @profile = metadata['profile'] || Hash.new('') @metadata = metadata end diff --git a/lib/lita/adapters/slack/user_creator.rb b/lib/lita/adapters/slack/user_creator.rb index 5cbedb1..6b8ac65 100644 --- a/lib/lita/adapters/slack/user_creator.rb +++ b/lib/lita/adapters/slack/user_creator.rb @@ -8,7 +8,8 @@ def create_user(slack_user, robot, robot_id) User.create( slack_user.id, name: real_name(slack_user), - mention_name: slack_user.name + mention_name: slack_user.name, + email: slack_user.profile['email'] ) update_robot(robot, slack_user) if slack_user.id == robot_id diff --git a/spec/lita/adapters/slack/slack_user_spec.rb b/spec/lita/adapters/slack/slack_user_spec.rb index 26f73a7..8afaee1 100644 --- a/spec/lita/adapters/slack/slack_user_spec.rb +++ b/spec/lita/adapters/slack/slack_user_spec.rb @@ -6,7 +6,9 @@ "id" => "U023BECGF", "name" => "bobby", "real_name" => "Bobby Tables", - "email" => "btables@example.com" + "profile" => { + "email" => "btables@example.com" + } } end let(:user_data_2) do @@ -28,15 +30,15 @@ expect(subject[0].id).to eq('U023BECGF') expect(subject[0].name).to eq('bobby') expect(subject[0].real_name).to eq('Bobby Tables') - expect(subject[0].email).to eq('btables@example.com') + expect(subject[0].profile['email']).to eq('btables@example.com') expect(subject[1].id).to eq('U024BE7LH') expect(subject[1].name).to eq('carl') expect(subject[1].real_name).to eq('') - expect(subject[1].email).to eq('') + expect(subject[1].profile['email']).to eq('') end it "raw_data matches the metadata" do - expect(subject[0].metadata['email']).to eq(subject[0].raw_data['email']) + expect(subject[0].metadata['name']).to eq(subject[0].raw_data['name']) end end end diff --git a/spec/lita/adapters/slack/user_creator_spec.rb b/spec/lita/adapters/slack/user_creator_spec.rb index 8a8003d..8f61b41 100644 --- a/spec/lita/adapters/slack/user_creator_spec.rb +++ b/spec/lita/adapters/slack/user_creator_spec.rb @@ -14,15 +14,16 @@ describe ".create_users" do let(:real_name) { 'Bobby Tables' } let(:email) { 'bobby@example.com' } - let(:bobby) { Lita::Adapters::Slack::SlackUser.new('U023BECGF', 'bobby', real_name, slack_data) } let(:robot_id) { 'U12345678' } - let(:slack_data) { { 'id' => 'U023BECGF', 'name' => 'bobby', 'real_name' => real_name, 'email' => email } } + let(:slack_data) { { 'id' => 'U023BECGF', 'name' => 'bobby', 'real_name' => real_name, 'profile' => { 'email' => email } } } + let(:bobby) { Lita::Adapters::Slack::SlackUser.new('U023BECGF', 'bobby', real_name, slack_data) } it "creates Lita users for each user in the provided data" do expect(Lita::User).to receive(:create).with( 'U023BECGF', name: 'Bobby Tables', - mention_name: 'bobby' + mention_name: 'bobby', + email: 'bobby@example.com' ) expect(robot).to receive(:trigger).with( :slack_user_created, @@ -39,7 +40,8 @@ expect(Lita::User).to receive(:create).with( 'U023BECGF', name: 'bobby', - mention_name: 'bobby' + mention_name: 'bobby', + email: 'bobby@example.com' ) described_class.create_users([bobby], robot, robot_id) @@ -49,7 +51,7 @@ describe ".create_user" do let(:robot_id) { 'U12345678' } - let(:slack_data) { { 'id' => robot_id, 'name' => 'litabot', 'real_name' => 'Lita Bot', 'email' => 'litabot@example.com' } } + let(:slack_data) { { 'id' => robot_id, 'name' => 'litabot', 'real_name' => 'Lita Bot', 'profile' => { 'email' => 'litabot@example.com' } } } let(:slack_user) { Lita::Adapters::Slack::SlackUser.new(robot_id, 'litabot', 'Lita Bot', slack_data) } it "updates the robot's name and mention name if it applicable" do