<?php
use PHPUnit\Framework\TestCase;
final class FaDeTextTranslateTest extends TestCase
{
private $messagesResults = [];
private $messagesEditedRequests = [];
private $translate_bot;
function setUp(): void{
$BOT_USER= '@TranslateGerman_bot';
$BOT_TOKEN= '816983194:AAH1pPCba__pNRFK7h6fFMoy-9twUuxJ-n8';
$uriParts = explode("?",$_SERVER['REQUEST_URI']);
$actual_link = "https://$_SERVER[HTTP_HOST]".$uriParts[0];
$WEBHOOK_URL= "$actual_link";
$SIGN ="پوشش خبری شهر های آلمان ".PHP_EOL."@TranslateGerman_bot";
$this->translate_bot = new TranslateGerman($BOT_USER,$BOT_TOKEN,$WEBHOOK_URL, $SIGN);
$bot = $this->getMockBuilder('Bot')
->setConstructorArgs(array($BOT_USER,$BOT_TOKEN,$WEBHOOK_URL, $SIGN))
->getMock();
$bot->method("apiRequest")->will(
$this->returnCallback(array($this, 'returnTestDataCallback'))
);
$this->translate_bot->bot = $bot;
$this->getTG()->getDB()->removeAllUserActivites();
}
public function testShouldShowPersianTranslationButton(): void
{
$this->messagesResults=[];
$dbgMgr = new DebugsManager();
$debugUserID = 44903244;
$update = $dbgMgr->getUpdateForTestPerson($debugUserID);
$update["message"]["text"]="آیا میتوانی آن را بهبود ببخشی، آیا میتوانی آن را بهبود ببخشی؟";
$this->translate_bot->process($update);
$buttonResult = json_decode($this->messagesResults[2]["reply_markup"], true);
$this->assertSame($buttonResult["inline_keyboard"][0][0]["callback_data"], FaDeTextTranslate::$key.":tr");
}
public function testTranslateButtonClick(): void
{
$dbgMgr = new DebugsManager();
$debugUserID = 44903244;
$update = $dbgMgr->getUpdateForTextTranslatePersianToGermanCallBack($debugUserID);
$this->translate_bot->process($update);
// print_r($this->messagesResults);
$translatedText = $this->messagesResults[0]['text'];
$this->assertStringContainsString("verbessern", $translatedText);
// $this->assertContains("you", explode(" ", $translatedText));
}
function getTG(): TranslateGerman{
return $this->translate_bot;
}
public function returnTestDataCallback()
{
$args = func_get_args();
// print_r($args);
if($args[0]=="getChatMember"){
$member["status"]="member";
return $member;
}
else if($args[0]=="editMessageText"){
$this->messagesEditedRequests[] =
array_push($this->messagesEditedRequests, $args[1]);
}
else {
$this->messagesResults[] =
array_push($this->messagesResults, $args[1]);
}
}
/**
* @group failing
*/
}