From ee62e9f14801febc56b8d5982f99842bf6b277e7 Mon Sep 17 00:00:00 2001 From: Meritoo Date: Mon, 30 Oct 2017 19:44:04 +0100 Subject: [PATCH] SurveyService - add method that allows to get the "start survey url" using participant's token (instead of whole participant's object) --- composer.json | 2 +- src/Service/SurveyService.php | 24 ++++++++++++++++++------ tests/Service/SurveyServiceTest.php | 16 ++++++++++++++++ 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 9e19df0..2bf1df6 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "description": "Client of LimeSurvey API", "type": "library", "license": "MIT", - "version": "0.0.10", + "version": "0.0.11", "authors": [ { "name": "Meritoo", diff --git a/src/Service/SurveyService.php b/src/Service/SurveyService.php index af66532..b6c3bb3 100644 --- a/src/Service/SurveyService.php +++ b/src/Service/SurveyService.php @@ -189,6 +189,23 @@ class SurveyService return false; } + /** + * Returns url used to start survey for given survey and participant's token + * + * @param int $surveyId ID of survey to start + * @param string $participantToken Token of participant who would like to start survey + * @return string + */ + public function getStartSurveyUrlByToken($surveyId, $participantToken) + { + $baseUrl = $this + ->client + ->getConfiguration() + ->getBaseUrl(); + + return sprintf($this->startSurveyUrlTemplate, $baseUrl, $surveyId, $participantToken); + } + /** * Returns url used to start survey for given survey and participant * @@ -198,12 +215,7 @@ class SurveyService */ public function getStartSurveyUrl($surveyId, Participant $participant) { - $baseUrl = $this - ->client - ->getConfiguration() - ->getBaseUrl(); - - return sprintf($this->startSurveyUrlTemplate, $baseUrl, $surveyId, $participant->getToken()); + return $this->getStartSurveyUrlByToken($surveyId, $participant->getToken()); } /** diff --git a/tests/Service/SurveyServiceTest.php b/tests/Service/SurveyServiceTest.php index 4f8715a..9d87c9c 100644 --- a/tests/Service/SurveyServiceTest.php +++ b/tests/Service/SurveyServiceTest.php @@ -181,6 +181,22 @@ class SurveyServiceTest extends BaseTestCase static::assertFalse($this->serviceWithSurveys->isExistingSurvey(4, true)); } + public function testGetStartSurveyUrlByToken() + { + $rpcClientManager = $this->getJsonRpcClientManager(0); + $sessionManager = $this->getSessionManager(); + + $this->createServiceWithoutSurveys($rpcClientManager, $sessionManager); + $this->createServiceWithSurveys($rpcClientManager, $sessionManager); + + $surveyId = 123; + $token = uniqid(); + $expectedUrl = sprintf('%s/%d?token=%s', $this->connectionBaseUrl, $surveyId, $token); + + static::assertEquals($expectedUrl, $this->serviceWithoutSurveys->getStartSurveyUrlByToken($surveyId, $token)); + static::assertEquals($expectedUrl, $this->serviceWithSurveys->getStartSurveyUrlByToken($surveyId, $token)); + } + public function testGetStartSurveyUrl() { $rpcClientManager = $this->getJsonRpcClientManager(0);