Exemplo n.º 1
0
        public void LogSendsNestedExceptionDetailsToSentryTest()
        {
            var value    = Guid.NewGuid().ToString();
            var sentryId = Guid.NewGuid().ToString();
            var name     = Guid.NewGuid().ToString();
            var eventId  = new EventId(Environment.TickCount);
            var state    = new AddressState
            {
                Address = Guid.NewGuid().ToString()
            };
            var innerException = Model.Ignoring <ValueTypeException>(x => x.Data).Create <ValueTypeException>()
                                 .Set(x => x.Id = value);
            var exception = new ArgumentNullException(Guid.NewGuid().ToString(), innerException);

            exception.AddContextData(state.Address);

            var client = Substitute.For <IRavenClient>();

            client.Capture(Arg.Any <SentryEvent>()).Returns(sentryId);

            var sut = new SentryLogger(name, client);

            sut.Log(LogLevel.Critical, eventId, state, exception, (logState, ex) => ex.ToString());

            client.Received().Capture(
                Arg.Is <SentryEvent>(x => x.Exception.Data["ValueTypeException.Id"].As <string>() == value));
        }