public void GivenValidFilename_WhenFrom_Then()
        {
            // Arrange

            var file = new FileInfo(@"E:\tmp\vm-pricing_some-region_some-operating-system.json");

            // Act

            var actual = FileIdentifier.From(file);

            // Assert

            var expected = new FileIdentifier("some-region", "some-operating-system");

            actual.Should().BeEquivalentTo(expected);
        }
        public List <VmPricing> Parse()
        {
            var pricingFiles = Directory.GetFiles(_pricingDirectory, "*.json");

            var allVmPricing = new List <VmPricing>();

            foreach (var pricingFile in pricingFiles)
            {
                var fileInfo       = new FileInfo(pricingFile);
                var fileIdentifier = FileIdentifier.From(fileInfo);

                var fileVmPricing = JsonConvert.DeserializeObject <List <VmPricing> >(File.ReadAllText(pricingFile));
                fileVmPricing.ForEach(pricing =>
                {
                    pricing.Region          = fileIdentifier.Region;
                    pricing.OperatingSystem = fileIdentifier.OperatingSystem;
                });

                allVmPricing.AddRange(fileVmPricing);
            }

            return(allVmPricing);
        }