3030import org .sonar .api .batch .rule .CheckFactory ;
3131import org .sonar .api .batch .rule .internal .ActiveRulesBuilder ;
3232import org .sonar .api .component .ResourcePerspectives ;
33+ import org .sonar .api .issue .Issuable ;
34+ import org .sonar .api .issue .Issue ;
3335import org .sonar .api .measures .CoreMetrics ;
3436import org .sonar .api .measures .FileLinesContext ;
3537import org .sonar .api .measures .FileLinesContextFactory ;
3638import org .sonar .api .resources .Project ;
39+ import org .sonar .api .rule .RuleKey ;
40+ import org .sonar .python .checks .CheckList ;
3741
3842import java .io .File ;
3943
@@ -47,16 +51,21 @@ public class PythonSquidSensorTest {
4751
4852 private PythonSquidSensor sensor ;
4953 private DefaultFileSystem fs = new DefaultFileSystem ();
54+ ResourcePerspectives perspectives ;
5055
5156 @ Before
5257 public void setUp () {
5358 FileLinesContextFactory fileLinesContextFactory = mock (FileLinesContextFactory .class );
5459 FileLinesContext fileLinesContext = mock (FileLinesContext .class );
5560 when (fileLinesContextFactory .createFor (Mockito .any (InputFile .class ))).thenReturn (fileLinesContext );
5661 ActiveRules activeRules = (new ActiveRulesBuilder ())
62+ .create (RuleKey .of (CheckList .REPOSITORY_KEY , "PrintStatementUsage" ))
63+ .setName ("Print Statement Usage" )
64+ .activate ()
5765 .build ();
5866 CheckFactory checkFactory = new CheckFactory (activeRules );
59- sensor = new PythonSquidSensor (fileLinesContextFactory , fs , mock (ResourcePerspectives .class ), checkFactory );
67+ perspectives = mock (ResourcePerspectives .class );
68+ sensor = new PythonSquidSensor (fileLinesContextFactory , fs , perspectives , checkFactory );
6069 }
6170
6271 @ Test
@@ -75,6 +84,14 @@ public void should_analyse() {
7584 inputFile .setAbsolutePath ((new File (relativePath )).getAbsolutePath ());
7685 fs .add (inputFile );
7786
87+ Issuable issuable = mock (Issuable .class );
88+ Issuable .IssueBuilder issueBuilder = mock (Issuable .IssueBuilder .class );
89+ when (perspectives .as (Mockito .eq (Issuable .class ), Mockito .any (InputFile .class ))).thenReturn (issuable );
90+ when (issuable .newIssueBuilder ()).thenReturn (issueBuilder );
91+ when (issueBuilder .ruleKey (Mockito .any (RuleKey .class ))).thenReturn (issueBuilder );
92+ when (issueBuilder .line (Mockito .any (Integer .class ))).thenReturn (issueBuilder );
93+ when (issueBuilder .message (Mockito .any (String .class ))).thenReturn (issueBuilder );
94+
7895 Project project = new Project ("key" );
7996 SensorContext context = mock (SensorContext .class );
8097 sensor .analyse (project , context );
@@ -87,6 +104,8 @@ public void should_analyse() {
87104 verify (context ).saveMeasure (Mockito .any (InputFile .class ), Mockito .eq (CoreMetrics .CLASSES ), Mockito .eq (1.0 ));
88105 verify (context ).saveMeasure (Mockito .any (InputFile .class ), Mockito .eq (CoreMetrics .COMPLEXITY ), Mockito .eq (4.0 ));
89106 verify (context ).saveMeasure (Mockito .any (InputFile .class ), Mockito .eq (CoreMetrics .COMMENT_LINES ), Mockito .eq (9.0 ));
107+ verify (issuable ).addIssue (Mockito .any (Issue .class ));
108+
90109 }
91110
92111}
0 commit comments