private SimpleListingViewModel CreateGemItemListingViewModel(ListingResult listingResult)
        {
            var result = new GemItemListingViewModel
            {
                Level   = GetPropertyStringValue(listingResult.Item, GemLevelPropertyName),
                Quality = GetPropertyStringValue(listingResult.Item, QualityPropertyName)
            };

            var gemExperienceProperty = listingResult.Item.AdditionalProperties?.FirstOrDefault(p => p.Name == GemExperiencePropertyName);

            if (gemExperienceProperty != null)
            {
                result.GemExperiencePercent = Math.Round(gemExperienceProperty.Progress * 100, 2, MidpointRounding.AwayFromZero);
            }
            else
            {
                result.GemExperiencePercent = 0.00m; //otherwise these rows will show 0 instead of 0.00
            }

            return(result);
        }
        public async Task CreateShouldReturnGemItemListingViewModelForGemItem()
        {
            decimal experience = 0.25m;
            string  gemLevel   = "15";
            string  quality    = "+13%";

            string propertiesJson           = $@"[{{""name"":""Level"",""values"":[[""{gemLevel}"",0]],""displayMode"":0,""type"":5}},{{""name"":""Quality"",""values"":[[""{quality}"",1]],""displayMode"":0,""type"":6}}]";
            string additionalPropertiesJson = @"[{""name"":""Experience"",""values"":[[""1/15249"",0]],""displayMode"":2,""progress"":0.25,""type"":20}]";

            ListingResult listingResult = GetListingResult();

            listingResult.Item.Properties           = GetPropertiesList(propertiesJson);
            listingResult.Item.AdditionalProperties = GetPropertiesList(additionalPropertiesJson);

            Item item = new GemItem();

            GemItemListingViewModel result = await this.listingViewModelFactory.CreateAsync(listingResult, item) as GemItemListingViewModel;

            Assert.NotNull(result);
            AssertSimpleListingViewModelProperties(result, listingResult);
            Assert.That(result.GemExperiencePercent, Is.EqualTo(experience * 100));
            Assert.That(result.Level, Is.EqualTo(gemLevel));
            Assert.That(result.Quality, Is.EqualTo(quality));
        }