diff --git a/app/Services/Model/Imp/SummitSponsorService.php b/app/Services/Model/Imp/SummitSponsorService.php index b320481e5..d987f1bc3 100644 --- a/app/Services/Model/Imp/SummitSponsorService.php +++ b/app/Services/Model/Imp/SummitSponsorService.php @@ -1184,8 +1184,9 @@ public function updateSponsorServicesStatistics(Summit $summit, int $sponsor_id, $statistics = $summit_sponsor->getSponsorServicesStatistics(); if (!$statistics) { - $statistics = new SponsorStatistics(); - $statistics->setSponsor($summit_sponsor); + $statistics = SponsorServicesStatisticsFactory::build($payload); + $summit_sponsor->setSponsorServicesStatistics($statistics); + return $statistics; } return SponsorServicesStatisticsFactory::populate($statistics, $payload); }); diff --git a/tests/InsertSummitTestData.php b/tests/InsertSummitTestData.php index 15d2edd7d..00a54c3dd 100644 --- a/tests/InsertSummitTestData.php +++ b/tests/InsertSummitTestData.php @@ -913,12 +913,14 @@ protected static function insertSummitTestData(){ } } - $statistics = new SponsorStatistics(); - $statistics->setFormsQty(random_int(1, 30)); - $statistics->setPurchasesQty(random_int(1, 30)); - $statistics->setPagesQty(random_int(1, 30)); - $statistics->setDocumentsQty(random_int(1, 30)); - $s->setSponsorServicesStatistics($statistics); + if ($i % 2 == 0) { + $statistics = new SponsorStatistics(); + $statistics->setFormsQty(random_int(1, 30)); + $statistics->setPurchasesQty(random_int(1, 30)); + $statistics->setPagesQty(random_int(1, 30)); + $statistics->setDocumentsQty(random_int(1, 30)); + $s->setSponsorServicesStatistics($statistics); + } self::$em->persist($s); self::$summit->addSummitSponsor($s); diff --git a/tests/OAuth2SummitSponsorApiTest.php b/tests/OAuth2SummitSponsorApiTest.php index cce73bf94..50f9f3357 100644 --- a/tests/OAuth2SummitSponsorApiTest.php +++ b/tests/OAuth2SummitSponsorApiTest.php @@ -878,4 +878,33 @@ public function testUpdatePartiallySponsorServicesStatistics(){ $this->assertEquals($new_forms_qty, $statistics->forms_qty); $this->assertEquals($pages_qty, $statistics->pages_qty); } + + public function testInsertPartiallySponsorServicesStatistics(){ + $params = [ + 'id' => self::$summit->getId(), + 'sponsor_id' => self::$sponsors[1]->getId(), + ]; + + $new_forms_qty = 10; + + $data = [ + 'forms_qty' => $new_forms_qty + ]; + + $response = $this->action( + "PUT", + "OAuth2SummitSponsorApiController@updateSponsorServicesStatistics", + $params, + [], + [], + [], + $this->getAuthHeaders(), + json_encode($data) + ); + + $content = $response->getContent(); + $this->assertResponseStatus(201); + $statistics = json_decode($content); + $this->assertEquals($new_forms_qty, $statistics->forms_qty); + } }