mirror of
https://github.com/wiosna-dev/limesurvey-api-client.git
synced 2026-03-12 02:11:45 +01:00
SurveyService - getStartSurveyUrl() method - returns url used to start survey for given survey and participant
This commit is contained in:
@@ -12,6 +12,7 @@ use Meritoo\Common\Collection\Collection;
|
||||
use Meritoo\LimeSurvey\ApiClient\Client\Client;
|
||||
use Meritoo\LimeSurvey\ApiClient\Exception\CannotProcessDataException;
|
||||
use Meritoo\LimeSurvey\ApiClient\Result\Collection\Surveys;
|
||||
use Meritoo\LimeSurvey\ApiClient\Result\Item\Participant;
|
||||
use Meritoo\LimeSurvey\ApiClient\Result\Item\Survey;
|
||||
use Meritoo\LimeSurvey\ApiClient\Type\MethodType;
|
||||
use Meritoo\LimeSurvey\ApiClient\Type\ReasonType;
|
||||
@@ -39,6 +40,19 @@ class SurveyService
|
||||
*/
|
||||
private $allSurveys;
|
||||
|
||||
/**
|
||||
* Template of the url used to start survey
|
||||
*
|
||||
* Example:
|
||||
* - url: https://your.limesurvey.instance/12345?token=q1w2e3r4t5y6
|
||||
* - LimeSurvey frontend: https://your.limesurvey.instance
|
||||
* - survey ID: 12345
|
||||
* - token: q1w2e3r4t5y6
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $startSurveyUrlTemplate = '%s/%d?token=%s';
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
@@ -134,4 +148,21 @@ class SurveyService
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns url used to start survey for given survey and participant
|
||||
*
|
||||
* @param int $surveyId ID of survey to start
|
||||
* @param Participant $participant Participant who would like to start survey
|
||||
* @return string
|
||||
*/
|
||||
public function getStartSurveyUrl($surveyId, Participant $participant)
|
||||
{
|
||||
$baseUrl = $this
|
||||
->client
|
||||
->getConfiguration()
|
||||
->getBaseUrl();
|
||||
|
||||
return sprintf($this->startSurveyUrlTemplate, $baseUrl, $surveyId, $participant->getToken());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ use Meritoo\LimeSurvey\ApiClient\Exception\CannotProcessDataException;
|
||||
use Meritoo\LimeSurvey\ApiClient\Manager\JsonRpcClientManager;
|
||||
use Meritoo\LimeSurvey\ApiClient\Manager\SessionManager;
|
||||
use Meritoo\LimeSurvey\ApiClient\Result\Collection\Surveys;
|
||||
use Meritoo\LimeSurvey\ApiClient\Result\Item\Participant;
|
||||
use Meritoo\LimeSurvey\ApiClient\Result\Item\Survey;
|
||||
use Meritoo\LimeSurvey\ApiClient\Service\SurveyService;
|
||||
use Meritoo\LimeSurvey\ApiClient\Type\ReasonType;
|
||||
@@ -46,6 +47,14 @@ class SurveyServiceTest extends BaseTestCase
|
||||
*/
|
||||
private $serviceWithSurveys;
|
||||
|
||||
/**
|
||||
* Base url of LimeSurvey's instance.
|
||||
* Used to prepare configuration of connection.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $connectionBaseUrl = 'http://test.com';
|
||||
|
||||
public function testConstructorVisibilityAndArguments()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(SurveyService::class, OopVisibilityType::IS_PUBLIC, 2, 1);
|
||||
@@ -152,6 +161,30 @@ class SurveyServiceTest extends BaseTestCase
|
||||
static::assertFalse($this->serviceWithSurveys->isExistingSurvey(4, true));
|
||||
}
|
||||
|
||||
public function testGetStartSurveyUrl()
|
||||
{
|
||||
$rpcClientManager = $this->getJsonRpcClientManager(0);
|
||||
$sessionManager = $this->getSessionManager();
|
||||
|
||||
$this->createServiceWithoutSurveys($rpcClientManager, $sessionManager);
|
||||
$this->createServiceWithSurveys($rpcClientManager, $sessionManager);
|
||||
|
||||
$surveyId = 123;
|
||||
$token = 'djf28b47dha0mo83';
|
||||
$expectedUrl = sprintf('%s/%d?token=%s', $this->connectionBaseUrl, $surveyId, $token);
|
||||
|
||||
$participant = new Participant([
|
||||
'tid' => 1,
|
||||
'firstname' => 'John',
|
||||
'lastname' => 'Scott',
|
||||
'email' => 'john@scott.com',
|
||||
'token' => $token,
|
||||
]);
|
||||
|
||||
static::assertEquals($expectedUrl, $this->serviceWithoutSurveys->getStartSurveyUrl($surveyId, $participant));
|
||||
static::assertEquals($expectedUrl, $this->serviceWithSurveys->getStartSurveyUrl($surveyId, $participant));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns configuration used while connecting to LimeSurvey's API
|
||||
*
|
||||
@@ -159,7 +192,7 @@ class SurveyServiceTest extends BaseTestCase
|
||||
*/
|
||||
private function getConnectionConfiguration()
|
||||
{
|
||||
return new ConnectionConfiguration('http://test.com', 'test', 'test');
|
||||
return new ConnectionConfiguration($this->connectionBaseUrl, 'test', 'test');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user