<?php
use PHPUnit\Framework\TestCase;
final class PatreonServiceTest extends TestCase
{
private $patreonService;
private $messagesResults = [];
private TranslateService $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'))
);
$mockedPatreonWebClient = $this->getMockBuilder('PatreonWebClient')->setConstructorArgs(array("@TranslateGerman3_bot"))->getMock();
$mockedPatreonWebClient->method("retriveUserDetailsByToken")->willReturn(
array('data'=>array(
'id'=> '100001',
'relationships'=>array('memberships'=>array('data'=>array(0=>array('id'=>"patreon_membershi_id")))))));
$mockedPatreonWebClient->method("retriveTokens")->willReturn(array("access_token"=>"blablabla", "refresh_token"=>"blablabla"));
$mockedPatreonWebClient->method("retriveCampaignMembers")->willReturn([]);
$this->patreonService = new PatreonService($this->getTG());
$this->translate_bot->setPatreonService($this->patreonService);
$this->patreonService->patreonWebClient = $mockedPatreonWebClient;
$this->translate_bot->bot = $bot;
$this->getTG()->getDB()->removeAllUserActivites();
}
public function testPatreonWebclientRedirectUrl(){
$redirectUrl = $this->getPatreonService()->getPatreonWebClient()->redirect_uri;
$this->assertStringContainsString("@", $redirectUrl);
$this->assertStringContainsString("bot", $redirectUrl);
}
public function testStartPatreonCode(): void
{
$dbgMgr = new DebugsManager();
$debugUserID = 44903244;
// $patreonService = new PatreonService($this->getTG());
// $oauthLink = $patreonService->createLoginLink();
// echo $oauthLink;
$update = $dbgMgr->getUpdateForStartWithPatreonCode($debugUserID);
$update['message']['text']="/start patZbQujZAcW6iHjGVdzSyXlLzCe5662C";
$this->patreonService->getTS()->process($update);
// $patreonService->getPatreonList();
$this->messagesResults;
$this->assertSame("2", "2");
}
private function getPatreonService(): PatreonService{
return $this->patreonService;
}
public function testIsUserOf(){
// $mockedPatreonService = new PatreonService($this->getTG());
$dbgMgr = new DebugsManager();
$debugUserID = 1111111;
$this->getTG()->chat_id = $debugUserID;
$result = $this->getPatreonService()->isUserOf(PatreonService::$programLevel1);
$this->assertSame($result ,false);
}
public function testCreateLoginLink(): void
{
$patreonService = new PatreonService($this->getTG());
$oauthLink = $patreonService->createLoginLink();
// $patreonService->getPatreonList();
$this->assertSame($oauthLink, $oauthLink);
}
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 {
$this->messagesResults[] =
array_push($this->messagesResults, $args[1]);
}
}
/**
* @group failing
*/
}