public void BuildForUntranslatedControllerRoutesReturnsCorrectRouteSelector()
        {
            IRouteSelector routeSelector = new TranslatedRoutesRouteSelector()
            {
                Cultures  = new[] { UntranslatedRoutesRouteSelectorBuilderTest.Culture, UntranslatedRoutesRouteSelectorBuilderTest.Culture2 },
                Localizer = GetLocalizer(),
            };

            ApplicationModel applicationModel   = TestApplicationModel.Instance;
            ControllerModel  originalController = applicationModel.Controller3();

            ControllerModel translatedController = originalController
                                                   .CreateLocalizedControllerModel(GetLocalizer(),
                                                                                   UntranslatedRoutesRouteSelectorBuilderTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            translatedController = originalController
                                   .CreateLocalizedControllerModel(GetLocalizer(),
                                                                   UntranslatedRoutesRouteSelectorBuilderTest.Culture2);

            applicationModel.Controllers.Add(translatedController);

            ICollection <RouteSelection> routeSelections = routeSelector.Select(applicationModel);

            Assert.IsTrue(routeSelections.Count == 0);
        }
        public void BuildWithActionsSelectionBuildsCorrectProcessor()
        {
            DisableOriginalRouteProcessor routeProcessor = CreateRouteProcessor();

            routeProcessor.Cultures = new[]
            {
                DisableOriginalRouteProcessorBuilderTest.Culture, DisableOriginalRouteProcessorBuilderTest.Culture2,
            };

            ApplicationModel applicationModel   = TestApplicationModel.Instance;
            ControllerModel  originalController = applicationModel.Controller2();

            ControllerModel translatedController =
                originalController.CreateLocalizedControllerModel(GetLocalizedRouteMarker(),
                                                                  DisableOriginalRouteProcessorBuilderTest.Culture);

            foreach (ActionModel translatedAction in translatedController.Actions.Take(1))
            {
                foreach (SelectorModel selectorModel in translatedAction.GetOriginalModel(GetLocalizedRouteMarker()).Selectors.Take(1))
                {
                    translatedAction.Selectors.Add(selectorModel);
                }
            }

            applicationModel.Controllers.Add(translatedController);

            translatedController = originalController.CreateLocalizedControllerModel(GetLocalizedRouteMarker(),
                                                                                     DisableOriginalRouteProcessorBuilderTest.Culture2);

            foreach (ActionModel translatedAction in translatedController.Actions.Take(1))
            {
                foreach (SelectorModel selectorModel in translatedAction.GetOriginalModel(GetLocalizedRouteMarker()).Selectors)
                {
                    translatedAction.Selectors.Add(selectorModel);
                }
            }

            applicationModel.Controllers.Add(translatedController);

            List <RouteSelection> routeSelections = new List <RouteSelection>()
            {
                new RouteSelection()
                {
                    ControllerModel = originalController,
                    ActionModels    = originalController.Actions.Take(1).ToList(),
                },
            };

            routeProcessor.Process(routeSelections);

            Assert.IsFalse(originalController.Selectors.First().ActionConstraints.OfType <NeverAcceptActionContraint>().Any());
            Assert.IsTrue(originalController.Actions.First()
                          .Selectors.First()
                          .ActionConstraints.OfType <NeverAcceptActionContraint>()
                          .Any());
            Assert.IsFalse(originalController.Actions.Last()
                           .Selectors.First()
                           .ActionConstraints.OfType <NeverAcceptActionContraint>()
                           .Any());
        }
        public void BuildForTranslatedControllerAndTranslatedActionRoutesReturnsCorrectRouteSelector()
        {
            IRouteSelector routeSelector = new TranslatedRoutesRouteSelector()
            {
                Cultures  = new[] { UntranslatedRoutesRouteSelectorBuilderTest.Culture, UntranslatedRoutesRouteSelectorBuilderTest.Culture2 },
                Localizer = GetLocalizer(),
            };

            ApplicationModel applicationModel   = TestApplicationModel.Instance;
            ControllerModel  originalController = applicationModel.Controller1();

            ControllerModel translatedController = originalController
                                                   .CreateLocalizedControllerModel(GetLocalizer(),
                                                                                   UntranslatedRoutesRouteSelectorBuilderTest.Culture);

            foreach (ActionModel translatedAction in translatedController.Actions.Take(2))
            {
                foreach (SelectorModel selectorModel in translatedAction.GetOriginalModel(GetLocalizer()).Selectors)
                {
                    translatedAction.Selectors.Add(selectorModel);
                }
            }

            foreach (SelectorModel selectorModel in translatedController.GetOriginalModel(GetLocalizer()).Selectors)
            {
                translatedController.Selectors.Add(selectorModel);
            }

            applicationModel.Controllers.Add(translatedController);

            translatedController = originalController
                                   .CreateLocalizedControllerModel(GetLocalizer(),
                                                                   UntranslatedRoutesRouteSelectorBuilderTest.Culture2);

            foreach (ActionModel translatedAction in translatedController.Actions.Skip(1).Take(2))
            {
                foreach (SelectorModel selectorModel in translatedAction.GetOriginalModel(GetLocalizer()).Selectors)
                {
                    translatedAction.Selectors.Add(selectorModel);
                }
            }

            foreach (SelectorModel selectorModel in translatedController.GetOriginalModel(GetLocalizer()).Selectors)
            {
                translatedController.Selectors.Add(selectorModel);
            }

            applicationModel.Controllers.Add(translatedController);

            ICollection <RouteSelection> routeSelections = routeSelector.Select(applicationModel);

            RouteSelection routeSelection = routeSelections.Single(selection => selection.ControllerModel.ControllerName == "Controller1");

            Assert.IsTrue(routeSelection.ActionModels.Count == 1);
        }
Example #4
0
        protected virtual ControllerModel EnsureAndGetLocalizedControllerModel(ControllerModel originalControllerModel,
                                                                               string culture)
        {
            ApplicationModel applicationModel         = originalControllerModel.Application;
            ControllerModel  localizedControllerModel =
                originalControllerModel.TryGetLocalizedModelFor(RouteTranslationConfiguration.Localizer, culture);

            // Check if a localizedControllerModel exist (e.g. would be the case if TranslateController / TranslateAction was already called)
            if (localizedControllerModel == null)
            {
                localizedControllerModel =
                    originalControllerModel.CreateLocalizedControllerModel(RouteTranslationConfiguration.Localizer, culture);

                applicationModel.Controllers.Add(localizedControllerModel);

                RouteTranslationConfiguration.OnTranslatedControllerModelCreated(this,
                                                                                 new OnTranslatedControllerModelCreatedEventArgs()
                {
                    OriginalControllerModel   = originalControllerModel,
                    TranslatedControllerModel = localizedControllerModel,
                });
            }

            return(localizedControllerModel);
        }
Example #5
0
        public void GetOriginalModelForLocalizedControllerReturnsOriginalModel()
        {
            ControllerModel controller = TestApplicationModel.Instance.Controller1();

            ControllerModel originalController = controller
                                                 .CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture)
                                                 .GetOriginalModel(GetLocalizedRouteMarker());

            Assert.AreSame(controller, originalController);
        }
Example #6
0
        public void IsPartiallyTranslatedForOriginalControllerThrowsException()
        {
            ApplicationModel applicationModel     = TestApplicationModel.Instance;
            ControllerModel  controller           = applicationModel.Controller1();
            ControllerModel  translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            bool isPartiallyLocalized = controller.IsPartiallyTranslated(GetLocalizedRouteMarker());
        }
Example #7
0
        public void IsCompletelyTranslatedForNonAttributeRoutedControllerThrowsException()
        {
            ApplicationModel applicationModel     = TestApplicationModel.Instance;
            ControllerModel  controller           = applicationModel.Controller2();
            ControllerModel  translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            bool isCompletelyLocalized = translatedController.IsCompletelyTranslated(GetLocalizedRouteMarker());
        }
Example #8
0
        public void TryGetLocalizedModelForLocalizedControllerThrowsException()
        {
            ApplicationModel applicationModel     = TestApplicationModel.Instance;
            ControllerModel  controller           = applicationModel.Controller1();
            ControllerModel  translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            ControllerModel translatedController2 =
                translatedController.TryGetLocalizedModelFor(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);
        }
Example #9
0
        public void IsPartiallyTranslatedForNotLocalizedControllerReturnsFalse()
        {
            ApplicationModel applicationModel     = TestApplicationModel.Instance;
            ControllerModel  controller           = applicationModel.Controller1();
            ControllerModel  translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            bool isPartiallyLocalized = translatedController.IsPartiallyTranslated(GetLocalizedRouteMarker());

            Assert.IsFalse(isPartiallyLocalized);
        }
Example #10
0
        public void GetLocalizedModelForOriginalControllerReturnsLocalizedController()
        {
            ApplicationModel applicationModel     = TestApplicationModel.Instance;
            ControllerModel  controller           = applicationModel.Controller1();
            ControllerModel  translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            ControllerModel translatedController2 =
                controller.GetLocalizedModelFor(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            Assert.AreSame(translatedController, translatedController2);
        }
Example #11
0
        public void IsPartiallyTranslatedForNonAttributeRoutedActionThrowsException()
        {
            ApplicationModel applicationModel = TestApplicationModel.Instance;
            ControllerModel  controller       = applicationModel.Controller3();
            ActionModel      action           = controller.Actions.First();

            ControllerModel translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);
            ActionModel translatedAction = translatedController.Actions.First();

            applicationModel.Controllers.Add(translatedController);

            bool isPartiallyLocalized = translatedAction.IsPartiallyTranslated(GetLocalizedRouteMarker());
        }
Example #12
0
        public void IsCompletelyTranslatedForOriginalActionThrowsException()
        {
            ApplicationModel applicationModel = TestApplicationModel.Instance;
            ControllerModel  controller       = applicationModel.Controller1();
            ActionModel      action           = controller.Actions.First();

            ControllerModel translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);
            ActionModel translatedAction = translatedController.Actions.First();

            applicationModel.Controllers.Add(translatedController);

            bool isCompletelyLocalized = action.IsCompletelyTranslated(GetLocalizedRouteMarker());
        }
Example #13
0
        public void TryGetLocalizedModelForOriginalActionReturnsLocalizedAction()
        {
            ApplicationModel applicationModel = TestApplicationModel.Instance;
            ControllerModel  controller       = applicationModel.Controller1();
            ActionModel      action           = controller.Actions.First();

            ControllerModel translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);
            ActionModel translatedAction = translatedController.Actions.First();

            applicationModel.Controllers.Add(translatedController);

            ActionModel translatedAction2 =
                action.TryGetLocalizedModelFor(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            Assert.AreSame(translatedAction, translatedAction2);
        }
Example #14
0
        public void IsPartiallyTranslatedForPartiallyLocalizedControllerReturnsTrue()
        {
            ApplicationModel applicationModel     = TestApplicationModel.Instance;
            ControllerModel  controller           = applicationModel.Controller1();
            ControllerModel  translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            foreach (SelectorModel selectorModel in controller.Selectors.Take(1))
            {
                translatedController.Selectors.Add(new SelectorModel(selectorModel));
            }

            bool isPartiallyLocalized = translatedController.IsPartiallyTranslated(GetLocalizedRouteMarker());

            Assert.IsTrue(isPartiallyLocalized);
        }
Example #15
0
        public void IsCompletelyTranslatedForCompletelyLocalizedActionReturnsTrue()
        {
            ApplicationModel applicationModel = TestApplicationModel.Instance;
            ControllerModel  controller       = applicationModel.Controller1();
            ActionModel      action           = controller.Actions.First();

            ControllerModel translatedController =
                controller.CreateLocalizedControllerModel(GetLocalizedRouteMarker(), ModelExtensionTest.Culture);
            ActionModel translatedAction = translatedController.Actions.First();

            applicationModel.Controllers.Add(translatedController);

            foreach (SelectorModel selectorModel in action.Selectors)
            {
                translatedAction.Selectors.Add(new SelectorModel(selectorModel));
            }

            bool isCompletelyLocalized = translatedAction.IsCompletelyTranslated(GetLocalizedRouteMarker());

            Assert.IsTrue(isCompletelyLocalized);
        }