1111import java .nio .file .Path ;
1212import java .util .List ;
1313
14+ import static cf .maybelambda .fedora .ConfigManager .DNF_INSTALL_FILE ;
15+ import static cf .maybelambda .fedora .ConfigManager .DNF_REMOVE_FILE ;
16+ import static cf .maybelambda .fedora .ConfigManager .FLATPAK_INSTALL_FILE ;
17+ import static cf .maybelambda .fedora .ConfigManager .HELP_FILE ;
1418import static org .junit .jupiter .api .Assertions .assertEquals ;
1519import static org .junit .jupiter .api .Assertions .assertThrows ;
1620import static org .junit .jupiter .api .Assertions .assertTrue ;
@@ -57,7 +61,7 @@ void readResourceLinesThrowsIOExceptionWhenResourceMissing() {
5761 void loadPackageNamesFromValidFileParsesPackageNamesAndOmitsComments () {
5862 try (MockedStatic <ConfigManager > updaterMock = Mockito .mockStatic (ConfigManager .class , CALLS_REAL_METHODS )) {
5963 updaterMock .when (() -> ConfigManager .readResourceLines (any (String .class )))
60- .thenReturn (List .of ("# Comment" , "nano" , "vim" , "" , "htop" ));
64+ .thenReturn (List .of ("# Comment" , "nano" , "vim" , "" , "htop" ));
6165
6266 List <String > result = ConfigManager .loadPackageNamesFrom ("test-packages.cf" );
6367
@@ -69,11 +73,82 @@ void loadPackageNamesFromValidFileParsesPackageNamesAndOmitsComments() {
6973 void loadPackageNamesFromReturnsEmptyListOnIOException () {
7074 try (MockedStatic <Files > filesMock = mockStatic (Files .class )) {
7175 filesMock .when (() -> Files .readAllLines (any (Path .class ), eq (StandardCharsets .UTF_8 )))
72- .thenThrow (new IOException ("Simulated failure" ));
76+ .thenThrow (new IOException ("Simulated failure" ));
7377
7478 List <String > result = ConfigManager .loadPackageNamesFrom ("missing.cf" );
7579
7680 assertTrue (result .isEmpty ());
7781 }
7882 }
83+
84+ @ Test
85+ void loadPackageNamesFromHandlesEmptyFile () {
86+ try (MockedStatic <ConfigManager > updaterMock = Mockito .mockStatic (ConfigManager .class , CALLS_REAL_METHODS )) {
87+ updaterMock .when (() -> ConfigManager .readResourceLines (any (String .class ))).thenReturn (List .of ());
88+
89+ List <String > result = ConfigManager .loadPackageNamesFrom ("empty.cf" );
90+
91+ assertTrue (result .isEmpty ());
92+ }
93+ }
94+
95+ @ Test
96+ void loadPackageNamesFromHandlesOnlyCommentsAndWhitespace () {
97+ try (MockedStatic <ConfigManager > updaterMock = Mockito .mockStatic (ConfigManager .class , CALLS_REAL_METHODS )) {
98+ updaterMock .when (() -> ConfigManager .readResourceLines (any (String .class )))
99+ .thenReturn (List .of ("# Comment" , " " , "# Another comment" , "" ));
100+
101+ List <String > result = ConfigManager .loadPackageNamesFrom ("comments-only.cf" );
102+
103+ assertTrue (result .isEmpty ());
104+ }
105+ }
106+
107+ @ Test
108+ void getHelpTextReturnsTextFromHelpFile () throws IOException {
109+ try (MockedStatic <ConfigManager > configManagerMock = mockStatic (ConfigManager .class , CALLS_REAL_METHODS )) {
110+ List <String > helpText = List .of ("Help line 1" , "Help line 2" , "Help line 3" );
111+ configManagerMock .when (() -> ConfigManager .readResourceLines (eq (HELP_FILE ))).thenReturn (helpText );
112+
113+ List <String > result = ConfigManager .getHelpText ();
114+
115+ assertEquals (helpText , result );
116+ }
117+ }
118+
119+ @ Test
120+ void getDnfInstallPackagesReturnsCorrectPackageNames () {
121+ try (MockedStatic <ConfigManager > updaterMock = Mockito .mockStatic (ConfigManager .class , CALLS_REAL_METHODS )) {
122+ List <String > pkgs = List .of ("package1" , "package2" , "package3" );
123+ updaterMock .when (() -> ConfigManager .loadPackageNamesFrom (eq (DNF_INSTALL_FILE ))).thenReturn (pkgs );
124+
125+ List <String > result = ConfigManager .getDnfInstallPackages ();
126+
127+ assertEquals (pkgs , result );
128+ }
129+ }
130+
131+ @ Test
132+ void getDnfRemovePackagesReturnsCorrectPackageNames () {
133+ try (MockedStatic <ConfigManager > updaterMock = Mockito .mockStatic (ConfigManager .class , CALLS_REAL_METHODS )) {
134+ List <String > pkgs = List .of ("package1" , "package2" , "package3" );
135+ updaterMock .when (() -> ConfigManager .loadPackageNamesFrom (eq (DNF_REMOVE_FILE ))).thenReturn (pkgs );
136+
137+ List <String > result = ConfigManager .getDnfRemovePackages ();
138+
139+ assertEquals (pkgs , result );
140+ }
141+ }
142+
143+ @ Test
144+ void getFlatpakInstallPackagesReturnsCorrectPackageNames () {
145+ try (MockedStatic <ConfigManager > updaterMock = Mockito .mockStatic (ConfigManager .class , CALLS_REAL_METHODS )) {
146+ List <String > pkgs = List .of ("package1" , "package2" , "package3" );
147+ updaterMock .when (() -> ConfigManager .loadPackageNamesFrom (eq (FLATPAK_INSTALL_FILE ))).thenReturn (pkgs );
148+
149+ List <String > result = ConfigManager .getFlatpakInstallPackages ();
150+
151+ assertEquals (pkgs , result );
152+ }
153+ }
79154}
0 commit comments