From b104316139845b926206b10f2a6856f1729daf0c Mon Sep 17 00:00:00 2001 From: Runar Ovesen Hjerpbakk Date: Tue, 16 May 2017 15:18:20 +0200 Subject: [PATCH 1/3] Added multiple information elements needed for my use --- src/SlackConnector/Connections/Models/Profile.cs | 5 +++++ src/SlackConnector/Extensions/UserExtensions.cs | 7 ++++++- src/SlackConnector/Models/SlackUser.cs | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/SlackConnector/Connections/Models/Profile.cs b/src/SlackConnector/Connections/Models/Profile.cs index a92d94e..1a439fe 100644 --- a/src/SlackConnector/Connections/Models/Profile.cs +++ b/src/SlackConnector/Connections/Models/Profile.cs @@ -16,6 +16,11 @@ internal class Profile [JsonProperty("real_name_normalized")] public string RealNameNormalised { get; set; } + [JsonProperty("image_original")] + public string ImageOriginal { get; set; } + public string Email { get; set; } + + public string Title { get; set; } } } \ No newline at end of file diff --git a/src/SlackConnector/Extensions/UserExtensions.cs b/src/SlackConnector/Extensions/UserExtensions.cs index 998f336..f7903ed 100644 --- a/src/SlackConnector/Extensions/UserExtensions.cs +++ b/src/SlackConnector/Extensions/UserExtensions.cs @@ -13,7 +13,12 @@ public static SlackUser ToSlackUser(this User user) Name = user.Name, Email = user.Profile?.Email, TimeZoneOffset = user.TimeZoneOffset, - IsBot = user.IsBot + IsBot = user.IsBot, + FirstName = user.Profile?.FirstName, + LastName = user.Profile?.LastName, + Image = user.Profile?.ImageOriginal, + WhatIDo = user.Profile?.Title, + Deleted = user.Deleted }; if (!string.IsNullOrWhiteSpace(user.Presence)) diff --git a/src/SlackConnector/Models/SlackUser.cs b/src/SlackConnector/Models/SlackUser.cs index 9954317..a411f8c 100644 --- a/src/SlackConnector/Models/SlackUser.cs +++ b/src/SlackConnector/Models/SlackUser.cs @@ -5,6 +5,11 @@ public class SlackUser public string Id { get; set; } public string Name { get; set; } public string Email { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string Image { get; set; } + public string WhatIDo { get; set; } + public bool Deleted { get; set; } public string FormattedUserId { From c60fc9158ee91f905c3785d6e78c6f7ff4af63f6 Mon Sep 17 00:00:00 2001 From: Runar Ovesen Hjerpbakk Date: Thu, 18 May 2017 12:28:48 +0200 Subject: [PATCH 2/3] Added tests --- .../Extensions/UserExtensionsTests.cs | 58 +++++++++++++++++++ .../SlackConnector.Tests.Unit.csproj | 1 + 2 files changed, 59 insertions(+) create mode 100644 src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs diff --git a/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs new file mode 100644 index 0000000..99ae0a7 --- /dev/null +++ b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs @@ -0,0 +1,58 @@ +using NUnit.Framework; +using SlackConnector.Connections.Models; +using SlackConnector.Extensions; + +namespace SlackConnector.Tests.Unit.Extensions +{ + [TestFixture] + public class UserExtensionsTests + { + [Test] + public void should_create_slack_user_from_user() + { + var user = new User + { + Id = "Id", + Name = "Name", + TimeZoneOffset = 0L, + IsBot = false, + Deleted = false, + Presence = "active", + Profile = new Profile + { + Email = "a@b.c", + FirstName = "First", + LastName = "Last", + ImageOriginal = "http://image.com", + Title = "Developer" + } + }; + + var slackUser = user.ToSlackUser(); + + Assert.AreEqual(user.Id, slackUser.Id); + Assert.AreEqual(user.Name, slackUser.Name); + Assert.AreEqual(user.Profile.Email, slackUser.Email); + Assert.AreEqual(user.TimeZoneOffset, slackUser.TimeZoneOffset); + Assert.AreEqual(user.IsBot, slackUser.IsBot); + Assert.AreEqual(user.Profile.FirstName, slackUser.FirstName); + Assert.AreEqual(user.Profile.LastName, slackUser.LastName); + Assert.AreEqual(user.Profile.ImageOriginal, slackUser.Image); + Assert.AreEqual(user.Profile.Title, slackUser.WhatIDo); + Assert.AreEqual(user.Deleted, slackUser.Deleted); + Assert.IsNotNull(slackUser.Online); + Assert.IsTrue(slackUser.Online.Value); + } + + [Test] + public void should_create_slack_user_from_incomplete_user() + { + var user = new User { Presence = "Away" }; + + var slackUser = user.ToSlackUser(); + + Assert.IsNotNull(slackUser.Online); + Assert.IsFalse(slackUser.Online.Value); + } + } +} \ No newline at end of file diff --git a/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj b/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj index 3e20c73..fc75396 100644 --- a/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj +++ b/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj @@ -152,6 +152,7 @@ + From 0474df95b5a7d68173a3c1473b04e1fd5d56e756 Mon Sep 17 00:00:00 2001 From: Runar Ovesen Hjerpbakk Date: Fri, 26 May 2017 10:03:29 +0200 Subject: [PATCH 3/3] Using image_512 instead of image_original. --- .../Extensions/UserExtensionsTests.cs | 24 +++++++------------ .../Connections/Models/Profile.cs | 10 ++++---- .../Extensions/UserExtensions.cs | 2 +- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs index 99ae0a7..04db0d6 100644 --- a/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs +++ b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs @@ -2,28 +2,23 @@ using SlackConnector.Connections.Models; using SlackConnector.Extensions; -namespace SlackConnector.Tests.Unit.Extensions -{ +namespace SlackConnector.Tests.Unit.Extensions { [TestFixture] - public class UserExtensionsTests - { + public class UserExtensionsTests { [Test] - public void should_create_slack_user_from_user() - { - var user = new User - { + public void should_create_slack_user_from_user() { + var user = new User { Id = "Id", Name = "Name", TimeZoneOffset = 0L, IsBot = false, Deleted = false, Presence = "active", - Profile = new Profile - { + Profile = new Profile { Email = "a@b.c", FirstName = "First", LastName = "Last", - ImageOriginal = "http://image.com", + Image = "http://image.com", Title = "Developer" } }; @@ -37,7 +32,7 @@ public void should_create_slack_user_from_user() Assert.AreEqual(user.IsBot, slackUser.IsBot); Assert.AreEqual(user.Profile.FirstName, slackUser.FirstName); Assert.AreEqual(user.Profile.LastName, slackUser.LastName); - Assert.AreEqual(user.Profile.ImageOriginal, slackUser.Image); + Assert.AreEqual(user.Profile.Image, slackUser.Image); Assert.AreEqual(user.Profile.Title, slackUser.WhatIDo); Assert.AreEqual(user.Deleted, slackUser.Deleted); Assert.IsNotNull(slackUser.Online); @@ -45,9 +40,8 @@ public void should_create_slack_user_from_user() } [Test] - public void should_create_slack_user_from_incomplete_user() - { - var user = new User { Presence = "Away" }; + public void should_create_slack_user_from_incomplete_user() { + var user = new User {Presence = "Away"}; var slackUser = user.ToSlackUser(); diff --git a/src/SlackConnector/Connections/Models/Profile.cs b/src/SlackConnector/Connections/Models/Profile.cs index 1a439fe..cceefac 100644 --- a/src/SlackConnector/Connections/Models/Profile.cs +++ b/src/SlackConnector/Connections/Models/Profile.cs @@ -1,9 +1,7 @@ using Newtonsoft.Json; -namespace SlackConnector.Connections.Models -{ - internal class Profile - { +namespace SlackConnector.Connections.Models { + internal class Profile { [JsonProperty("first_name")] public string FirstName { get; set; } @@ -16,8 +14,8 @@ internal class Profile [JsonProperty("real_name_normalized")] public string RealNameNormalised { get; set; } - [JsonProperty("image_original")] - public string ImageOriginal { get; set; } + [JsonProperty("image_512")] + public string Image { get; set; } public string Email { get; set; } diff --git a/src/SlackConnector/Extensions/UserExtensions.cs b/src/SlackConnector/Extensions/UserExtensions.cs index f7903ed..8813ebb 100644 --- a/src/SlackConnector/Extensions/UserExtensions.cs +++ b/src/SlackConnector/Extensions/UserExtensions.cs @@ -16,7 +16,7 @@ public static SlackUser ToSlackUser(this User user) IsBot = user.IsBot, FirstName = user.Profile?.FirstName, LastName = user.Profile?.LastName, - Image = user.Profile?.ImageOriginal, + Image = user.Profile?.Image, WhatIDo = user.Profile?.Title, Deleted = user.Deleted };