public void convertslackmessage_should_return_expected_result_when_the_message_contains_a_block_of_type_action_and_a_select_channel_block_element()
        {
            var block = new SlackActionBlock();

            block.Elements.Add(new SlackSelectMenuChannelBlockElement
            {
                ActionId    = "text1234",
                Placeholder = new SlackPlainText
                {
                    Text  = "Select channels",
                    Emoji = true
                }
            });
            var expectedSlackMessage = CreateSlackMessage(block);

            var json = @"{
              ""as_user"": false,
              ""channel"": ""#test"",
              ""icon_emoji"": "":smiley:"",
              ""mrkdwn"": false,
              ""text"": ""My Super Text"",
              ""username"": ""MyAppBot"",
              ""unfurl_media"": false,
              ""blocks"": [
                {
                  ""type"": ""actions"",
                  ""elements"": [
                    {
                      ""action_id"": ""text1234"",
                      ""type"": ""channels_select"",
                      ""placeholder"": {
                        ""type"": ""plain_text"",
                        ""text"": ""Select channels"",
                        ""emoji"": true
                      }
                    }
                  ]
                }
              ]
            }";
            var expectedSlackJsonMessage = JObject.Parse(json);

            var slackMessage = SlackExtensionConfigProvider.ConvertSlackMessage(expectedSlackJsonMessage);

            AssertMessage(slackMessage, expectedSlackMessage);
        }
        public void convertslackmessage_should_return_expected_result_when_the_message_contains_a_block_of_type_action_and_a_select_static_block_element()
        {
            var block = new SlackActionBlock();

            block.Elements.Add(new SlackSelectMenuStaticBlockElement()
            {
                ActionId    = "text1234",
                Placeholder = new SlackPlainText
                {
                    Text  = "Select items",
                    Emoji = true
                },
                Options =
                {
                    new SlackOption
                    {
                        Text        = new SlackPlainText("This is plain text"),
                        Value       = "value-0",
                        Url         = new Uri("https://www.slack.com"),
                        Description = new SlackPlainText("A description")
                    },
                    new SlackOption
                    {
                        Text        = new SlackPlainText("This is plain text"),
                        Value       = "value-1",
                        Url         = new Uri("https://www.slack.com"),
                        Description = new SlackPlainText("A description")
                    }
                }
            });
            var expectedSlackMessage = CreateSlackMessage(block);

            var json = @"{
              ""as_user"": false,
              ""channel"": ""#test"",
              ""icon_emoji"": "":smiley:"",
              ""mrkdwn"": false,
              ""text"": ""My Super Text"",
              ""username"": ""MyAppBot"",
              ""unfurl_media"": false,
              ""blocks"": [
                {
                  ""type"": ""actions"",
                  ""elements"": [
                    {
                      ""action_id"": ""text1234"",
                      ""type"": ""static_select"",
                      ""placeholder"": {
                        ""type"": ""plain_text"",
                        ""text"": ""Select items"",
                        ""emoji"": true
                      },
                      ""options"": [
                        {
                          ""text"": {
                            ""type"": ""plain_text"",
                            ""text"": ""This is plain text""
                          },
                          ""value"": ""value-0"",
                          ""url"": ""https://www.slack.com"",
                          ""description"": {
                            ""type"": ""plain_text"",
                            ""text"": ""A description""
                          }
                        },
                        {
                          ""text"": {
                            ""type"": ""plain_text"",
                            ""text"": ""This is plain text""
                          },
                          ""value"": ""value-1"",
                          ""url"": ""https://www.slack.com"",
                          ""description"": {
                            ""type"": ""plain_text"",
                            ""text"": ""A description""
                          }
                        }
                      ]
                    }
                  ]
                }
              ]
            }";
            var expectedSlackJsonMessage = JObject.Parse(json);

            var slackMessage = SlackExtensionConfigProvider.ConvertSlackMessage(expectedSlackJsonMessage);

            AssertMessage(slackMessage, expectedSlackMessage);
        }
        public void convertslackmessage_should_return_expected_result_when_the_message_contains_a_block_of_type_action_and_a_radio_button_group_block_element()
        {
            var block   = new SlackActionBlock();
            var option1 = new SlackOption
            {
                Text  = new SlackPlainText("Radio 1"),
                Value = "A1"
            };

            block.Elements.Add(new SlackRadioButtonGroupBlockElement()
            {
                ActionId = "this_is_an_action_id",
                Options  =
                {
                    option1,
                    new SlackOption
                    {
                        Text  = new SlackPlainText("Radio 2"),
                        Value = "A2"
                    }
                },
                InitialOption = option1
            });
            var expectedSlackMessage = CreateSlackMessage(block);

            var json = @"{
              ""as_user"": false,
              ""channel"": ""#test"",
              ""icon_emoji"": "":smiley:"",
              ""mrkdwn"": false,
              ""text"": ""My Super Text"",
              ""username"": ""MyAppBot"",
              ""unfurl_media"": false,
              ""blocks"": [
                {
                  ""type"": ""actions"",
                  ""elements"": [
                    {
                      ""type"": ""radio_buttons"",
                      ""action_id"": ""this_is_an_action_id"",
                      ""initial_option"": {
                        ""value"": ""A1"",
                        ""text"": {
                          ""type"": ""plain_text"",
                          ""text"": ""Radio 1""
                        }
                      },
                      ""options"": [
                        {
                          ""value"": ""A1"",
                          ""text"": {
                            ""type"": ""plain_text"",
                            ""text"": ""Radio 1""
                          }
                        },
                        {
                          ""value"": ""A2"",
                          ""text"": {
                            ""type"": ""plain_text"",
                            ""text"": ""Radio 2""
                          }
                        }
                      ]
                    }
                  ]
                }
              ]
            }";
            var expectedSlackJsonMessage = JObject.Parse(json);

            var slackMessage = SlackExtensionConfigProvider.ConvertSlackMessage(expectedSlackJsonMessage);

            AssertMessage(slackMessage, expectedSlackMessage);
        }
        public void convertslackmessage_should_return_expected_result_when_the_message_contains_a_block_of_type_action_and_a_button_block_element()
        {
            var block = new SlackActionBlock();

            block.Elements.Add(new SlackButtonBlockElement
            {
                Text = new SlackPlainText()
                {
                    Text  = "Click Me",
                    Emoji = true
                },
                ActionId = "btn_action_123",
                Style    = SlackButtonStyle.Primary,
                Url      = new Uri("https://www.slack.com"),
                Value    = "value-0",
                Confirm  = new SlackConfirmation
                {
                    Title = "Are you sure?",
                    Text  = new SlackMarkdownText
                    {
                        Text = "Wouldn't you prefer a good game of _chess_?"
                    },
                    Confirm = "Do it",
                    Deny    = "Stop, I've changed my mind!"
                }
            });
            var expectedSlackMessage = CreateSlackMessage(block);

            var json = @"{
              ""as_user"": false,
              ""channel"": ""#test"",
              ""icon_emoji"": "":smiley:"",
              ""mrkdwn"": false,
              ""text"": ""My Super Text"",
              ""username"": ""MyAppBot"",
              ""unfurl_media"": false,
              ""blocks"": [
                {
                  ""type"": ""actions"",
                  ""elements"": [
                    {
                      ""action_id"": ""btn_action_123"",
                      ""type"": ""button"",
                      ""text"": {
                        ""type"": ""plain_text"",
                        ""text"": ""Click Me"",
                        ""emoji"": true
                      },
                      ""url"": ""https://www.slack.com"",
                      ""value"": ""value-0"",
                      ""style"": ""primary"",
                      ""confirm"": {
                        ""title"": ""Are you sure?"",
                        ""text"": {
                          ""type"": ""mrkdwn"",
                          ""text"": ""Wouldn't you prefer a good game of _chess_?""
                        },
                        ""confirm"": ""Do it"",
                        ""deny"": ""Stop, I've changed my mind!""
                      }
                    }
                  ]
                }
              ]
            }";

            var expectedSlackJsonMessage = JObject.Parse(json);

            var slackMessage = SlackExtensionConfigProvider.ConvertSlackMessage(expectedSlackJsonMessage);

            AssertMessage(slackMessage, expectedSlackMessage);
        }
        public void convertslackmessage_should_return_expected_result_when_the_message_contains_a_block_of_type_action_and_a_checkbox_block_element()
        {
            var block   = new SlackActionBlock();
            var option1 = new SlackOption
            {
                Description = "Checkbox 1",
                Value       = "A1",
                Text        = new SlackMarkdownText
                {
                    Text = "*Checkbox 1*"
                },
                Url = new Uri("https://www.slack.com")
            };

            block.Elements.Add(new SlackCheckboxBlockElement
            {
                ActionId = "this_is_an_action_id",
                Confirm  = new SlackConfirmation
                {
                    Title = "Are you sure?",
                    Text  = new SlackMarkdownText
                    {
                        Text = "Wouldn't you prefer a good game of _chess_?"
                    },
                    Confirm = "Do it",
                    Deny    = "Stop, I've changed my mind!"
                },
                Options =
                {
                    option1,
                    new SlackOption
                    {
                        Description = "Checkbox 2",
                        Value       = "A2",
                        Text        = new SlackPlainText
                        {
                            Text = "Checkbox 2"
                        },
                        Url = new Uri("https://www.slack.com")
                    }
                },
                SelectedOptions =
                {
                    option1
                }
            });
            var expectedSlackMessage = CreateSlackMessage(block);

            var json = @"{
              ""as_user"": false,
              ""channel"": ""#test"",
              ""icon_emoji"": "":smiley:"",
              ""mrkdwn"": false,
              ""text"": ""My Super Text"",
              ""username"": ""MyAppBot"",
              ""unfurl_media"": false,
              ""blocks"": [
                {
                  ""type"": ""actions"",
                  ""elements"": [
                    {
                      ""type"": ""checkboxes"",
                      ""action_id"": ""this_is_an_action_id"",
                      ""initial_options"": [
                        {
                          ""value"": ""A1"",
                          ""description"": ""Checkbox 1"",
                          ""url"": ""https://www.slack.com"",
                          ""text"": {
                            ""type"": ""mrkdwn"",
                            ""text"": ""*Checkbox 1*""
                          }
                        }
                      ],
                      ""options"": [
                        {
                          ""value"": ""A1"",
                          ""description"": ""Checkbox 1"",
                          ""url"": ""https://www.slack.com"",
                          ""text"": {
                            ""type"": ""mrkdwn"",
                            ""text"": ""*Checkbox 1*""
                          }
                        },
                        {
                          ""value"": ""A2"",
                          ""description"": ""Checkbox 2"",
                          ""url"": ""https://www.slack.com"",
                          ""text"": {
                            ""type"": ""plain_text"",
                            ""text"": ""Checkbox 2""
                          }
                        }
                      ],
                      ""confirm"": {
                        ""title"": ""Are you sure?"",
                        ""text"": {
                          ""type"": ""mrkdwn"",
                          ""text"": ""Wouldn't you prefer a good game of _chess_?""
                        },
                        ""confirm"": ""Do it"",
                        ""deny"": ""Stop, I've changed my mind!""
                      }
                    }
                  ]
                }
              ]
            }";
            var expectedSlackJsonMessage = JObject.Parse(json);

            var slackMessage = SlackExtensionConfigProvider.ConvertSlackMessage(expectedSlackJsonMessage);

            AssertMessage(slackMessage, expectedSlackMessage);
        }