public BundleFactoryTests() { _bundleFactory = new BundleFactory( _urlResolver, _fhirRequestContextAccessor); IFhirRequestContext fhirRequestContext = Substitute.For <IFhirRequestContext>(); fhirRequestContext.CorrelationId.Returns(_correlationId); _fhirRequestContextAccessor.RequestContext.Returns(fhirRequestContext); }
/// <summary> /// Registers a bundle of HTTP request interceptions from a specified JSON file. /// </summary> /// <param name="options">The <see cref="HttpClientInterceptorOptions"/> to register the bundle with.</param> /// <param name="path">The path of the JSON file containing the serialized bundle.</param> /// <param name="templateValues">The optional template values to specify.</param> /// <returns> /// The value specified by <paramref name="options"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="options"/>, <paramref name="path"/> or <paramref name="templateValues"/> is <see langword="null"/>. /// </exception> /// <exception cref="NotSupportedException"> /// The version of the serialized bundle is not supported. /// </exception> public static HttpClientInterceptorOptions RegisterBundle( this HttpClientInterceptorOptions options, string path, IEnumerable <KeyValuePair <string, string> > templateValues) { if (options == null) { throw new ArgumentNullException(nameof(options)); } if (path == null) { throw new ArgumentNullException(nameof(path)); } if (templateValues == null) { throw new ArgumentNullException(nameof(templateValues)); } var bundle = BundleFactory.Create(path); if (bundle.Version != 1) { throw new NotSupportedException($"HTTP request interception bundles of version {bundle.Version} are not supported."); } var builders = new List <HttpRequestInterceptionBuilder>(bundle.Items?.Count ?? 0); if (bundle.Items != null) { var templateValuesList = templateValues.ToList(); foreach (var item in bundle.Items) { if (item == null || item.Skip) { continue; } builders.Add(BundleItemConverter.FromItem(item, templateValuesList)); } } foreach (var builder in builders) { builder.RegisterWith(options); } return(options); }
public void BundleFactory_Tests(char product, uint quantity, double finalPrice) { var productARules = new List<IProductRule>(); var productABasicRule = new ProductRule(); productABasicRule.Set(product, quantity, finalPrice); productARules.Add(productABasicRule); var bundleFactory = new BundleFactory(); var bundles = bundleFactory.MakeBundles(product, quantity, productARules); Assert.IsNotNull(bundles); Assert.AreEqual(1, bundles.Count()); Assert.AreEqual(50, bundles.FirstOrDefault().FinalPrice); }
public void BundleFactory_ProductA_1_50_GetFinalPrice_Returns_50() { var productARules = new List<IProductRule>(); var productABasicRule = new ProductRule(); productABasicRule.Set('A', 1, 50); productARules.Add(productABasicRule); var bundleFactory = new BundleFactory(); var bundles = bundleFactory.MakeBundles('A', 1, productARules); Assert.IsNotNull(bundles); Assert.AreEqual(1, bundles.Count()); Assert.AreEqual(50, bundles.FirstOrDefault().FinalPrice); }
public BundleFactoryTests() { _resourceDeserializer = new ResourceDeserializer( (FhirResourceFormat.Json, new Func <string, string, DateTimeOffset, ResourceElement>((str, version, lastUpdated) => _fhirJsonParser.Parse(str).ToResourceElement()))); _bundleFactory = new BundleFactory( _urlResolver, _fhirRequestContextAccessor, _resourceDeserializer); IFhirRequestContext fhirRequestContext = Substitute.For <IFhirRequestContext>(); fhirRequestContext.CorrelationId.Returns(_correlationId); _fhirRequestContextAccessor.FhirRequestContext.Returns(fhirRequestContext); }
public void BundleFactory_Tests(char product, string productRulesCsv, uint quantity, double finalPrice) { var productRules = new List<IProductRule>(); var stringRules = productRulesCsv.Split(new []{';'}, StringSplitOptions.RemoveEmptyEntries); foreach (var stringRule in stringRules) { var stringRuleElemnts = stringRule.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); uint bundleQuantity = 0; double bundleFinalPrice = 0; uint.TryParse(stringRuleElemnts[0], out bundleQuantity); double.TryParse(stringRuleElemnts[1], out bundleFinalPrice); var rule = new ProductRule(); rule.Set(product, bundleQuantity, bundleFinalPrice); productRules.Add(rule); } var bundleFactory = new BundleFactory(); var bundles = bundleFactory.MakeBundles(product, quantity, productRules); Assert.AreEqual(finalPrice, bundles.Sum(b => b.FinalPrice)); }