public Task Handle(IssueOrderEvent theEvent)
        {
            var order = theEvent.DataContract;

            TheLogger.LogInformation($"OrderId={order.Id} ShipAddres={order.ShipAddress}");
            return(Task.CompletedTask);
        }
示例#2
0
        private void Subscribe <TService>(QuSpecAttribute quSpec, IEnumerable <TService> svcs, Func <string, IBasicProperties, IEnumerable <TService>, Task> processEvent)
            where TService : class
        {
            ListeningChannel.QueueDeclare(quSpec.Queue, quSpec.Durable, quSpec.Exclusive, quSpec.AutoDelete, null);
            var consumer = new AsyncEventingBasicConsumer(ListeningChannel);

            //consumer.Received += ConsumerReceived;
            consumer.Received += async(sender, e) =>
            {
                //e.BasicProperties.ReplyTo;
                //var eventName = e.RoutingKey;
                var msgText = Encoding.UTF8.GetString(e.Body);
                try
                {
                    await processEvent(msgText, e.BasicProperties, svcs).ConfigureAwait(false);
                }
                catch (Exception err)
                {
                    if (TheLogger != null)
                    {
                        TheLogger.LogError(err.Message);
                    }
                    throw;
                }
            };
            ListeningChannel.BasicConsume(quSpec.Queue, true, consumer);
        }
示例#3
0
        public void WhenGettingListOfCelebrantsNextWeek_AndWeHaveOnlyOneBirthDay_ThenWeGetOnlyOnePerson()
        {
            // arrange
            var repo = The.Repo().InMemory().Please();

            var mailing = The.Mailing().StoreIn(repo).With(TheLogger.Stub()).Please();

            var homer = The.Person("Homer")
                        .WithEmail("*****@*****.**")
                        .Born(23.FebraryOf(1970));

            mailing.AddRecipient(homer);

            var marge = The.Person("Marge")
                        .WithEmail("*****@*****.**")
                        .Born(8.MarchOf(1973));

            mailing.AddRecipient(marge);

            var bart = The.Person("Bart")
                       .WithEmail("*****@*****.**")
                       .Born(19.MarchOf(1989));

            mailing.AddRecipient(bart);

            // act
            var result = mailing.GetNextWeekCelebrants(20.FebraryOf(2017));

            // assert
            Assert.AreEqual(new Person[] { homer }, result);
        }
示例#4
0
        /// <summary>
        /// Logs an exception as an info message
        /// </summary>
        public void Info(Exception ex, string messageFormatString, params object[] formatStringParameters)
        {
            string fullMessage = String.Format("A business logic error occured: {0} ({1}). {2}. At: {3}"
                                               , ex.Message, ex.Message.GetType().Name
                                               , FormattedString(messageFormatString, formatStringParameters)
                                               , ex.StackTrace);

            TheLogger.Info(CallingMethodName + " " + fullMessage);
        }
示例#5
0
        public SaveResult SaveChanges(JObject saveBundle)
        {
            var context  = new UsersContext();
            var username = User.Identity.Name;
            var user     = context.UserProfiles.SingleOrDefault(u => u.UserName == username);

            TheLogger.Write(string.Format("User {0} saved changes.", username), TraceEventType.Information);

            return(_repository.SaveChanges(saveBundle));
        }
示例#6
0
        public Task <bool> Handle(IssueOrderCmd request, CancellationToken cancellationToken)
        {
            TheLogger.LogInformation($"IssueOrderCmdHandler OrderId={request.DataContract.Id}");
            var issueOrderEvent = new IssueOrderEvent()
            {
                DataContract = request.DataContract
            };

            TheEventBus.PublishEvent(issueOrderEvent);
            return(Task.FromResult(true));
        }
示例#7
0
        public void WhenGettingListOfPersons_AndListIsEmpty_ThenLoggerWritesThatNoPersonFound()
        {
            var mockLogger = TheLogger.Mock();
            var repo       = The.Repo().InMacFileSystem().Empty().With(mockLogger.Object).Please();

            var mailing = The.Mailing().StoreIn(repo).With(mockLogger.Object).Please();

            // act
            mailing.GetNextWeekCelebrants(1.JanuaryOf(1980));

            mockLogger.Verify(x => x.Write("found 0 person(s)"));
        }
示例#8
0
        public Task <Order> Handle(QueryOrderCmd request, CancellationToken cancellationToken)
        {
            string orderId = request.DataContract;

            TheLogger.LogInformation($"IssueOrderCmdHandler OrderId={orderId}");
            var order = new Order()
            {
                Id = orderId, CustomerId = "R3234566777", ShipAddress = "台北市信義路四段11號"
            };

            return(Task.FromResult(order));
        }
示例#9
0
        public void WhenAddingNewPerson_LoggerWritesHisNameAndBirthDayOnce()
        {
            var mockLogger = TheLogger.Mock();
            var mailing    = The.Mailing().StoreInMemory().With(mockLogger.Object).Please();

            var homer = The.Person("Homer")
                        .WithEmail("*****@*****.**")
                        .Born(23.FebraryOf(1970));

            // act
            mailing.AddRecipient(homer);

            mockLogger.Verify(x => x.Write("added Person: Homer 23.02.1970"), Times.Once());
        }
示例#10
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();

            // Initialize SimpleMembership
            var smi = new InitializeSimpleMembershipAttribute.SimpleMembershipInitializer();

            TheLogger.Write("Application start");
        }
示例#11
0
        public void WhenTwoBirthDaysNextWeek_AndWeGetTwoLetters_ThenSecondHasAllAddressesExceptCelebrator()
        {
            var repo = The.Repo()
                       .InMemory()
                       .With(TheLogger.Stub())
                       .Please();

            var mailing = The.Mailing()
                          .StoreIn(repo)
                          .With(TheLogger.Stub())
                          .AddSimpsons()
                          .Please();

            var forNextWeek = mailing.CreateBirthDayMessagesForNextWeek(2.MarchOf(2017));

            Assert.True(The.MessageList(forNextWeek).Number(2).ContainEmailsAllExcept("*****@*****.**"));
        }
示例#12
0
        public void WhenGettingListOfPersons_AndThereIsOnePerson_ThenLoggerWritesHisEmailNameAndBirthday()
        {
            var mockLogger = TheLogger.Mock();

            var repo = The.Repo()
                       .InMacFileSystem()
                       .HasFile("/path/to/personfile.txt")
                       .InIt(new[] { "*****@*****.**", "Homer", "1970/01/01" })
                       .With(mockLogger.Object)
                       .Please();

            var mailing = The.Mailing().StoreIn(repo).With(mockLogger.Object).Please();

            mailing.GetNextWeekCelebrants(1.JanuaryOf(1980));

            mockLogger.Verify(x => x.Write("found Person - email: [email protected] name: Homer birthday: 1970/01/01"));
        }
示例#13
0
        public void WhenAddingSameRecipientTwice_ThanThrowsExceptionAlreadyExists()
        {
            // arrange
            var homer = The.Person("Homer")
                        .WithEmail("*****@*****.**")
                        .Born(23.FebraryOf(1970));

            var repo = The.Repo().InMemory().Please();

            var mailing = The.Mailing()
                          .StoreIn(repo)
                          .With(TheLogger.Stub()).Please();

            mailing.AddRecipient(homer);

            // act & assert
            Assert.Throws <AlreadyExistsException>(() => mailing.AddRecipient(homer));
        }
示例#14
0
        public void WhenOneBirthdayNextWeek_ThenWeGetMailMessageWithoutThatPersonInAddressList()
        {
            var repo = The.Repo()
                       .InMemory()
                       .With(TheLogger.Stub())
                       .Please();

            var mailing = The.Mailing()
                          .StoreIn(repo)
                          .With(TheLogger.Stub())
                          .AddSimpsons()
                          .Please();

            // act
            var forNextWeek = mailing.CreateBirthDayMessagesForNextWeek(4.MarchOf(2017));

            Assert.True(The.MessageList(forNextWeek).First().NotContainInAddress("*****@*****.**"));
        }
示例#15
0
        public void WhenGettingNextWeekCelebrants_ThenLoggerOnceWritesThatThereIsTwoPersons()
        {
            var mockLogger = TheLogger.Mock();
            var mailing    = The.Mailing().StoreInMemory().With(mockLogger.Object).Please();

            var homer = The.Person("Homer")
                        .WithEmail("*****@*****.**")
                        .Born(1.FebraryOf(1970));

            var marge = The.Person("Marge")
                        .WithEmail("*****@*****.**")
                        .Born(31.DecemberOf(1970));

            mailing.AddRecipient(homer);
            mailing.AddRecipient(marge);

            mailing.GetNextWeekCelebrants(30.DecemberOf(2017));

            mockLogger.Verify(x => x.Write("found 2 person(s)"), Times.Once());
        }
示例#16
0
        public void WhenTwoBirthDaysNextWeek_AndWeSendTwoLetters_ThenEmailSenderCalledTwice()
        {
            var logger = TheLogger.Stub();

            var repo = The.Repo()
                       .InMemory()
                       .With(logger)
                       .Please();

            var Email = The.Sender().Email();

            var mailing = The.Mailing()
                          .StoreIn(repo)
                          .With(logger)
                          .AddSimpsons()
                          .SendBy(Email.Please())
                          .Please();

            //act
            mailing.GetMessagesAndSend(2.MarchOf(2017));

            // assert
            Email.SentTimes(2);
        }
示例#17
0
        public void WhenAddingNewPerson_AndListIsEmpty_ThenLoggerWritesFileName()
        {
            var mockLogger = TheLogger.Mock();

            var repo = The.Repo()
                       .InMacFileSystem()
                       .Empty()
                       .Write(new string[0])
                       .ToFile("/some/path.txt")
                       .With(mockLogger.Object)
                       .Please();

            var mailing = The.Mailing().StoreIn(repo).With(mockLogger.Object).Please();

            var homer = The.Person("Homer")
                        .WithEmail("*****@*****.**")
                        .Born(1.FebraryOf(1970));

            // act
            mailing.AddRecipient(homer);

            // assert
            mockLogger.Verify(x => x.Write("filename: /some/path.txt"));
        }
示例#18
0
        public void Log(LogLevel level, Exception ex, string messageFormatString, params object[] formatStringParameters)
        {
            switch (level)
            {
            case LogLevel.Debug:
            {
                TheLogger.Debug(CallingMethodName + " " + FormattedString(messageFormatString, formatStringParameters) + ex.ToFullException()
                                , ex);
                break;
            }


            case LogLevel.Info:
            {
                TheLogger.Info(CallingMethodName + " " + FormattedString(messageFormatString, formatStringParameters) + ex.ToFullException(), ex);
                break;
            }

            case LogLevel.Warn:
            {
                TheLogger.Warn(CallingMethodName + " " + FormattedString(messageFormatString, formatStringParameters) + ex.ToFullException(), ex);
                break;
            }

            case LogLevel.Error:
                Error(ex, messageFormatString, formatStringParameters);
                break;

            case LogLevel.Fatal:
                Fatal(ex, messageFormatString, formatStringParameters);
                break;

            default:
                throw new InvalidOperationException("Unknown LogLevel");
            }
        }
示例#19
0
 public void Error(string messageFormatString, params object[] formatStringParameters)
 {
     TheLogger.Error(CallingMethodName + ": " + FormattedString(messageFormatString, formatStringParameters));
 }
示例#20
0
 public void Info(string messageFormatString, params object[] formatStringParameters)
 {
     TheLogger.Info(FormattedString(messageFormatString, formatStringParameters));
 }
示例#21
0
 public void Fatal(Exception ex, string messageFormatString, params object[] formatStringParameters)
 {
     TheLogger.Fatal(CallingMethodName + ": " + FormattedString(messageFormatString, formatStringParameters), ex);
 }