public void RT12010_ItemTypesModels()
        {
            TestStart();

            OpenAppsPage();
            Click(PageFooter.AddAppInAppsButton);
            var pathFile = FileManager.GetFileByVersion(TestConfig.DptMobileAppFolder,
                                                        TestConfig.DptMobileAppFile, TestConfig.DptAppVersions[1]);

            FileManager.Upload(pathFile);
            Assert.IsTrue(IsEditMode(),
                          $"DPT app v.{TestConfig.DptAppVersions[1]} should be imported without {AppTitle.IpadPlayer} " +
                          "and in edit mode");
            var allPermissions = UserDirectoryApi.GetSupportedPermissions();
            var role           = UserDirectoryApi.GetRole((long)UserRole.CxmAdmin);

            UserDirectoryApi.SetRolePermissions(role, allPermissions);
            RefreshPage();
            SendText(AppsPage.Market, "AA");
            SubmitForm();
            Assert.IsTrue(IsViewMode(),
                          $"DPT app v.{TestConfig.DptAppVersions[1]} should be in view mode");

            OpenItemsPage();
            Click(PageFooter.AddItemButton);
            DropDownSelect(ItemsPage.TypeDropDown, ItemTypePorscheCar);
            SendText(ItemsPage.Vin, $"{RandomNumber}55");
            SendText(ItemsPage.Title, $"Auto test {RandomNumber}");
            ClickUntilShown(ItemsPage.FinanceOfferButton, ItemsPage.FinanceOfferOptionDropDown);
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.FinanceOfferOptionDropDown),
                          "Finance Offer > Option drop-down should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.FinanceOfferPrepayment),
                          "Finance Offer > Prepayment should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.FinanceOfferTerm),
                          "Finance Offer > Term should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.FinanceOfferMonthlyRate),
                          "Finance Offer > Monthly Rate should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.FinanceOfferDisclaimer),
                          "Finance Offer > Disclaimer should be shown");
            Assert.IsTrue(IsElementNotFoundQuickly(CommonElement.ValidationError),
                          "Finance Offer > No validation errors should be shown");

            DropDownSelect(ItemsPage.FinanceOfferOptionDropDown, "Porsche Value S");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferPrepaymentRequired),
                          @"Finance Offer > Error 'Prepayment required' should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferMonthlyRateRequired),
                          @"Finance Offer > Error 'Monthly required' Rate should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferOptionRequired),
                          @"Finance Offer > Error for Option drop-down should be not shown");

            SendText(ItemsPage.FinanceOfferPrepayment, "A");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferPrepaymentRequired),
                          @"Finance Offer > Error 'Prepayment required' should be not shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferMonthlyRateRequired),
                          @"Finance Offer > Error 'Monthly required' Rate should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be shown");

            SendText(ItemsPage.FinanceOfferTerm, "A");
            SendText(ItemsPage.FinanceOfferMonthlyRate, "A");
            SendText(ItemsPage.FinanceOfferDisclaimer, "A");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferPrepaymentRequired),
                          @"Finance Offer > Error 'Prepayment required' should be shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferMonthlyRateRequired),
                          @"Finance Offer > Error 'Monthly required' Rate should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferOptionRequired),
                          @"Finance Offer > Error for Option drop-down should be not shown");

            ClearTextInElement(ItemsPage.FinanceOfferTerm);
            ClearTextInElement(ItemsPage.FinanceOfferDisclaimer);
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be shown");

            ClearTextInElement(ItemsPage.FinanceOfferPrepayment);
            ClearTextInElement(ItemsPage.FinanceOfferMonthlyRate);
            DropDownSelect(ItemsPage.FinanceOfferOptionDropDown, string.Empty);
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferPrepaymentRequired),
                          @"Finance Offer > Error 'Prepayment required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferMonthlyRateRequired),
                          @"Finance Offer > Error 'Monthly required' Rate should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferOptionRequired),
                          @"Finance Offer > Error for Option drop-down should be not shown");

            SendText(ItemsPage.FinanceOfferDisclaimer, "A");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferPrepaymentRequired),
                          @"Finance Offer > Error 'Prepayment required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferMonthlyRateRequired),
                          @"Finance Offer > Error 'Monthly required' Rate should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferOptionRequired),
                          @"Finance Offer > Error for Option drop-down should be not shown");

            SubmitForm();
            Assert.IsTrue(IsViewMode(), "Item should be successfully saved");
            var itemId = GetEntityIdFromUrl();

            OpenAppsPage();
            Click(PageFooter.AddAppInAppsButton);
            pathFile = FileManager.GetFileByVersion(TestConfig.DptMobileAppFolder,
                                                    TestConfig.DptMobileAppFile, TestConfig.DptAppVersions[2]);
            FileManager.UploadAsBackgroundTask(pathFile);
            SubmitForm();
            Assert.IsTrue(IsViewMode(),
                          $"DPT app v.{TestConfig.DptAppVersions[2]} should be in view mode");

            RefreshPage();
            OpenEntityPage <Item>(itemId);
            EditForm();
            ClickUntilShown(ItemsPage.FinanceOfferButton, ItemsPage.FinanceOfferOptionDropDown);
            DropDownSelect(ItemsPage.FinanceOfferOptionDropDown, "Porsche Value S");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferPrepaymentRequired),
                          @"Finance Offer > Error 'Prepayment required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferMonthlyRateRequired),
                          @"Finance Offer > Error 'Monthly required' Rate should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be not shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferOptionRequired),
                          @"Finance Offer > Error for Option drop-down should be not shown");

            SendText(ItemsPage.FinanceOfferPrepayment, "A");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferPrepaymentRequired),
                          @"Finance Offer > Error 'Prepayment required' should be not shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferTermRequired),
                          @"Finance Offer > Error 'Term required' should be shown");
            Assert.IsTrue(IsElementFoundQuickly(ItemsPage.ErrorFinanceOfferMonthlyRateRequired),
                          @"Finance Offer > Error 'Monthly required' Rate should be shown");
            Assert.IsTrue(IsElementNotFoundQuickly(ItemsPage.ErrorFinanceOfferDisclaimerRequired),
                          @"Finance Offer > Error 'Disclaimer required' should be not shown");

            Click(PageFooter.CancelButton);
        }
        public void RT12020_AppMasterData()
        {
            AddAppIpadPlayer();
            var app = AddAppDpt(AppStatus.Any, TestConfig.DptAppVersions[1]);

            TestStart();

            OpenAppsPage();
            Click(PageFooter.AddAppInAppsButton);
            var pathFile = FileManager.GetFileByVersion(TestConfig.TestDependenciesDptAppFolder,
                                                        TestConfig.TestDependenciesDptAppFile,
                                                        TestConfig.TestDependenciesMdVersions[0]);

            FileManager.UploadAsBackgroundTask(pathFile);
            Assert.IsTrue(IsElementFound(AppsPage.AppTitle),
                          $@"App '{AppTitle.TestDependenciesMd}' has not been imported");
            var allPermissions = UserDirectoryApi.GetSupportedPermissions();
            var role           = UserDirectoryApi.GetRole((long)UserRole.CxmAdmin);

            UserDirectoryApi.SetRolePermissions(role, allPermissions);
            RefreshPage();

            const string market = "CC";

            SendText(AppsPage.Market, market);
            SubmitForm();
            Assert.IsTrue(IsViewMode(),
                          $@"'{AppTitle.TestDependenciesMd}' app should be in view mode on submit");

            Click(PageFooter.AddVersionButton);
            pathFile = FileManager.GetFileByVersion(TestConfig.TestDependenciesDptAppFolder,
                                                    TestConfig.TestDependenciesDptAppFile,
                                                    TestConfig.TestDependenciesMdVersions[1]);
            FileManager.UploadAsBackgroundTask(pathFile);
            Assert.IsTrue(IsElementEquals(AppsPage.Market, market),
                          $@"Market field should kept value '{market}' on 2nd app version upload");
            Assert.IsTrue(IsElementNotFoundQuickly(CommonElement.ValidationError),
                          "Page should have no validation errors on 2nd app version upload");

            SendText(AppsPage.Area, "a");
            Assert.IsTrue(IsElementNotFoundQuickly(AppsPage.ErrorArea),
                          "Area should have no validation errors");
            Assert.IsTrue(IsElementFoundQuickly(AppsPage.ErrorRegion),
                          "Region should have validation error");
            Assert.IsTrue(IsElementNotFoundQuickly(AppsPage.ErrorMarket),
                          "Market should have no validation errors");

            ClearTextInElement(AppsPage.Market);
            Assert.IsTrue(IsElementNotFoundQuickly(AppsPage.ErrorArea),
                          "Area should have no validation errors");
            Assert.IsTrue(IsElementFoundQuickly(AppsPage.ErrorRegion),
                          "Region should have validation error");
            Assert.IsTrue(IsElementFoundQuickly(AppsPage.ErrorMarket),
                          "Market should have validation error");

            ClearTextInElement(AppsPage.Area);
            Assert.IsTrue(IsElementNotFoundQuickly(AppsPage.ErrorArea),
                          "Area should have no validation errors");
            Assert.IsTrue(IsElementNotFoundQuickly(AppsPage.ErrorRegion),
                          "Region should have no validation errors");
            Assert.IsTrue(IsElementFoundQuickly(AppsPage.ErrorMarket),
                          "Market should have validation error");

            SendText(AppsPage.Market, market);
            SendText(AppsPage.Area, "a");
            SendText(AppsPage.Region, "a");
            SubmitForm();
            Assert.IsTrue(IsViewMode(),
                          $"{AppTitle.TestDependenciesMd} app should be in view mode on submit");
            var appId = GetEntityIdFromUrl();

            OpenEntityPage(app);
            EditForm();
            SendText(AppsPage.Area, "a");
            Assert.IsTrue(IsElementNotFoundQuickly(CommonElement.ValidationError),
                          $"App {AppTitle.Dpt} page should have no validation errors");

            Click(PageFooter.CancelButton);
            OpenEntityPage <AppResponse>(appId);
            Click(AppsPage.Versions);
            Click(string.Format(AppsPage.TableRowByText, TestConfig.TestDependenciesMdVersions[1]));
            Click(PageFooter.DeleteButton);
            Click(AppsPage.DeleteButton);
            Click(PageHeader.NavigateBackButton);
            EditForm();
            ClearTextInElement(AppsPage.Region);
            Assert.IsTrue(IsElementNotFoundQuickly(CommonElement.ValidationError),
                          $"App {AppTitle.Dpt} page should have no validation errors after the latest version delete");

            SubmitForm();
            Assert.IsTrue(IsViewMode(),
                          $"{AppTitle.TestDependenciesMd} app should be in view mode after the latest version delete and submit");
        }