Exemple #1
0
        public BundleFactoryTests()
        {
            _bundleFactory = new BundleFactory(
                _urlResolver,
                _fhirRequestContextAccessor);

            IFhirRequestContext fhirRequestContext = Substitute.For <IFhirRequestContext>();

            fhirRequestContext.CorrelationId.Returns(_correlationId);

            _fhirRequestContextAccessor.RequestContext.Returns(fhirRequestContext);
        }
Exemple #2
0
    /// <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);
        }
Exemple #5
0
        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));
        }