public void GetSolutionLevelFilePaths_ReturnPathToSettingsFile()
        {
            var settings    = new RulesSettings();
            var testSubject = new CFamilyBindingConfig(settings, "c:\\test");

            testSubject.SolutionLevelFilePaths.Count().Should().Be(1);
            testSubject.SolutionLevelFilePaths.First().Should().Be(testSubject.FilePath);
        }
        public void Ctor_ValidArgs()
        {
            var settings    = new RulesSettings();
            var testSubject = new CFamilyBindingConfig(settings, "c:\\test");

            testSubject.RuleSettings.Equals(settings);
            testSubject.FilePath.Equals("c:\\test");
        }
        public void Save_SettingsAreSerializedAndSaved()
        {
            // Arrange
            var settings = new RulesSettings
            {
                Rules = new Dictionary <string, RuleConfig>
                {
                    { "key", new RuleConfig
                      {
                          Level      = RuleLevel.On,
                          Severity   = IssueSeverity.Minor,
                          Parameters = new Dictionary <string, string>
                          {
                              { "p1", "p2" }
                          }
                      } }
                }
            };

            string actualPath = null;
            string actualText = null;

            var fileSystemMock = new Mock <IFileSystem>();

            fileSystemMock.Setup(x => x.File.WriteAllText(It.IsAny <string>(), It.IsAny <string>()))
            .Callback <string, string>((p, t) => { actualPath = p; actualText = t; });

            var testSubject = new CFamilyBindingConfig(settings, "c:\\full\\path\\file.txt", fileSystemMock.Object);

            // Act
            testSubject.Save();

            // Assert
            actualPath.Should().Be("c:\\full\\path\\file.txt");
            actualText.Should().Be(@"{
  ""sonarlint.rules"": {
    ""key"": {
      ""level"": ""On"",
      ""parameters"": {
        ""p1"": ""p2""
      },
      ""severity"": ""Minor""
    }
  }
}");
        }