public void WhenLevelMappingIsSpecifiedPriorityIsComputed(LogEventLevel level, Priority expectedPriority)
        {
            using var app = new OpsgenieApp
                  {
                      ApiClient        = new TestOpsgenieApiClient(),
                      DefaultPriority  = Priority.P2.ToString(),
                      PriorityProperty = "@Level",
                      EventPriority    = "Warning=P3,Debug=P1"
                  };

            app.Attach(TestAppHost.Instance);

            var evt      = Some.LogEvent(level: level);
            var priority = app.ComputePriority(evt);

            Assert.Equal(expectedPriority, priority);
        }
        public void WhenMappedPropertyIsMissingPriorityIsDefault()
        {
            using var app = new OpsgenieApp
                  {
                      ApiClient        = new TestOpsgenieApiClient(),
                      DefaultPriority  = Priority.P2.ToString(),
                      PriorityProperty = "Test",
                      EventPriority    = "B=P3,A=P1"
                  };

            app.Attach(TestAppHost.Instance);

            var evt      = Some.LogEvent();
            var priority = app.ComputePriority(evt);

            Assert.Equal(Priority.P2, priority);
        }
        public void WhenValueMappingIsSpecifiedPriorityIsComputed(object value, Priority expectedPriority)
        {
            using var app = new OpsgenieApp
                  {
                      ApiClient        = new TestOpsgenieApiClient(),
                      DefaultPriority  = Priority.P2.ToString(),
                      PriorityProperty = "Test",
                      EventPriority    = "B=P3,A=P1"
                  };

            app.Attach(TestAppHost.Instance);

            var evt = Some.LogEvent(include: new Dictionary <string, object> {
                ["Test"] = value
            });
            var priority = app.ComputePriority(evt);

            Assert.Equal(expectedPriority, priority);
        }
        public async Task AppTriggersAlerts()
        {
            var apiClient = new TestOpsgenieApiClient();

            using var app = new OpsgenieApp
                  {
                      AlertMessage = "Test",
                      Tags         = "First, Second, Third",
                      ApiClient    = apiClient
                  };

            app.Attach(TestAppHost.Instance);

            var evt = Some.LogEvent();
            await app.OnAsync(evt);

            var alert = Assert.Single(apiClient.CreatedAlerts);

            Assert.Equal("Test", alert !.Message);
            Assert.Equal(evt.Id, alert.Alias);
            Assert.Equal(new[] { "First", "Second", "Third" }, alert.Tags);
        }