예제 #1
0
        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");
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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
        }