public UsageModelOptionsControl(Lifetime lifetime,
                                        OptionsSettingsSmartContext ctx,
                                        KaVEISettingsStore settingsStore,
                                        IActionExecutor actionExecutor,
                                        DataContexts dataContexts,
                                        IMessageBoxCreator messageBoxCreator)
        {
            _messageBoxCreator = messageBoxCreator;
            _lifetime          = lifetime;
            _settingsStore     = settingsStore;
            _actionExecutor    = actionExecutor;
            _dataContexts      = dataContexts;
            InitializeComponent();

            _modelStoreSettings = settingsStore.GetSettings <ModelStoreSettings>();

            DataContext = new UsageModelOptionsViewModel
            {
                ModelStoreSettings = _modelStoreSettings
            };

            if (ctx != null)
            {
                // Binding to ModelStorePath
                ctx.SetBinding(
                    lifetime,
                    (ModelStoreSettings s) => s.ModelStorePath,
                    ModelStorePathTextBox,
                    TextBox.TextProperty);
            }
        }
        public void ShouldUpdateBasePathOnceSettingChanges()
        {
            var settings          = new ModelStoreSettings();
            var settingsStoreMock = new Mock <ISettingsStore>();

            settingsStoreMock.Setup(s => s.GetSettings <ModelStoreSettings>()).Returns(settings);

            var sut = new InjectablePBNRecommenderStore(
                Mock.Of <IIoUtils>(),
                settingsStoreMock.Object,
                new TypePathUtil());

            Assert.AreEqual(settings.ModelStorePath, sut.BasePath);

            settings.ModelStorePath = @"C:\new\path";
            settingsStoreMock.Raise(
                s => s.SettingsChanged += null,
                new SettingsChangedEventArgs(typeof(ModelStoreSettings)));

            Assert.AreEqual(settings.ModelStorePath, sut.BasePath);
        }