Skip to content

Commit

Permalink
Converted MetricDefaultsDeserializer
Browse files Browse the repository at this point in the history
  • Loading branch information
adamconnelly committed Feb 22, 2020
1 parent 41d59f7 commit 05b7fd4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,34 +1,17 @@
using Microsoft.Extensions.Logging;
using Promitor.Core.Scraping.Configuration.Serialization.v1.Model;
using YamlDotNet.RepresentationModel;

namespace Promitor.Core.Scraping.Configuration.Serialization.v1.Core
{
public class MetricDefaultsDeserializer : Deserializer<MetricDefaultsV1>
{
private const string AggregationTag = "aggregation";
private const string ScrapingTag = "scraping";

private readonly IDeserializer<AggregationV1> _aggregationDeserializer;
private readonly IDeserializer<ScrapingV1> _scrapingDeserializer;

public MetricDefaultsDeserializer(
IDeserializer<AggregationV1> aggregationDeserializer,
IDeserializer<ScrapingV1> scrapingDeserializer,
ILogger<MetricDefaultsDeserializer> logger) : base(logger)
{
_aggregationDeserializer = aggregationDeserializer;
_scrapingDeserializer = scrapingDeserializer;
}

public override MetricDefaultsV1 Deserialize(YamlMappingNode node, IErrorReporter errorReporter)
{
var defaults = new MetricDefaultsV1();

defaults.Aggregation = node.DeserializeChild(AggregationTag, _aggregationDeserializer, errorReporter);
defaults.Scraping = node.DeserializeChild(ScrapingTag, _scrapingDeserializer, errorReporter);

return defaults;
MapOptional(defaults => defaults.Aggregation, aggregationDeserializer);
MapRequired(defaults => defaults.Scraping, scrapingDeserializer);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public void Deserialize_AggregationPresent_UsesAggregationDeserializer()

var aggregationNode = (YamlMappingNode)node.Children["aggregation"];
var aggregation = new AggregationV1();
_aggregationDeserializer.Setup(d => d.Deserialize(aggregationNode, _errorReporter.Object)).Returns(aggregation);
_aggregationDeserializer.Setup(d => d.DeserializeObject(aggregationNode, _errorReporter.Object)).Returns(aggregation);

// Act
var defaults = _deserializer.Deserialize(node, _errorReporter.Object);
Expand Down Expand Up @@ -76,7 +76,7 @@ public void Deserialize_ScrapingPresent_UsesScrapingDeserializer()

var scrapingNode = (YamlMappingNode)node.Children["scraping"];
var scraping = new ScrapingV1();
_scrapingDeserializer.Setup(d => d.Deserialize(scrapingNode, _errorReporter.Object)).Returns(scraping);
_scrapingDeserializer.Setup(d => d.DeserializeObject(scrapingNode, _errorReporter.Object)).Returns(scraping);

// Act
var defaults = _deserializer.Deserialize(node, _errorReporter.Object);
Expand All @@ -102,5 +102,22 @@ public void Deserialize_ScrapingNotPresent_DoesNotUseDeserializer()
_scrapingDeserializer.Verify(
d => d.Deserialize(It.IsAny<YamlMappingNode>(), It.IsAny<IErrorReporter>()), Times.Never);
}

[Fact]
public void Deserialize_ScrapingNotPresent_ReportsError()
{
// Arrange
const string yamlText =
@"metricDefaults:
aggregation:
interval: '00:05:00'";
var node = (YamlMappingNode)YamlUtils.CreateYamlNode(yamlText).Children["metricDefaults"];

// Act
_deserializer.Deserialize(node, _errorReporter.Object);

// Assert
_errorReporter.Verify(r => r.ReportError(node, It.Is<string>(s => s.Contains("scraping"))));
}
}
}

0 comments on commit 05b7fd4

Please sign in to comment.