diff --git a/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs new file mode 100644 index 0000000..04db0d6 --- /dev/null +++ b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs @@ -0,0 +1,52 @@ +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", + Image = "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.Image, 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 @@ + diff --git a/src/SlackConnector/Connections/Models/Profile.cs b/src/SlackConnector/Connections/Models/Profile.cs index a92d94e..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,6 +14,11 @@ internal class Profile [JsonProperty("real_name_normalized")] public string RealNameNormalised { get; set; } + [JsonProperty("image_512")] + public string Image { 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..8813ebb 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?.Image, + 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 {