Example #1
0
        public void Log_UsesCorrectMessageImportance_WhenLogLevelIsSpecified(LogLevel logLevel, string message, MessageImportance?expectedMessageImportance)
        {
            var mockLogger = new MockSdkLogger();

            var logger = new NuGetSdkLogger(mockLogger);

            logger.Log(logLevel, message);

            switch (logLevel)
            {
            case LogLevel.Warning:
                logger.Errors.Should().BeEmpty();
                logger.Warnings.Should().BeEquivalentTo(new[] { message });
                break;

            case LogLevel.Error:
                logger.Errors.Should().BeEquivalentTo(new[] { message });
                logger.Warnings.Should().BeEmpty();
                break;

            case LogLevel.Debug:
            case LogLevel.Verbose:
            case LogLevel.Information:
            case LogLevel.Minimal:
                logger.Errors.Should().BeEmpty();
                logger.Warnings.Should().BeEmpty();
                mockLogger.LoggedMessages.Should().BeEquivalentTo(new[] { (message, expectedMessageImportance) });
        private void VerifyLog(Action <NuGetSdkLogger> action, string expectedMessage, MessageImportance?expectedMessageImportance, bool isWarning, bool isError)
        {
            var mockLogger = new MockSdkLogger();

            var errors   = new List <string>();
            var warnings = new List <string>();

            var sdkLogger = new NuGetSdkLogger(mockLogger, warnings, errors);

            action(sdkLogger);

            if (expectedMessageImportance.HasValue)
            {
                var item = mockLogger.LoggedMessages.FirstOrDefault();

                item.Should().NotBeNull();
                item.Key.Should().Be(expectedMessage);
                item.Value.Should().Be(expectedMessageImportance.Value);
            }
            else
            {
                mockLogger.LoggedMessages.Should().BeEmpty();
            }

            if (isWarning)
            {
                warnings.Should().ContainSingle(expectedMessage);
            }
            else
            {
                warnings.Should().BeEmpty();
            }

            if (isError)
            {
                errors.Should().ContainSingle();
                errors.First().Should().Be(expectedMessage);
            }
            else
            {
                errors.Should().BeEmpty();
            }
        }