public void Invoke_CallsUninstallOnAllInstaller()
        {
            var installerFactory = Substitute.For <IInstallerFactory>();

            var installer1 = Substitute.For <IInstaller>();

            installerFactory.Create().Returns(installer1);

            var sut = new UninstallCommand(installerFactory);

            sut.Invoke().GetEnumerator().MoveNext();

            installer1.Received().Uninstall(Arg.Is <IInstallerContext>(context => context is InstallerContext));
        }
        public void Invoke_CallsUninstallOnAllInstaller()
        {
            var installerFactory = Substitute.For<IInstallerFactory>();

            var installer1 = Substitute.For<IInstaller>();

            installerFactory.Create().Returns(installer1);

            var sut = new UninstallCommand(installerFactory);

            sut.Invoke().GetEnumerator().MoveNext();

            installer1.Received().Uninstall(Arg.Is<IInstallerContext>(context => context is InstallerContext));
        }
        public void Invoke_CallsUninstallOnAllInstallers()
        {
            var factoryLoader = Substitute.For<IInstallerFactoryFinder>();
            var installerFactory = Substitute.For<IInstallerFactory>();

            var installer1 = Substitute.For<IInstaller>();
            var installer2 = Substitute.For<IInstaller>();

            factoryLoader.Find().Returns(installerFactory);
            installerFactory.Create().Returns(new[] { installer1, installer2 });

            var sut = new UninstallCommand(factoryLoader);

            sut.Invoke().GetEnumerator().MoveNext();

            installer1.Received().Uninstall(Arg.Is<IInstallerContext>(context => context is InstallerContext));
            installer2.Received().Uninstall(Arg.Is<IInstallerContext>(context => context is InstallerContext));
        }