@@ -605,4 +605,97 @@ public function testRestrictedRead()
605605 }
606606 }
607607 }
608+
609+ public function testCRUDTeamMembers ()
610+ {
611+ $ this ->loginWeb ();
612+ $ this ->api ->getRouter ()->registerAuthMiddleware (new InternalAuthMiddleware ());
613+ $ ticket = $ this ->createItem (Ticket::class, [
614+ 'name ' => __FUNCTION__ ,
615+ 'content ' => 'test ' ,
616+ 'entities_id ' => getItemByTypeName ('Entity ' , '_test_root_entity ' , true ),
617+ ]);
618+
619+ // Add team members
620+ $ members = [
621+ ['type ' => 'User ' , 'id ' => 3 , 'role ' => 'requester ' ],
622+ ['type ' => 'User ' , 'id ' => 2 , 'role ' => 'observer ' ],
623+ ['type ' => 'User ' , 'id ' => 4 , 'role ' => 'assigned ' ],
624+ ];
625+ foreach ($ members as $ member ) {
626+ $ request = new Request ('POST ' , "/Assistance/Ticket/ {$ ticket ->getID ()}/TeamMember " );
627+ $ request ->setParameter ('type ' , $ member ['type ' ]);
628+ $ request ->setParameter ('id ' , $ member ['id ' ]);
629+ $ request ->setParameter ('role ' , $ member ['role ' ]);
630+ $ this ->api ->call ($ request , function ($ call ) {
631+ /** @var \HLAPICallAsserter $call */
632+ $ call ->response ->isOK ();
633+ });
634+ }
635+
636+ // Get all members
637+ $ this ->api ->call (new Request ('GET ' , "/Assistance/Ticket/ {$ ticket ->getID ()}/TeamMember " ), function ($ call ) use ($ members ) {
638+ /** @var \HLAPICallAsserter $call */
639+ $ call ->response
640+ ->isOK ()
641+ ->jsonContent (function ($ content ) use ($ members ) {
642+ $ this ->assertCount (count ($ members ), $ content );
643+ $ member_ids = array_column ($ members , 'id ' );
644+ foreach ($ content as $ member ) {
645+ $ this ->assertContains ($ member ['id ' ], $ member_ids );
646+ }
647+ });
648+ });
649+
650+ // Get by role
651+ $ this ->api ->call (new Request ('GET ' , "/Assistance/Ticket/ {$ ticket ->getID ()}/TeamMember/requester " ), function ($ call ) {
652+ /** @var \HLAPICallAsserter $call */
653+ $ call ->response
654+ ->isOK ()
655+ ->jsonContent (function ($ content ) {
656+ $ this ->assertCount (1 , $ content );
657+ $ this ->assertEquals (3 , array_values ($ content )[0 ]['id ' ]);
658+ });
659+ });
660+ $ this ->api ->call (new Request ('GET ' , "/Assistance/Ticket/ {$ ticket ->getID ()}/TeamMember/observer " ), function ($ call ) {
661+ /** @var \HLAPICallAsserter $call */
662+ $ call ->response
663+ ->isOK ()
664+ ->jsonContent (function ($ content ) {
665+ $ this ->assertCount (1 , $ content );
666+ $ this ->assertEquals (2 , array_values ($ content )[0 ]['id ' ]);
667+ });
668+ });
669+ $ this ->api ->call (new Request ('GET ' , "/Assistance/Ticket/ {$ ticket ->getID ()}/TeamMember/assigned " ), function ($ call ) {
670+ /** @var \HLAPICallAsserter $call */
671+ $ call ->response
672+ ->isOK ()
673+ ->jsonContent (function ($ content ) {
674+ $ this ->assertCount (1 , $ content );
675+ $ this ->assertEquals (4 , array_values ($ content )[0 ]['id ' ]);
676+ });
677+ });
678+
679+ // Remove members
680+ foreach ($ members as $ member ) {
681+ $ request = new Request ('DELETE ' , "/Assistance/Ticket/ {$ ticket ->getID ()}/TeamMember " );
682+ $ request ->setParameter ('type ' , $ member ['type ' ]);
683+ $ request ->setParameter ('id ' , $ member ['id ' ]);
684+ $ request ->setParameter ('role ' , $ member ['role ' ]);
685+ $ this ->api ->call ($ request , function ($ call ) {
686+ /** @var \HLAPICallAsserter $call */
687+ $ call ->response ->isOK ();
688+ });
689+ }
690+
691+ // Verify removal
692+ $ this ->api ->call (new Request ('GET ' , "/Assistance/Ticket/ {$ ticket ->getID ()}/TeamMember " ), function ($ call ) {
693+ /** @var \HLAPICallAsserter $call */
694+ $ call ->response
695+ ->isOK ()
696+ ->jsonContent (function ($ content ) {
697+ $ this ->assertCount (0 , $ content );
698+ });
699+ });
700+ }
608701}
0 commit comments