Fix bug: task references are not unique
This commit is contained in:
parent
fa59a1487c
commit
46d711cf51
|
|
@ -139,7 +139,7 @@ class GithubWebhook extends Base
|
|||
*/
|
||||
public function parseCommentIssueEvent(array $payload)
|
||||
{
|
||||
$task = $this->taskFinder->getByReference($payload['issue']['number']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $payload['issue']['number']);
|
||||
$user = $this->user->getByUsername($payload['comment']['user']['login']);
|
||||
|
||||
if (! empty($task) && ! empty($user)) {
|
||||
|
|
@ -196,7 +196,7 @@ class GithubWebhook extends Base
|
|||
*/
|
||||
public function handleIssueClosed(array $issue)
|
||||
{
|
||||
$task = $this->taskFinder->getByReference($issue['number']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||
|
||||
if (! empty($task)) {
|
||||
$event = array(
|
||||
|
|
@ -225,7 +225,7 @@ class GithubWebhook extends Base
|
|||
*/
|
||||
public function handleIssueReopened(array $issue)
|
||||
{
|
||||
$task = $this->taskFinder->getByReference($issue['number']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||
|
||||
if (! empty($task)) {
|
||||
$event = array(
|
||||
|
|
@ -255,7 +255,7 @@ class GithubWebhook extends Base
|
|||
public function handleIssueAssigned(array $issue)
|
||||
{
|
||||
$user = $this->user->getByUsername($issue['assignee']['login']);
|
||||
$task = $this->taskFinder->getByReference($issue['number']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||
|
||||
if (! empty($user) && ! empty($task)) {
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ class GithubWebhook extends Base
|
|||
*/
|
||||
public function handleIssueUnassigned(array $issue)
|
||||
{
|
||||
$task = $this->taskFinder->getByReference($issue['number']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||
|
||||
if (! empty($task)) {
|
||||
|
||||
|
|
@ -318,7 +318,7 @@ class GithubWebhook extends Base
|
|||
*/
|
||||
public function handleIssueLabeled(array $issue, array $label)
|
||||
{
|
||||
$task = $this->taskFinder->getByReference($issue['number']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||
|
||||
if (! empty($task)) {
|
||||
|
||||
|
|
@ -350,7 +350,7 @@ class GithubWebhook extends Base
|
|||
*/
|
||||
public function handleIssueUnlabeled(array $issue, array $label)
|
||||
{
|
||||
$task = $this->taskFinder->getByReference($issue['number']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||
|
||||
if (! empty($task)) {
|
||||
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ class GitlabWebhook extends Base
|
|||
*/
|
||||
public function handleIssueClosed(array $issue)
|
||||
{
|
||||
$task = $this->taskFinder->getByReference($issue['id']);
|
||||
$task = $this->taskFinder->getByReference($this->project_id, $issue['id']);
|
||||
|
||||
if (! empty($task)) {
|
||||
$event = array(
|
||||
|
|
|
|||
|
|
@ -204,12 +204,13 @@ class TaskFinder extends Base
|
|||
* Fetch a task by the reference (external id)
|
||||
*
|
||||
* @access public
|
||||
* @param integer $project_id Project id
|
||||
* @param string $reference Task reference
|
||||
* @return array
|
||||
*/
|
||||
public function getByReference($reference)
|
||||
public function getByReference($project_id, $reference)
|
||||
{
|
||||
return $this->db->table(Task::TABLE)->eq('reference', $reference)->findOne();
|
||||
return $this->db->table(Task::TABLE)->eq('project_id', $project_id)->eq('reference', $reference)->findOne();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -88,9 +88,12 @@ class GitlabWebhookTest extends Base
|
|||
|
||||
// Create a task with the issue reference
|
||||
$this->assertEquals(1, $tc->create(array('title' => 'A', 'project_id' => 1, 'reference' => 103361)));
|
||||
$task = $tf->getByReference(103361);
|
||||
$task = $tf->getByReference(1, 103361);
|
||||
$this->assertNotEmpty($task);
|
||||
|
||||
$task = $tf->getByReference(2, 103361);
|
||||
$this->assertEmpty($task);
|
||||
|
||||
$this->assertTrue($g->handleIssueClosed($event['object_attributes']));
|
||||
|
||||
$called = $this->container['dispatcher']->getCalledListeners();
|
||||
|
|
|
|||
Loading…
Reference in New Issue