public void UpdateIssueDataForResourceWithNewDateDataTestWithCache()
        {
            var fileSource = new Source { Lines = new[] { "line1", "line2", "line3", "line4" } };

            var newResource = new Resource { Date = DateTime.Now, Key = "resource" };
            var source1 = new SourceCoverage();
            source1.SetLineCoverageData("1=0;2=3;3=3");
            source1.SetBranchCoverageData("1=0;2=3;3=3", "1=0;2=3;3=3");

            this.service.Expect(
                mp => mp.GetResourcesData(Arg<ISonarConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(new List<Resource> { newResource });

            this.service.Expect(
                mp => mp.GetSourceForFileResource(Arg<ISonarConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(fileSource)
                .Repeat.Once();

            this.service.Expect(
                mp => mp.GetIssuesInResource(Arg<ISonarConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(new List<Issue> { new Issue { Severity = Severity.CRITICAL, Line = 1 } })
                .Repeat.Once();

            this.service.Expect(
                mp => mp.GetCoverageInResource(Arg<ISonarConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(source1)
                .Repeat.Once();

            this.analysisPlugin.Expect(
                mp => mp.GetResourceKey(Arg<VsProjectItem>.Is.Anything, Arg<string>.Is.Anything, Arg<bool>.Is.Anything))
                .Return("resource");

            var data = new ExtensionDataModel(this.service, this.vshelper, null, null);
            data.AssociatedProject = new Resource { Key = "sonar.com:common" };

            var localAnalyser = this.mocks.Stub<ISonarLocalAnalyser>();
            data.LocalAnalyserModule = localAnalyser;

            using (this.mocks.Record())
            {
                SetupResult.For(localAnalyser.GetResourceKey(Arg<VsProjectItem>.Is.Anything, Arg<Resource>.Is.Anything, Arg<ISonarConfiguration>.Is.Anything, Arg<bool>.Is.Equal(true))).Return("Key1");
                SetupResult.For(localAnalyser.GetResourceKey(Arg<VsProjectItem>.Is.Anything, Arg<Resource>.Is.Anything, Arg<ISonarConfiguration>.Is.Anything, Arg<bool>.Is.Equal(false))).Return("Key2");
            }

            data.RefreshDataForResource("resource");
            Assert.AreEqual(1, data.GetIssuesInEditor("line1\r\nline2\r\nline3\r\nline4\r\n").Count);
        }
            public void DoServerAnalysisUpdateBufferFileNotFound()
            {
                var source = new Source { Lines = new[] { "line1", "line2", "line3", "line4" } };

                this.vshelper.Expect(
                    mp => mp.CurrentSelectedDocumentLanguage())
                    .Return("c++");
                this.vshelper.Expect(
                    mp => mp.ActiveFileFullPath())
                    .Return("c:\\src\\file.cpp");
                this.vshelper.Expect(
                    mp => mp.ActiveSolutionPath())
                    .Return("c:\\src");
                this.service.Expect(
                    mp => mp.GetSourceForFileResource(Arg<ConnectionConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                    .Return(source);
                var element = new Resource { Date = new DateTime(2000, 1, 1), Key = "resourceKey"};
                this.service.Expect(
                    mp => mp.GetResourcesData(Arg<ConnectionConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                    .Return(new List<Resource> { element })
                    .Repeat.Twice();

                this.plugin.Expect(mp => mp.IsSupported(Arg<ConnectionConfiguration>.Is.Anything, Arg<Resource>.Is.Anything)).Return(true).Repeat.Once();
                this.plugin.Expect(
                    mp =>
                    mp.GetResourceKey(
                        Arg<VsProjectItem>.Is.Anything,
                        Arg<string>.Is.Anything)).Return("key").Repeat.Once();

                var data = new ExtensionDataModel(this.service, this.vshelper, null);
                data.AssociatedProject = new Resource { Key = "KEY"};
                data.RefreshDataForResource("c:\\src\\file.cpp");
                Assert.AreEqual("Extension Not Ready", data.ErrorMessage);
                Assert.AreEqual(0, data.GetIssuesInEditor("file").Count);
            }
 public void ShouldReturnWhenContstrainsAreNotMet()
 {
     var data = new ExtensionDataModel(this.service, this.vshelper, null);
     data.UpdateIssuesInEditorLocationWithModifiedBuffer("data");
     Assert.AreEqual(string.Empty, data.ErrorMessage);
     Assert.AreEqual(0, data.GetIssuesInEditor("file").Count);
     data.UpdateIssuesInEditorLocationWithModifiedBuffer("data");
     Assert.AreEqual(0, data.GetIssuesInEditor("file").Count);
     Assert.IsNull(data.ResourceInEditor);
 }
            public void UpdatesResourceWithoutAnyIssues()
            {
                var source = new Source { Lines = new[] { "line1", "line2", "line3", "line4" } };

                this.vshelper.Expect(
                    mp => mp.CurrentSelectedDocumentLanguage())
                    .Return("c++");
                this.vshelper.Expect(
                    mp => mp.ActiveFileFullPath())
                    .Return("c:\\src\\file.cpp");
                this.vshelper.Expect(
                    mp => mp.ActiveSolutionPath())
                    .Return("c:\\src");
                this.service.Expect(
                    mp => mp.GetSourceForFileResource(Arg<ISonarConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                    .Return(source);
                var element = new Resource { Date = new DateTime(2000, 1, 1), Key = "resourceKey"};
                this.service.Expect(
                    mp => mp.GetResourcesData(Arg<ISonarConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                    .Return(new List<Resource> { element })
                    .Repeat.Twice();

                this.analysisPlugin.Expect(mp => mp.IsSupported(Arg<ISonarConfiguration>.Is.Anything, Arg<Resource>.Is.Anything)).Return(true).Repeat.Once();
                this.analysisPlugin.Expect(
                    mp =>
                    mp.GetResourceKey(
                        Arg<VsProjectItem>.Is.Anything,
                        Arg<string>.Is.Anything, Arg<bool>.Is.Anything)).Return("key").Repeat.Once();

                var data = new ExtensionDataModel(this.service, this.vshelper, null, null);

                var localAnalyser = this.mocks.Stub<ISonarLocalAnalyser>();
                data.LocalAnalyserModule = localAnalyser;

                using (this.mocks.Record())
                {
                    SetupResult.For(localAnalyser.GetResourceKey(Arg<VsProjectItem>.Is.Anything, Arg<Resource>.Is.Anything, Arg<ISonarConfiguration>.Is.Anything, Arg<bool>.Is.Equal(true))).Return("Key1");
                    SetupResult.For(localAnalyser.GetResourceKey(Arg<VsProjectItem>.Is.Anything, Arg<Resource>.Is.Anything, Arg<ISonarConfiguration>.Is.Anything, Arg<bool>.Is.Equal(false))).Return("Key2");
                }

                data.AssociatedProject = new Resource { Key = "KEY"};
                data.RefreshDataForResource("c:\\src\\file.cpp");
                Assert.AreEqual(0, data.GetIssuesInEditor("file").Count);
            }
        public void UpdateIssueDataForResourceWithNewDateDataTestWithCache()
        {
            var fileSource = new Source { Lines = new[] { "line1", "line2", "line3", "line4" } };

            var newResource = new Resource { Date = DateTime.Now, Key = "resource" };
            var source1 = new SourceCoverage();
            source1.SetLineCoverageData("1=0;2=3;3=3");
            source1.SetBranchCoverageData("1=0;2=3;3=3", "1=0;2=3;3=3");

            this.service.Expect(
                mp => mp.GetResourcesData(Arg<ConnectionConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(new List<Resource> { newResource });

            this.service.Expect(
                mp => mp.GetSourceForFileResource(Arg<ConnectionConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(fileSource)
                .Repeat.Once();

            this.service.Expect(
                mp => mp.GetIssuesInResource(Arg<ConnectionConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(new List<Issue> { new Issue { Severity = "CRITICAL", Line = 1 } })
                .Repeat.Once();

            this.service.Expect(
                mp => mp.GetCoverageInResource(Arg<ConnectionConfiguration>.Is.Anything, Arg<string>.Is.Anything))
                .Return(source1)
                .Repeat.Once();

            this.plugin.Expect(
                mp => mp.GetResourceKey(Arg<VsProjectItem>.Is.Anything, Arg<string>.Is.Anything))
                .Return("resource");

            var data = new ExtensionDataModel(this.service, this.vshelper, null);
            data.AssociatedProject = new Resource { Key = "sonar.com:common" };

            data.RefreshDataForResource("resource");
            Assert.AreEqual(1, data.GetIssuesInEditor("ghfggfgf\r\nghfggfgf\r\nghfggfgf\r\nghfggfgf\r\n").Count);
        }
        public void TestSetIssuesInEditor()
        {
            var issueWithId = new Issue { Id = 20, Component = "asdaskjd:sdaskjd:aksjdkas/asdkasj.cs", Key = new Guid() };

            var model = new ExtensionDataModel(this.service, this.vshelper, null);
            model.ResourceInEditor = new Resource { Key = "asdaskjd:sdaskjd:aksjdkas/asdkasj.cs" };
            model.DocumentInView = "aksjdkas/asdkasj.cs";
            model.ReplaceAllIssuesInCache(new List<Issue> { issueWithId });

            Assert.AreEqual(1, model.GetIssuesInEditor("asdaskjd:sdaskjd:aksjdkas/asdkasj.cs").Count);
            Assert.AreEqual(string.Empty, model.ErrorMessage);
        }