diff --git a/SlackNet.Tests/MemberChannelEventTests.cs b/SlackNet.Tests/MemberChannelEventTests.cs new file mode 100644 index 0000000..355b208 --- /dev/null +++ b/SlackNet.Tests/MemberChannelEventTests.cs @@ -0,0 +1,50 @@ +using EasyAssertions; +using Newtonsoft.Json; +using NUnit.Framework; +using SlackNet.Events; + +namespace SlackNet.Tests; + +public class MemberChannelEventTests +{ + private JsonSerializerSettings _sut; + + [SetUp] + public void SetUp() + { + _sut = Default.JsonSettings(Default.SlackTypeResolver(Default.AssembliesContainingSlackTypes)).SerializerSettings; + } + + [Test] + public void MemberJoinedChannel_HasTeamAndEnterprise() + { + var result = Deserialize(@"{ ""type"": ""member_joined_channel"", ""user"": ""W123ABC456"", ""channel"": ""C123ABC456"", ""channel_type"": ""C"", ""team"": ""T123ABC456"", ""inviter"": ""U123456789"", ""enterprise"": ""E123456789"" }"); + + var joined = result.ShouldBeA().And; + joined.Team.ShouldBe("T123ABC456"); + joined.Enterprise.ShouldBe("E123456789"); + joined.ExtraProperties.ShouldBeEmpty(); + } + + [Test] + public void MemberJoinedChannel_WithoutTeamOrEnterprise_HasNeither() + { + var result = Deserialize(@"{ ""type"": ""member_joined_channel"", ""user"": ""W123ABC456"", ""channel"": ""C123ABC456"", ""channel_type"": ""C"" }"); + + var joined = result.ShouldBeA().And; + joined.Team.ShouldBeNull(); + joined.Enterprise.ShouldBeNull(); + } + + [Test] + public void MemberLeftChannel_HasTeam() + { + var result = Deserialize(@"{ ""type"": ""member_left_channel"", ""user"": ""W123ABC456"", ""channel"": ""C123ABC456"", ""channel_type"": ""C"", ""team"": ""T123ABC456"" }"); + + var left = result.ShouldBeA().And; + left.Team.ShouldBe("T123ABC456"); + left.ExtraProperties.ShouldBeEmpty(); + } + + private T Deserialize(string json) => JsonConvert.DeserializeObject(json, _sut); +} diff --git a/SlackNet/Events/MemberJoinedChannel.cs b/SlackNet/Events/MemberJoinedChannel.cs index 3f8284c..cece75a 100644 --- a/SlackNet/Events/MemberJoinedChannel.cs +++ b/SlackNet/Events/MemberJoinedChannel.cs @@ -9,7 +9,15 @@ public class MemberJoinedChannel : Event public string Channel { get; set; } public ChannelType ChannelType { get; set; } /// + /// Team ID, identifying which workspace the user is from. + /// + public string Team { get; set; } + /// /// If the user was invited, the user ID of the inviting user. /// public string Inviter { get; set; } + /// + /// Enterprise ID, identifying which org the user is from. The value will be blank if the user's team is not an Enterprise organization. + /// + public string Enterprise { get; set; } } \ No newline at end of file diff --git a/SlackNet/Events/MemberLeftChannel.cs b/SlackNet/Events/MemberLeftChannel.cs index 02e3e30..a2d2a0b 100644 --- a/SlackNet/Events/MemberLeftChannel.cs +++ b/SlackNet/Events/MemberLeftChannel.cs @@ -8,4 +8,8 @@ public class MemberLeftChannel : Event public string User { get; set; } public string Channel { get; set; } public ChannelType ChannelType { get; set; } + /// + /// Team ID, identifying which workspace the user is from. + /// + public string Team { get; set; } } \ No newline at end of file