public void Person_Can_Add_Multiple_Channels()
        {
            // Arrange
            ChannelFactory channelFactory = new ChannelFactory();
            Person         person         = new Person("Bas", ERole.Lead);

            // Act
            IChannel channelOne = channelFactory.CreateEmailChannel("*****@*****.**");
            IChannel channelTwo = channelFactory.CreateEmailChannel("@bas");

            person.AddChannel(channelOne);
            person.AddChannel(channelTwo);

            // Assert
            Assert.Contains(channelOne, person.GetChannels());
            Assert.Contains(channelTwo, person.GetChannels());
        }
        public void EmailChannel_Send_Correct_Notification_Should_Not_Throw_Exception()
        {
            // Arrange
            ChannelFactory channelFactory = new ChannelFactory();
            Person         person         = new Person("Bas", ERole.Lead);
            IChannel       channelEmail   = channelFactory.CreateEmailChannel("*****@*****.**");
            const string   message        = "This is a test e-mail.";

            // Act
            person.AddChannel(channelEmail);

            // Assert
            var ex = Record.Exception(() => person.SendNotification(message));

            Assert.Null(ex);
        }
        public void SlackChannel_Send_Empty_Notification_Should_Throw_ArgumentNullException()
        {
            // Arrange
            ChannelFactory channelFactory = new ChannelFactory();
            Person         person         = new Person("Bas", ERole.Lead);

            IChannel slackChannel = channelFactory.CreateEmailChannel("@bas");

            const string message = "";

            // Act
            person.AddChannel(slackChannel);

            // Assert
            Assert.Throws <ArgumentNullException>(() => person.SendNotification(message));
        }
        public void EmailChannel_Send_Out_Of_Bounds_Notification_Should_Throw_ArgumentOutOfRangeException()
        {
            // Arrange
            ChannelFactory channelFactory = new ChannelFactory();
            Person         person         = new Person("Bas", ERole.Lead);

            IChannel emailChannel = channelFactory.CreateEmailChannel("*****@*****.**");

            string message = "";

            while (message.Length <= 1600)
            {
                message += "0";
            }

            // Act
            person.AddChannel(emailChannel);

            // Assert
            Assert.Throws <ArgumentOutOfRangeException>(() => person.SendNotification(message));
        }