@@ -474,8 +474,8 @@ def test_perform_connections(self, mocker):
474474 ]
475475 assert len (connect_calls ) == 2
476476
477- def test_has_custom_frontend_connected_true (self , mocker ):
478- """Test detection when custom-frontend interface is connected."""
477+ def test_custom_frontend_interface_true (self , mocker ):
478+ """Test returns True when all frontends have custom-frontend connected."""
479479 device = TrivialDevice (
480480 interfaces = [
481481 SnapdAPIClient (),
@@ -497,7 +497,10 @@ def test_has_custom_frontend_connected_true(self, mocker):
497497 "snap" : "checkbox22" ,
498498 "interface" : "content" ,
499499 "attrs" : {"content" : "custom-frontend" },
500- "connections" : [{"snap" : "checkbox" }],
500+ "connections" : [
501+ {"snap" : "checkbox" },
502+ {"snap" : "checkbox-iiotg" },
503+ ],
501504 }
502505 ]
503506 },
@@ -510,18 +513,71 @@ def test_has_custom_frontend_connected_true(self, mocker):
510513 )
511514
512515 frontends = [
513- SnapSpecifier (name = "checkbox" , channel = Channel .from_string ("22/stable" ))
516+ SnapSpecifier (name = "checkbox" , channel = Channel .from_string ("22/stable" )),
517+ SnapSpecifier (
518+ name = "checkbox-iiotg" , channel = Channel .from_string ("22/stable" )
519+ ),
514520 ]
515521 installer = CheckboxSnapsInstaller (
516522 device , TrivialDevice (), frontends , mocker .Mock ()
517523 )
518524
519- result = installer .has_custom_frontend_connected ( frontends [ 0 ] )
525+ result = installer .custom_frontend_interface ( )
520526
521527 assert result is True
522528
523- def test_has_custom_frontend_connected_false (self , mocker ):
524- """Test detection when custom-frontend interface is not connected."""
529+ def test_custom_frontend_interface_false_missing (self , mocker ):
530+ """Test returns False when some frontends lack custom-frontend interface."""
531+ device = TrivialDevice (
532+ interfaces = [
533+ SnapdAPIClient (),
534+ RebootInterface (),
535+ SystemStatusInterface (),
536+ SnapInterface (),
537+ ]
538+ )
539+
540+ mocker .patch .object (
541+ device .interfaces [SnapdAPIClient ],
542+ "get" ,
543+ side_effect = [
544+ {"architecture" : "amd64" , "store" : None },
545+ [{"store" : "branded" }],
546+ {
547+ "plugs" : [
548+ {
549+ "snap" : "checkbox22" ,
550+ "interface" : "content" ,
551+ "attrs" : {"content" : "custom-frontend" },
552+ "connections" : [{"snap" : "checkbox" }],
553+ }
554+ ]
555+ },
556+ ],
557+ )
558+ mocker .patch (
559+ "toolbox.checkbox.installers.snaps.CheckboxRuntimeHelper"
560+ ).return_value .determine_checkbox_runtime .return_value = SnapSpecifier (
561+ name = "checkbox22" , channel = Channel .from_string ("latest/stable" )
562+ )
563+
564+ # Two frontends but only one is connected
565+ frontends = [
566+ SnapSpecifier (name = "checkbox" , channel = Channel .from_string ("22/stable" )),
567+ SnapSpecifier (
568+ name = "checkbox-iiotg" , channel = Channel .from_string ("22/stable" )
569+ ),
570+ ]
571+ installer = CheckboxSnapsInstaller (
572+ device , TrivialDevice (), frontends , mocker .Mock ()
573+ )
574+
575+ result = installer .custom_frontend_interface ()
576+
577+ assert result is False
578+
579+ def test_custom_frontend_interface_false_no_plugs (self , mocker ):
580+ """Test returns False when no custom-frontend plugs exist."""
525581 device = TrivialDevice (
526582 interfaces = [
527583 SnapdAPIClient (),
@@ -553,7 +609,7 @@ def test_has_custom_frontend_connected_false(self, mocker):
553609 device , TrivialDevice (), frontends , mocker .Mock ()
554610 )
555611
556- result = installer .has_custom_frontend_connected ( frontends [ 0 ] )
612+ result = installer .custom_frontend_interface ( )
557613
558614 assert result is False
559615
@@ -634,9 +690,7 @@ def test_restart_new_interface(self, mocker):
634690 device , TrivialDevice (), frontends , mocker .Mock ()
635691 )
636692
637- mocker .patch .object (
638- installer , "has_custom_frontend_connected" , return_value = True
639- )
693+ mocker .patch .object (installer , "custom_frontend_interface" , return_value = True )
640694 mock_configure_agent = mocker .patch .object (installer , "configure_agent" )
641695
642696 installer .restart ()
@@ -688,9 +742,7 @@ def test_restart_legacy_interface(self, mocker):
688742 device , TrivialDevice (), frontends , mocker .Mock ()
689743 )
690744
691- mocker .patch .object (
692- installer , "has_custom_frontend_connected" , return_value = False
693- )
745+ mocker .patch .object (installer , "custom_frontend_interface" , return_value = False )
694746 mock_configure_agent = mocker .patch .object (installer , "configure_agent" )
695747
696748 installer .restart ()
0 commit comments