YurtleTrack.Model.SettingsOriginator.RestoreFromMemento C# (CSharp) Method

RestoreFromMemento() public method

public RestoreFromMemento ( ISettingsMemento memento ) : void
memento ISettingsMemento
return void
        public void RestoreFromMemento(ISettingsMemento memento)
        {
            _settings.Clear();
            foreach (ISetting setting in memento.Settings)
            {
                ISetting newSetting = new Setting() { Name = setting.Name };
                if (setting.Encrypt & !String.IsNullOrEmpty(setting.Value))
                    newSetting.Value = DecryptFromBase64(setting.Value);
                else
                    newSetting.Value = setting.Value;
                _settings.Add(newSetting);
            }//end foreach
        }

Usage Example

        public void Originator_Can_Restore_From_Memento()
        {
            MockRepository repo = new MockRepository();
            ISetting mockSetting1 = repo.StrictMock<ISetting>();
            ISetting mockSettingEncrypted = repo.StrictMock<ISetting>();

            mockSetting1.Expect(setting => setting.Name).Return("Setting1").Repeat.Any();
            mockSetting1.Expect(setting => setting.Value).Return("Setting1Value").Repeat.Any();
            mockSetting1.Expect(setting => setting.Encrypt).Return(false).Repeat.Any();

            mockSettingEncrypted.Expect(setting => setting.Name).Return("SettingEncrypted").Repeat.Any();
            mockSettingEncrypted.Expect(setting => setting.Value).Return("SettingEncryptedValue").Repeat.Any();
            mockSettingEncrypted.Expect(setting => setting.Encrypt).Return(true).Repeat.Any();

            repo.ReplayAll();

            SettingsOriginator org = new SettingsOriginator();
            org.Set(mockSetting1);
            org.Set(mockSettingEncrypted);

            ISettingsMemento memento = org.GetMemento();

            SettingsOriginator orgRestored = new SettingsOriginator();
            orgRestored.RestoreFromMemento(memento);

            ISetting setting1 = orgRestored.Get("Setting1");
            Assert.Equal("Setting1", setting1.Name);
            Assert.Equal("Setting1Value", setting1.Value);

            ISetting settingEncrypted = orgRestored.Get("SettingEncrypted");
            Assert.Equal("SettingEncrypted", settingEncrypted.Name);
            Assert.Equal("SettingEncryptedValue", settingEncrypted.Value);
        }