Просмотр исходного кода

Add unit tests for SlackWebhookHandler

Haralan Dobrev 9 лет назад
Родитель
Сommit
43e1e69bad
1 измененных файлов с 106 добавлено и 0 удалено
  1. 106 0
      tests/Monolog/Handler/SlackWebhookHandlerTest.php

+ 106 - 0
tests/Monolog/Handler/SlackWebhookHandlerTest.php

@@ -0,0 +1,106 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+use Monolog\Handler\Slack\SlackRecord;
+
+/**
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
+ * @see    https://api.slack.com/incoming-webhooks
+ * @coversDefaultClass Monolog\Handler\SlackWebhookHandler
+ */
+class SlackWebhookHandlerTest extends TestCase
+{
+    const WEBHOOK_URL = 'https://hooks.slack.com/services/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E';
+
+    /**
+     * @covers ::__construct
+     * @covers ::getSlackRecord
+     */
+    public function testConstructorMinimal()
+    {
+        $handler = new SlackWebhookHandler(self::WEBHOOK_URL);
+        $slackRecord = $handler->getSlackRecord();
+        $this->assertInstanceOf('Monolog\Handler\Slack\SlackRecord', $slackRecord);
+        $this->assertEquals(array(
+            'username' => 'Monolog',
+            'text' => '',
+            'attachments' => array(
+                array(
+                    'fallback' => 'test',
+                    'text' => 'test',
+                    'color' => SlackRecord::COLOR_WARNING,
+                    'fields' => array(
+                        array(
+                            'title' => 'Level',
+                            'value' => 'WARNING',
+                            'short' => true,
+                        ),
+                    ),
+                    'title' => 'Message',
+                ),
+            ),
+        ), $slackRecord->getSlackData($this->getRecord()));
+    }
+
+    /**
+     * @covers ::__construct
+     * @covers ::getSlackRecord
+     */
+    public function testConstructorFull()
+    {
+        $handler = new SlackWebhookHandler(
+            self::WEBHOOK_URL,
+            'test-channel',
+            'test-username',
+            false,
+            ':ghost:',
+            false,
+            false,
+            Logger::DEBUG,
+            false
+        );
+
+        $slackRecord = $handler->getSlackRecord();
+        $this->assertInstanceOf('Monolog\Handler\Slack\SlackRecord', $slackRecord);
+        $this->assertEquals(array(
+            'username' => 'test-username',
+            'text' => 'test',
+            'channel' => 'test-channel',
+            'icon_emoji' => ':ghost:',
+        ), $slackRecord->getSlackData($this->getRecord()));
+    }
+
+    /**
+     * @covers ::getFormatter
+     */
+    public function testGetFormatter()
+    {
+        $handler = new SlackWebhookHandler(self::WEBHOOK_URL);
+        $formatter = $handler->getFormatter();
+        $this->assertInstanceOf('Monolog\Formatter\FormatterInterface', $formatter);
+    }
+
+    /**
+     * @covers ::setFormatter
+     */
+    public function testSetFormatter()
+    {
+        $handler = new SlackWebhookHandler(self::WEBHOOK_URL);
+        $formatter = new LineFormatter();
+        $handler->setFormatter($formatter);
+        $this->assertSame($formatter, $handler->getFormatter());
+    }
+}