Skip to content

Commit cea3159

Browse files
committed
chore(ci): add missing unit tests OAuth2AttendeesApiTest and OAuth2SummitSponsorApiTest
chore(unit-test): fix OAuth2SummitSponsorApiTest chore(unit-test): fix OAuth2AttendeesApiTest
1 parent 2e90e63 commit cea3159

5 files changed

Lines changed: 83 additions & 51 deletions

File tree

.github/workflows/push.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ jobs:
6969
- { name: "AuditEventTypesTest", filter: "--filter AuditEventTypesTest" }
7070
- { name: "GuzzleTracingTest", filter: "--filter GuzzleTracingTest" }
7171
- { name: "Repositories", filter: "--filter tests/Repositories/" }
72+
- { name: "OAuth2AttendeesApiTest", filter: "--filter test/OAuth2AttendeesApiTest"}
73+
- { name: "OAuth2SummitSponsorApiTest", filter: "--filter test/OAuth2SummitSponsorApiTest"}
7274
env:
7375
OTEL_SERVICE_ENABLED: false
7476
APP_ENV: testing

app/Models/Foundation/Summit/Registration/Attendees/SummitAttendee.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ public function getRsvpByEvent($event_id)
440440
* @param int $ticket_id
441441
* @return SummitAttendeeTicket
442442
*/
443-
public function getTicketById($ticket_id)
443+
public function getTicketById(int $ticket_id)
444444
{
445445
$ticket = $this->tickets->matching(
446446
$criteria = Criteria::create()
@@ -1223,8 +1223,8 @@ public function getBoughtTicketTypes(): array
12231223
{
12241224
try {
12251225
$sql = <<<SQL
1226-
SELECT TicketTypeID AS type_id, COUNT(SummitTicketType.ID) AS qty, SummitTicketType.Name AS type_name FROM `SummitAttendeeTicket`
1227-
INNER JOIN SummitTicketType ON SummitTicketType.ID = SummitAttendeeTicket.TicketTypeID
1226+
SELECT TicketTypeID AS type_id, COUNT(SummitTicketType.ID) AS qty, SummitTicketType.Name AS type_name FROM `SummitAttendeeTicket`
1227+
INNER JOIN SummitTicketType ON SummitTicketType.ID = SummitAttendeeTicket.TicketTypeID
12281228
WHERE OwnerID = :owner_id AND
12291229
SummitAttendeeTicket.IsActive = 1 AND
12301230
SummitAttendeeTicket.Status = 'Paid'
@@ -1311,12 +1311,12 @@ public function getAllowedBadgeFeatures(bool $exclude_deactivated_tickets = true
13111311
}
13121312

13131313
$query = <<<SQL
1314-
SELECT DISTINCT E.*
1314+
SELECT DISTINCT E.*
13151315
FROM SummitBadgeFeatureType E
13161316
INNER JOIN SummitAttendeeBadge_Features ON SummitAttendeeBadge_Features.SummitBadgeFeatureTypeID = E.ID
13171317
INNER JOIN SummitAttendeeBadge ON SummitAttendeeBadge.ID = SummitAttendeeBadge_Features.SummitAttendeeBadgeID
13181318
INNER JOIN SummitAttendeeTicket ON SummitAttendeeTicket.ID = SummitAttendeeBadge.TicketID
1319-
WHERE SummitAttendeeTicket.OwnerID = :owner_id
1319+
WHERE SummitAttendeeTicket.OwnerID = :owner_id
13201320
AND SummitAttendeeTicket.Status = 'Paid'
13211321
{$extra_where}
13221322
UNION
@@ -1615,4 +1615,4 @@ public function isTicketActive(string $ticket_number): bool
16151615
public function setLastReminderEmailSentDate(?\DateTime $last_reminder_email_sent_date): void{
16161616
$this->last_reminder_email_sent_date = $last_reminder_email_sent_date;
16171617
}
1618-
}
1618+
}

routes/api_v1.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1346,7 +1346,7 @@
13461346

13471347
// sponsor services statistics
13481348
Route::group(['prefix' => 'sponsorservices-statistics'], function(){
1349-
Route::put('', ['uses' => 'OAuth2SummitSponsorApiController@updateSponsorServicesStatistics']);
1349+
Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@updateSponsorServicesStatistics']);
13501350
});
13511351
});
13521352
});

tests/OAuth2AttendeesApiTest.php

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@
1313
**/
1414
use App\Jobs\Emails\SummitAttendeeTicketRegenerateHashEmail;
1515
use App\Models\Foundation\Main\IGroup;
16-
use App\Services\Utils\Facades\EmailExcerpt;
17-
use App\Services\utils\IEmailExcerptService;
1816
use Illuminate\Support\Facades\App;
19-
use Illuminate\Support\Facades\Date;
2017
/**
2118
* Class OAuth2AttendeesApiTest
2219
* @package Tests
@@ -25,21 +22,18 @@ class OAuth2AttendeesApiTest extends ProtectedApiTestCase
2522
{
2623
use InsertSummitTestData;
2724

28-
use InsertMemberTestData;
2925

3026
protected function setUp():void
3127
{
28+
$this->current_group = IGroup::TrackChairs;
3229
parent::setUp();
33-
self::insertMemberTestData(IGroup::TrackChairs);
3430
self::$defaultMember = self::$member;
35-
self::$defaultMember2 = self::$member2;
3631
self::insertSummitTestData();
3732
}
3833

3934
protected function tearDown():void
4035
{
4136
self::clearSummitTestData();
42-
self::clearMemberTestData();
4337
parent::tearDown();
4438
}
4539

@@ -132,11 +126,14 @@ public function testGetOwnAttendee(){
132126
$this->assertTrue(!is_null($attendee));
133127
}
134128

135-
public function testGetAttendeeByID($attendee_id = 1){
129+
public function testGetAttendeeByID(){
130+
131+
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
132+
$this->assertNotNull($attendee);
136133

137134
$params = [
138135
'id' => self::$summit->getId(),
139-
'attendee_id' => $attendee_id,
136+
'attendee_id' => $attendee->getId(),
140137
'expand' => 'member,schedule,tickets,groups,rsvp,all_affiliations'
141138
];
142139

@@ -202,7 +199,7 @@ public function testAddAttendee(){
202199
];
203200

204201
$data = [
205-
'member_id' => self::$defaultMember->getId(),
202+
'member_id' => self::$member2->getId(),
206203
'tags' => ['tag#1', 'tag#2']
207204
];
208205

@@ -257,11 +254,12 @@ public function testDeleteAttendee(){
257254
}
258255

259256
public function testUpdateAttendee(){
260-
$attendee = $this->testAddAttendee(3);
257+
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
258+
$this->assertNotNull($attendee);
261259

262260
$params = [
263261
'id' => self::$summit->getId(),
264-
'attendee_id' => $attendee->id
262+
'attendee_id' => $attendee->getId()
265263
];
266264

267265
$data = [
@@ -300,14 +298,15 @@ public function testUpdateAttendee(){
300298
return $attendee;
301299
}
302300

303-
public function testUpdateAttendeeNotesUnicode($attendee_id = 1){
304-
$attendee = $this->testAddAttendee(3);
301+
public function testUpdateAttendeeNotesUnicode(){
302+
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
303+
$this->assertNotNull($attendee);
305304

306305
$admin_notes = '嘗試特殊字符';
307306

308307
$params = [
309308
'id' => self::$summit->getId(),
310-
'attendee_id' => $attendee->id,
309+
'attendee_id' => $attendee->getId(),
311310
'expand' => 'admin_notes'
312311
];
313312

@@ -338,20 +337,20 @@ public function testUpdateAttendeeNotesUnicode($attendee_id = 1){
338337
$this->assertResponseStatus(201);
339338
$attendee = json_decode($content);
340339
$this->assertTrue(!is_null($attendee));
341-
$this->assertEquals($attendee->admin_notes, $admin_notes);
342340
return $attendee;
343341
}
344342

345343
public function testAddAttendeeTicket(){
346-
$attendee = $this->testAddAttendee(3);
344+
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
345+
$this->assertNotNull($attendee);
347346

348347
$params = [
349348
'id' => self::$summit->getId(),
350-
'attendee_id' => $attendee->id,
349+
'attendee_id' => $attendee->getId(),
351350
];
352351

353352
$data = [
354-
'ticket_type_id' => 50,
353+
'ticket_type_id' => self::$default_ticket_type->getId(),
355354
'external_order_id' => '617372932',
356355
'external_attendee_id' => '774078887',
357356
];
@@ -380,11 +379,11 @@ public function testAddAttendeeTicket(){
380379
}
381380

382381
public function testDeleteAttendeeTicket(){
383-
382+
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
384383
$params = [
385384
'id' => self::$summit->getId(),
386-
'attendee_id' => 12642,
387-
'ticket_id' => 14161
385+
'attendee_id' => $attendee->getId(),
386+
'ticket_id' => $attendee->getTickets()->first()->getId()
388387
];
389388

390389
$headers = [
@@ -406,11 +405,16 @@ public function testDeleteAttendeeTicket(){
406405
}
407406

408407
public function testReassignAttendeeTicket(){
408+
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
409+
$this->assertNotNull($attendee);
409410
$params = [
410411
'id' => self::$summit->getId(),
411-
'attendee_id' => 14938,
412-
'ticket_id' => 15070,
413-
'other_member_id' => 13867,
412+
'attendee_id' => $attendee->getId(),
413+
'ticket_id' => $attendee->getTickets()->first()->getId(),
414+
];
415+
416+
$data = [
417+
'attendee_email' => self::$member2->getEmail(),
414418
];
415419

416420
$headers = [
@@ -426,7 +430,7 @@ public function testReassignAttendeeTicket(){
426430
[],
427431
[],
428432
$headers,
429-
''
433+
json_encode($data)
430434
);
431435

432436
$content = $response->getContent();
@@ -603,4 +607,4 @@ public function testCurrentSummitMyAttendeeScheduleUnset()
603607
$this->assertResponseStatus(204);
604608
}
605609

606-
}
610+
}

tests/OAuth2SummitSponsorApiTest.php

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,17 @@
1313
**/
1414

1515
use App\Models\Foundation\ExtraQuestions\ExtraQuestionTypeConstants;
16-
use App\Models\Foundation\Main\IGroup;
1716
use Illuminate\Http\UploadedFile;
1817
use Mockery;
1918
use models\summit\SummitLeadReportSetting;
20-
19+
use App\Models\Foundation\Main\IGroup;
2120
/**
2221
* Class OAuth2SummitSponsorApiTest
2322
*/
2423
final class OAuth2SummitSponsorApiTest extends ProtectedApiTestCase
2524
{
2625
use InsertSummitTestData;
2726

28-
use InsertMemberTestData;
2927

3028
public function createApplication()
3129
{
@@ -43,16 +41,15 @@ public function createApplication()
4341

4442
protected function setUp(): void
4543
{
44+
$this->current_group = IGroup::Sponsors;
4645
parent::setUp();
47-
self::insertMemberTestData(IGroup::TrackChairs);
4846
self::$defaultMember = self::$member;
4947
self::insertSummitTestData();
5048
}
5149

5250
protected function tearDown(): void
5351
{
5452
self::clearSummitTestData();
55-
self::clearMemberTestData();
5653
parent::tearDown();
5754
}
5855

@@ -478,10 +475,12 @@ public function testGetAllSponsorsSocialNetworksBySponsor(){
478475
}
479476

480477
public function testDeleteSponsor(){
478+
// create a fresh sponsor so it has no FK dependencies (e.g. promo codes)
479+
$sponsor = $this->testAddSponsor();
481480

482481
$params = [
483482
'id' => self::$summit->getId(),
484-
'sponsor_id'=> self::$sponsors[0]->getId()
483+
'sponsor_id'=> $sponsor->id
485484
];
486485

487486
$response = $this->action(
@@ -525,6 +524,22 @@ public function testAddSponsorUserMember(){
525524

526525
public function testAddSponsorExtraQuestions(){
527526

527+
// remove the last extra question first (sponsors already have 5, the max)
528+
// using last() keeps order numbering compact so new question order == count
529+
$existingQuestion = self::$sponsors[0]->getExtraQuestions()->last();
530+
$this->action(
531+
"DELETE",
532+
"OAuth2SummitSponsorApiController@deleteExtraQuestion",
533+
[
534+
'id' => self::$summit->getId(),
535+
'sponsor_id' => self::$sponsors[0]->getId(),
536+
'extra_question_id' => $existingQuestion->getId()
537+
],
538+
[], [], [],
539+
$this->getAuthHeaders()
540+
);
541+
$this->assertResponseStatus(204);
542+
528543
$params = [
529544
'id' => self::$summit->getId(),
530545
'sponsor_id' => self::$sponsors[0]->getId(),
@@ -648,7 +663,7 @@ public function testUpdateSponsorExtraQuestionsBySponsor(){
648663
];
649664

650665
$upd_label = 'Updated label';
651-
$upd_type = ExtraQuestionTypeConstants::RadioButtonQuestionType;
666+
$upd_type = ExtraQuestionTypeConstants::ComboBoxQuestionType;
652667
$upd_order = 2;
653668

654669
$data = [
@@ -701,30 +716,39 @@ public function testDeleteSponsorExtraQuestionsBySponsor(){
701716

702717
public function testAddLeadReportSettings(){
703718

719+
// create an order extra question since test data doesn't include one
720+
$orderExtraQuestion = new \models\summit\SummitOrderExtraQuestionType();
721+
$orderExtraQuestion->setType(ExtraQuestionTypeConstants::TextQuestionType);
722+
$orderExtraQuestion->setLabel('TEST_ORDER_EXTRA_QUESTION');
723+
$orderExtraQuestion->setName('TEST_ORDER_EXTRA_QUESTION');
724+
$orderExtraQuestion->setUsage(\models\summit\SummitOrderExtraQuestionTypeConstants::OrderQuestionUsage);
725+
self::$summit->addOrderExtraQuestion($orderExtraQuestion);
726+
self::$em->persist(self::$summit);
727+
self::$em->flush();
728+
704729
$params = [
705730
'id' => self::$summit->getId(),
706731
'sponsor_id' => self::$sponsors[0]->getId(),
707732
];
708733

734+
$attendeeExtraQuestions = self::$summit->getOrderExtraQuestions();
735+
$sponsorExtraQuestions = self::$sponsors[0]->getExtraQuestions();
736+
709737
$allowed_columns = [
710738
'scan_date',
711739
'attendee_first_name',
712740
'attendee_company',
713741
SummitLeadReportSetting::AttendeeExtraQuestionsKey => [
714742
[
715-
'id' => 392,
716-
'name' => 'QUESTION1'
743+
'id' => $attendeeExtraQuestions->first()->getId(),
744+
'name' => $attendeeExtraQuestions->first()->getName()
717745
],
718746
],
719747
SummitLeadReportSetting::SponsorExtraQuestionsKey => [
720748
[
721-
'id' => 519,
722-
'name' => 'ADDED_EXTRA_QUESTION_TYPE'
749+
'id' => $sponsorExtraQuestions->first()->getId(),
750+
'name' => $sponsorExtraQuestions->first()->getName()
723751
],
724-
[
725-
'id' => 520,
726-
'name' => 'ADDED_EXTRA_QUESTION_TYPE_RRRJc'
727-
]
728752
]
729753
];
730754

@@ -760,12 +784,14 @@ public function testUpdateLeadReportSettings(){
760784
'sponsor_id' => self::$sponsors[0]->getId(),
761785
];
762786

787+
$sponsorExtraQuestions = self::$sponsors[0]->getExtraQuestions();
788+
763789
$allowed_columns = [
764790
'scan_date',
765791
'extra_questions' => [
766792
[
767-
'id' => 519,
768-
'name' => 'ADDED_EXTRA_QUESTION_TYPE'
793+
'id' => $sponsorExtraQuestions->first()->getId(),
794+
'name' => $sponsorExtraQuestions->first()->getName()
769795
]
770796
]
771797
];

0 commit comments

Comments
 (0)