public void EnterLicenseKeyCommand_CurrentEditionIsNotValid_LicenseCheckerActivationIsNotValid_UpdateEditionWithGivenKeyDoNotSaveNewEdition() { _expectedLicenseKey = "given-key"; _licenseCheckerActivation = CreateValidActivation(); _editionFactory = BuildValidEditionHelper(); _editionFactory.Edition.LicenseStatus = LicenseStatus.Error; var invalidEdition = CreateValidEdition(); invalidEdition.LicenseStatus = LicenseStatus.Error; //make received Edition invalid _editionFactory.DetermineEdition(_licenseCheckerActivation).Returns(invalidEdition); _editionFactory.ReloadEdition().Returns(invalidEdition); var viewModel = BuildViewModel(_editionFactory); List <string> propertyChangedEvents = new List <string>(); viewModel.PropertyChanged += (sender, args) => propertyChangedEvents.Add(args.PropertyName); viewModel.EnterLicenseKeyCommand.Execute(null); viewModel.LicenseCheckFinishedEvent.WaitOne(_timeout); _editionFactory.DidNotReceive().ReloadEdition(); _licenseChecker.DidNotReceive().SaveActivation(null); Assert.Contains(nameof(viewModel.Edition), propertyChangedEvents); Assert.AreSame(invalidEdition, viewModel.Edition); Assert.AreEqual(_expectedLicenseKey.Replace("-", ""), viewModel.Edition.Activation.Key, "Given key not set in updated license"); }
public void EnterLicenseKeyCommand_CurrentEditionIsValid_LicenseCheckerActivationIsValid_SaveNewActivationAndUpdateEdition() { _expectedLicenseKey = "not empty"; _licenseCheckerActivation = CreateValidActivation(); _editionFactory = BuildValidEditionHelper(); var validEdition = CreateValidEdition(); _editionFactory.DetermineEdition(_licenseCheckerActivation).Returns(validEdition); _editionFactory.ReloadEdition().Returns(validEdition); var viewModel = BuildViewModel(_editionFactory); List <string> propertyChangedEvents = new List <string>(); viewModel.PropertyChanged += (sender, args) => propertyChangedEvents.Add(args.PropertyName); viewModel.EnterLicenseKeyCommand.Execute(null); viewModel.LicenseCheckFinishedEvent.WaitOne(_timeout); _editionFactory.Received().ReloadEdition(); _licenseChecker.Received().SaveActivation(validEdition.Activation); Assert.Contains(nameof(viewModel.Edition), propertyChangedEvents); Assert.AreSame(validEdition, viewModel.Edition); }
public void UpdateActivation(ILicenseChecker licenseChecker, Activation activation, string key) { var oldLicenseWasValid = Edition.IsLicenseValid; var newEdition = _editionFactory.DetermineEdition(activation); //Save only valid activation. Invalid activations might throw exceptions durin saving. if (newEdition.IsLicenseValid) { licenseChecker.SaveActivation(newEdition.Activation); Edition = _editionFactory.ReloadEdition(); //Set Edition by (re)loading it from registry } else if (!oldLicenseWasValid) { //set key to make it visible in view and as preset for activation with "new" key newEdition.Activation.Key = key; Edition = newEdition; } RaisePropertyChanged(nameof(Edition)); //Notify user InvokeActivationResponse(newEdition); }
public void EnterLicenseKeyCommand_CurrentEditionIsValid_LicenseCheckerActivationIsNotValid_DoNotSaveNewActivationAndDoNotUpdateEdition() { _expectedLicenseKey = "not empty"; _licenseCheckerActivation = CreateValidActivation(); _editionFactory = BuildValidEditionHelper(); var invalidEdition = CreateValidEdition(); invalidEdition.LicenseStatus = LicenseStatus.Error; //make received Edition invalid _editionFactory.DetermineEdition(_licenseCheckerActivation).Returns(invalidEdition); _editionFactory.ReloadEdition().Returns(invalidEdition); var viewModel = BuildViewModel(_editionFactory); List <string> propertyChangedEvents = new List <string>(); viewModel.PropertyChanged += (sender, args) => propertyChangedEvents.Add(args.PropertyName); viewModel.EnterLicenseKeyCommand.Execute(null); viewModel.LicenseCheckFinishedEvent.WaitOne(_timeout); _editionFactory.DidNotReceive().ReloadEdition(); _licenseChecker.DidNotReceive().SaveActivation(Arg.Any <Activation>()); Assert.Contains(nameof(viewModel.Edition), propertyChangedEvents); Assert.AreSame(_editionFactory.Edition, viewModel.Edition); //Keep old edition }