private async Task <ActivityDTO> ConfigureFollowUp(bool setFileName = false, string fileUri = null, ActivityDTO existingActivity = null)
        {
            if (string.IsNullOrEmpty(fileUri))
            {
                fileUri = HealthMonitor_FixtureData.GetFilePath();
            }

            var configureUrl = GetTerminalConfigureUrl();
            var dataDTO      = HealthMonitor_FixtureData.Load_Excel_File_v1_InitialConfiguration_Fr8DataDTO(Guid.NewGuid());

            if (existingActivity == null)
            {
                existingActivity = await HttpPostAsync <Fr8DataDTO, ActivityDTO>(configureUrl, dataDTO);
            }

            if (setFileName)
            {
                using (var storage = _crateManager.GetUpdatableStorage(existingActivity))
                {
                    var activityUi    = new Load_Excel_File_v1.ActivityUi();
                    var controlsCrate = _crateManager.GetStorage(existingActivity).FirstCrate <StandardConfigurationControlsCM>();
                    activityUi.SyncWith(controlsCrate.Content);
                    activityUi.FilePicker.Value = fileUri;
                    storage.ReplaceByLabel(Fr8.Infrastructure.Data.Crates.Crate.FromContent(controlsCrate.Label, new StandardConfigurationControlsCM(activityUi.Controls.ToArray())));
                }
            }
            dataDTO.ActivityDTO = existingActivity;
            return(await HttpPostAsync <Fr8DataDTO, ActivityDTO>(configureUrl, dataDTO));
        }
        public async Task Load_Excel_File_v1_Initial_Configuration_Check_Crate_Structure()
        {
            // Arrange
            var configureUrl     = GetTerminalConfigureUrl();
            var requestActionDTO = HealthMonitor_FixtureData.Load_Excel_File_v1_InitialConfiguration_Fr8DataDTO(Guid.NewGuid());

            // Act
            var responseActionDTO = await HttpPostAsync <Fr8DataDTO, ActivityDTO>(configureUrl, requestActionDTO);

            // Assert
            Assert.NotNull(responseActionDTO, "Response from initial configuration request is null");
            Assert.NotNull(responseActionDTO.CrateStorage, "Response from initial configuration request doesn't contain crate storage");
            Assert.NotNull(responseActionDTO.CrateStorage.Crates, "Response from initial configuration request doesn't contain crates in storage");

            var crateStorage = Crate.FromDto(responseActionDTO.CrateStorage);

            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count(), "Activity storage doesn't contain configuration controls");
            Assert.AreEqual(1, crateStorage.CratesOfType <CrateDescriptionCM>().Count(), "Activity storage doesn't contain description of runtime available crates");
        }
        public async Task Load_Table_Data_Deactivate_Returns_ActivityDTO()
        {
            //Arrange
            var configureUrl = GetTerminalDeactivateUrl();

            HealthMonitor_FixtureData fixture = new HealthMonitor_FixtureData();
            var requestActionDTO = HealthMonitor_FixtureData.Load_Excel_File_v1_InitialConfiguration_Fr8DataDTO(Guid.NewGuid());

            using (var storage = _crateManager.GetUpdatableStorage(requestActionDTO.ActivityDTO))
            {
                storage.Add(Fr8.Infrastructure.Data.Crates.Crate.FromContent(ExplicitTerminalActivity.ConfigurationControlsLabel, new StandardConfigurationControlsCM(new Load_Excel_File_v1.ActivityUi().Controls.ToArray())));
            }

            //Act
            var responseActionDTO =
                await HttpPostAsync <Fr8DataDTO, ActivityDTO>(
                    configureUrl,
                    requestActionDTO
                    );

            //Assert
            Assert.IsNotNull(responseActionDTO);
            Assert.IsNotNull(Crate.FromDto(responseActionDTO.CrateStorage));
        }