using Microsoft.VisualStudio.TestTools.UnitTesting;
using PSReleaseNotesGenerator;
using System;
using System.Collections.Generic;
namespace ReleaseNotesGeneratorTests
{
[TestClass]
public class OverridesTests
{
[TestMethod]
public void ParsingNoServiceConfigOverrides()
{
var overridesXML = string.Empty;
var serviceLookup = Overrides.ParseServiceNounPrefixes(overridesXML, null);
Assert.IsNotNull(serviceLookup);
Assert.AreEqual(0, serviceLookup.Count);
}
[TestMethod]
public void ParsingMultipleServiceWithValidConfigs()
{
var overridesXML = @"
0
es
0
dynamodb
";
var configs = new List
{
@"
0
false
es
Elasticsearch
ES
Amazon Elasticsearch
",
@"
0
false
dynamodb
DynamoDBv2
DDB
Amazon DynamoDB
"
};
var configIndex = 0;
var serviceLookup = Overrides.ParseServiceNounPrefixes(overridesXML, (filetitle) =>
{
return configs[configIndex++];
});
Assert.IsNotNull(serviceLookup);
Assert.AreEqual(2, serviceLookup.Count);
Assert.IsTrue(serviceLookup.Contains("ES"));
Assert.IsTrue(serviceLookup.Contains("DDB"));
}
[TestMethod]
public void ParsingMultipleServicesWithInvalidConfigsThrowsException()
{
var overridesXML = @"
0
es
0
dynamodb
";
var configs = new List
{
@"NOT VALID XML",
@"NOT VALID XML"
};
Exception expectedException = null;
try
{
var configIndex = 0;
var serviceLookup = Overrides.ParseServiceNounPrefixes(overridesXML, (filetitle) =>
{
return configs[configIndex++];
});
}
catch (Exception e)
{
expectedException = e;
}
Assert.IsNotNull(expectedException);
Assert.IsInstanceOfType(expectedException, typeof(AggregateException));
var expectedAggregateException = (AggregateException)expectedException;
Assert.AreEqual("Error(s) occurred while processing service configurations. (Error processing 'es': Data at the root level is invalid. Line 1, position 1.) (Error processing 'dynamodb': Data at the root level is invalid. Line 1, position 1.)", expectedAggregateException.Message);
Assert.IsNotNull(expectedAggregateException.InnerExceptions);
Assert.AreEqual(2, expectedAggregateException.InnerExceptions.Count);
}
}
}