public ReachSmsDispatcher(
     ILogService logger,
     IRestClient restClient,
     IConfigurationService configurationService,
     ISmsNumberFormatter smsNumberFormatter,
     IEnumerable <KeyValuePair <MessageTypes, SmsMessageFormatter> > messageFormatters
     )
 {
     _logger             = logger;
     _restClient         = restClient;
     _reachConfiguration = configurationService.Get <SmsConfiguration>();
     _smsNumberFormatter = smsNumberFormatter;
     _messageFormatters  = messageFormatters;
 }
        public void SetUp()
        {
            _logService = new Mock <ILogService>();

            // Templates.
            var smsTemplateConfiguration = new SmsTemplate {
                Name = "MessageTypes.SendAccountUnlockCode", Message = "Your account has been locked due to suspicious activity. To unlock it please enter the following code: {0}."
            };


            _smsTemplateConfigurations = new[] { smsTemplateConfiguration };

            var configService = new Mock <IConfigurationService>();

            configService.Setup(x => x.Get <SmsConfiguration>())
            .Returns(new SmsConfiguration()
            {
                Templates = _smsTemplateConfigurations
            });

            _smsMessageFormatters = new[]
            {
                new KeyValuePair <MessageTypes, SmsMessageFormatter>(MessageTypes.SendAccountUnlockCode,
                                                                     new SmsAccountUnlockCodeMessageFormatter(configService.Object))
            };

            var smsConfig = new SmsConfiguration()
            {
                Templates = _smsTemplateConfigurations,
                Url       = "https://www.example.com"
            };

            _configurationService = new Mock <IConfigurationService>();
            _configurationService.Setup(x => x.Get <SmsConfiguration>()).Returns(smsConfig);

            _smsNumberFormatter = new ReachSmsNumberFormatter();

            // Default request.
            _communicationTokens = new[]
            {
                new CommunicationToken(CommunicationTokens.AccountUnlockCode, "XYZ789")
            };

            _smsRequest = new SmsRequestBuilder()
                          .WithMessageType(MessageTypes.SendAccountUnlockCode)
                          .WithTokens(_communicationTokens)
                          .Build();
        }