@@ -82,6 +82,66 @@ describe('ApexGuruEngine', () => {
8282 expect ( progressSpy ) . toHaveBeenCalledWith ( 0 ) ;
8383 expect ( progressSpy ) . toHaveBeenCalledWith ( 100 ) ;
8484 } ) ;
85+
86+ it ( 'should return empty array when workspace has no Apex files' , async ( ) => {
87+ mockWorkspace . getWorkspaceFiles = jest . fn ( ) . mockResolvedValue ( [
88+ '/project/js/app.js' ,
89+ '/project/js/utils.js' ,
90+ '/project/css/styles.css'
91+ ] ) ;
92+
93+ const rules = await engine . describeRules ( {
94+ logFolder : '/tmp/logs' ,
95+ workingFolder : '/tmp/working' ,
96+ workspace : mockWorkspace
97+ } ) ;
98+
99+ expect ( rules ) . toEqual ( [ ] ) ;
100+ expect ( mockWorkspace . getWorkspaceFiles ) . toHaveBeenCalled ( ) ;
101+ } ) ;
102+
103+ it ( 'should return all rules when workspace has Apex files' , async ( ) => {
104+ mockWorkspace . getWorkspaceFiles = jest . fn ( ) . mockResolvedValue ( [
105+ '/project/classes/Account.cls' ,
106+ '/project/js/app.js'
107+ ] ) ;
108+
109+ const rules = await engine . describeRules ( {
110+ logFolder : '/tmp/logs' ,
111+ workingFolder : '/tmp/working' ,
112+ workspace : mockWorkspace
113+ } ) ;
114+
115+ expect ( rules . length ) . toBeGreaterThan ( 0 ) ;
116+ expect ( rules . find ( r => r . name === 'SoqlInALoop' ) ) . toBeDefined ( ) ;
117+ } ) ;
118+
119+ it ( 'should return all rules when workspace has trigger files' , async ( ) => {
120+ mockWorkspace . getWorkspaceFiles = jest . fn ( ) . mockResolvedValue ( [
121+ '/project/triggers/AccountTrigger.trigger' ,
122+ '/project/js/app.js'
123+ ] ) ;
124+
125+ const rules = await engine . describeRules ( {
126+ logFolder : '/tmp/logs' ,
127+ workingFolder : '/tmp/working' ,
128+ workspace : mockWorkspace
129+ } ) ;
130+
131+ expect ( rules . length ) . toBeGreaterThan ( 0 ) ;
132+ expect ( rules . find ( r => r . name === 'DmlInALoop' ) ) . toBeDefined ( ) ;
133+ } ) ;
134+
135+ it ( 'should return all rules when no workspace provided' , async ( ) => {
136+ const rules = await engine . describeRules ( {
137+ logFolder : '/tmp/logs' ,
138+ workingFolder : '/tmp/working'
139+ // No workspace
140+ } ) ;
141+
142+ expect ( rules . length ) . toBeGreaterThan ( 0 ) ;
143+ expect ( rules . find ( r => r . name === 'SoqlInALoop' ) ) . toBeDefined ( ) ;
144+ } ) ;
85145 } ) ;
86146
87147 describe ( 'runRules' , ( ) => {
0 commit comments