Completed
Branch master (51b807)
by Frank
04:17 queued 02:02
created

BottyCommandTest::testDataProvider()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 28
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 23
nc 1
nop 0
dl 0
loc 28
rs 8.8571
c 0
b 0
f 0
1
<?php
2
/**
3
 * T3Bot.
4
 *
5
 * @author Frank Nägler <[email protected]>
6
 *
7
 * @link http://www.t3bot.de
8
 * @link http://wiki.typo3.org/T3Bot
9
 */
10
namespace T3Bot\Tests\Unit\Commands;
11
12
use T3Bot\Commands\BottyCommand;
13
use T3Bot\Tests\Unit\BaseCommandTestCase;
14
15
/**
16
 * Class BottyCommandTest.
17
 */
18
19
/** @noinspection LongInheritanceChainInspection */
20
class BottyCommandTest extends BaseCommandTestCase
21
{
22
    /**
23
     * Data provider.
24
     *
25
     * @return array
26
     */
27
    public function testDataProvider()
28
    {
29
        $username = '<@U54321>';
30
31
        return [
32
            'daddy' => ['daddy', 'My daddy is Frank Nägler aka <@neoblack>'],
33
            'n8' => ['n8', 'Good night ' . $username . '! :sleeping:'],
34
            'nacht' => ['nacht', 'Good night ' . $username . '! :sleeping:'],
35
            'night' => ['night', 'Good night ' . $username . '! :sleeping:'],
36
            'hello' => ['hello', 'Hello ' . $username . ', nice to see you!'],
37
            'hallo' => ['hallo', 'Hello ' . $username . ', nice to see you!'],
38
            'ciao' => ['ciao', 'Bye, bye ' . $username . ', cu later alligator! :wave:'],
39
            'cu' => ['cu', 'Bye, bye ' . $username . ', cu later alligator! :wave:'],
40
            'thx' => ['thx', 'You are welcome ' . $username . '!'],
41
            'thank' => ['thank', 'You are welcome ' . $username . '!'],
42
            'drink' => ['drink', 'Coffee or beer ' . $username . '?'],
43
            'coffee' => ['coffee', 'Here is a :coffee: for you ' . $username . '!'],
44
            'beer' => ['beer', 'Here is a :t3beer: for you ' . $username . '!'],
45
            'coke' => ['coke', 'Coke is unhealthy ' . $username . '!'],
46
            'cola' => ['cola', 'Coke is unhealthy ' . $username . '!'],
47
            'cookie' => ['cookie', 'Here is a :cookie: for you ' . $username . '!'],
48
            'typo3' => ['typo3', ':typo3: TYPO3 CMS is the best open source CMS of the world!'],
49
            'dark' => ['dark', 'sure, we have cookies :cookie:'],
50
            //'cat' => ['cat', 'ok, here is some cat content '.$cats[array_rand($cats)]],
51
            'love' => ['love', 'I love you too, ' . $username . ':kiss:'],
52
            'no-matching' => ['foobar', null],
53
        ];
54
    }
55
56
    /**
57
     * @test
58
     * @dataProvider testDataProvider
59
     *
60
     * @param string $keyword
61
     * @param string $response
62
     */
63
    public function processShowReturnsCorrectResponseForKnownKeywords($keyword, $response)
64
    {
65
        $this->initCommandWithPayload(BottyCommand::class, [
66
            'user' => 'U54321',
67
            'text' => 'botty ' . $keyword,
68
        ]);
69
        $result = $this->command->process();
70
        if ($response === null) {
71
            static::assertNull($response);
72
        } else {
73
            static::assertStringStartsWith($response, $result);
74
        }
75
    }
76
77
    /**
78
     * @test
79
     * @dataProvider testDataProvider
80
     */
81
    public function processShowReturnsCorrectResponseForHelpKeyword()
82
    {
83
        $this->initCommandWithPayload(BottyCommand::class, [
84
            'user' => 'U54321',
85
            'text' => 'botty help',
86
        ]);
87
        $result = $this->command->process();
88
        static::assertEquals(':link: <http://www.t3bot.de|My Homepage> | '
89
            . ':link: <https://github.com/NeoBlack/T3Bot|Github> | '
90
            . ':link: <http://wiki.typo3.org/T3Bot|Help for Commands>', $result);
91
    }
92
}
93