@@ -583,6 +583,84 @@ def test_installation_creates_new_owner_if_dne_default_app(self, mock_refresh):
583583 repos_affected = [("12321" , "R_kgDOG2tZYQ" ), ("12343" , "R_kgDOG2tABC" )],
584584 )
585585
586+ @patch ("shared.events.amplitude.AmplitudeEventPublisher.publish" )
587+ @patch ("services.task.TaskService.refresh" )
588+ def test_installation_publishes_amplitude_event_without_installer (
589+ self , mock_refresh , mock_amplitude_publish
590+ ):
591+ username , service_id = "newuser" , 123456
592+
593+ self ._post_event_data (
594+ event = GitHubWebhookEvents .INSTALLATION ,
595+ data = {
596+ "installation" : {
597+ "id" : 4 ,
598+ "repository_selection" : "selected" ,
599+ "account" : {"id" : service_id , "login" : username },
600+ "app_id" : DEFAULT_APP_ID ,
601+ },
602+ "repositories" : [
603+ {"id" : "12321" , "node_id" : "R_kgDOG2tZYQ" },
604+ {"id" : "12343" , "node_id" : "R_kgDOG2tABC" },
605+ ],
606+ "sender" : {"type" : "User" },
607+ },
608+ )
609+
610+ owner_set = Owner .objects .filter (
611+ service = "github" , service_id = service_id , username = username
612+ )
613+ assert owner_set .exists ()
614+ owner = owner_set .first ()
615+
616+ mock_amplitude_publish .assert_called_with (
617+ "App Installed" ,
618+ {
619+ "user_ownerid" : owner .ownerid ,
620+ "ownerid" : owner .ownerid ,
621+ },
622+ )
623+
624+ @patch ("shared.events.amplitude.AmplitudeEventPublisher.publish" )
625+ @patch ("services.task.TaskService.refresh" )
626+ def test_installation_publishes_amplitude_event_with_installer (
627+ self , mock_refresh , mock_amplitude_publish
628+ ):
629+ installer = OwnerFactory (service = "github" , username = "installer_username" )
630+
631+ username , service_id = "newuser" , 123456
632+
633+ self ._post_event_data (
634+ event = GitHubWebhookEvents .INSTALLATION ,
635+ data = {
636+ "installation" : {
637+ "id" : 4 ,
638+ "repository_selection" : "selected" ,
639+ "account" : {"id" : service_id , "login" : username },
640+ "app_id" : DEFAULT_APP_ID ,
641+ },
642+ "repositories" : [
643+ {"id" : "12321" , "node_id" : "R_kgDOG2tZYQ" },
644+ {"id" : "12343" , "node_id" : "R_kgDOG2tABC" },
645+ ],
646+ "sender" : {"type" : "User" , "login" : "installer_username" },
647+ },
648+ )
649+
650+ owner_set = Owner .objects .filter (
651+ service = "github" , service_id = service_id , username = username
652+ )
653+ assert owner_set .exists ()
654+ owner = owner_set .first ()
655+
656+ mock_amplitude_publish .assert_called_with (
657+ "App Installed" ,
658+ {
659+ "user_ownerid" : installer .ownerid ,
660+ "ownerid" : owner .ownerid ,
661+ },
662+ )
663+
586664 @patch (
587665 "services.task.TaskService.refresh" ,
588666 lambda self ,
0 commit comments