public async Task UpdateOutOfRangeImagesOnly()
        {
            using TempFolderContext tempFolderContext = TestHelper.UseTempFolder();
            Manifest manifest = CreateTestData(tempFolderContext.Path);

            const long ActualRuntimeDepsSize = 105;
            const long ActualRuntimeSize     = 111;
            const long ActualSdkSize         = 95;

            Mock <IDockerService> dockerServiceMock = new Mock <IDockerService>();

            dockerServiceMock
            .Setup(o => o.GetImageSize(GetTag(RuntimeDepsRepo, RuntimeDepsTag), It.IsAny <bool>()))
            .Returns(ActualRuntimeDepsSize);
            dockerServiceMock
            .Setup(o => o.GetImageSize(GetTag(RuntimeRepo, RuntimeTag), It.IsAny <bool>()))
            .Returns(ActualRuntimeSize);
            dockerServiceMock
            .Setup(o => o.GetImageSize(GetTag(SdkRepo, SdkTag), It.IsAny <bool>()))
            .Returns(ActualSdkSize);
            dockerServiceMock
            .Setup(o => o.LocalImageExists(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(true);

            UpdateImageSizeBaselineCommand command = new UpdateImageSizeBaselineCommand(
                dockerServiceMock.Object, Mock.Of <ILoggerService>());

            command.Options.BaselinePath    = Path.Combine(tempFolderContext.Path, "baseline.json");
            command.Options.Manifest        = Path.Combine(tempFolderContext.Path, "manifest.json");
            command.Options.AllBaselineData = false;
            command.Options.AllowedVariance = 10;

            // Write manifest file
            File.WriteAllText(Path.Combine(tempFolderContext.Path, command.Options.Manifest), JsonConvert.SerializeObject(manifest));

            // Write original baseline file
            const long DefaultOriginalBaselineSize = 100;
            JObject    originalBaseline            = CreateBaselineJson(
                DefaultOriginalBaselineSize, DefaultOriginalBaselineSize, DefaultOriginalBaselineSize);

            File.WriteAllText(command.Options.BaselinePath, originalBaseline.ToString());

            command.LoadManifest();
            await command.ExecuteAsync();

            // Only the runtime size should be updated since it was the only one out of range
            JObject expectedBaseline = CreateBaselineJson(
                DefaultOriginalBaselineSize, ActualRuntimeSize, DefaultOriginalBaselineSize);

            string actualBaselineText = File.ReadAllText(command.Options.BaselinePath);

            Assert.Equal(expectedBaseline.ToString(), actualBaselineText);
        }
        public async Task UpdateAllImages()
        {
            using TempFolderContext tempFolderContext = TestHelper.UseTempFolder();
            Manifest manifest = CreateTestData(tempFolderContext.Path);

            const int RuntimeDepsSize = 1;
            const int RuntimeSize     = 2;
            const int SdkSize         = 3;

            Mock <IDockerService> dockerServiceMock = new Mock <IDockerService>();

            dockerServiceMock
            .Setup(o => o.GetImageSize(GetTag(RuntimeDepsRepo, RuntimeDepsTag), It.IsAny <bool>()))
            .Returns(RuntimeDepsSize);
            dockerServiceMock
            .Setup(o => o.GetImageSize(GetTag(RuntimeRepo, RuntimeTag), It.IsAny <bool>()))
            .Returns(RuntimeSize);
            dockerServiceMock
            .Setup(o => o.GetImageSize(GetTag(SdkRepo, SdkTag), It.IsAny <bool>()))
            .Returns(SdkSize);
            dockerServiceMock
            .Setup(o => o.LocalImageExists(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(true);

            UpdateImageSizeBaselineCommand command = new UpdateImageSizeBaselineCommand(
                dockerServiceMock.Object, Mock.Of <ILoggerService>());

            command.Options.BaselinePath    = Path.Combine(tempFolderContext.Path, "baseline.json");
            command.Options.Manifest        = Path.Combine(tempFolderContext.Path, "manifest.json");
            command.Options.AllBaselineData = true;

            // Write manifest file
            File.WriteAllText(Path.Combine(tempFolderContext.Path, command.Options.Manifest), JsonConvert.SerializeObject(manifest));

            command.LoadManifest();
            await command.ExecuteAsync();

            JObject expectedBaseline   = CreateBaselineJson(RuntimeDepsSize, RuntimeSize, SdkSize);
            string  actualBaselineText = File.ReadAllText(command.Options.BaselinePath);

            Assert.Equal(expectedBaseline.ToString(), actualBaselineText);
        }