public void Should_Use_Yes_Flag()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                // When
                var result = fixture.GetArguments().Render();

                // Then
                Assert.Equal("install -y xcowsay", result);
            }
            public void Should_Include_Version()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.Package = new PackageReference("apt:?package=xcowsay&version=1.1.0");

                // When
                var result = fixture.GetArguments().Render();

                // Then
                Assert.Equal("install -y xcowsay=1.1.0", result);
            }
            public void Should_Use_Release_Option()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.Package = new PackageReference("apt:?package=xcowsay&release=xenial");

                // When
                var result = fixture.GetArguments();

                // Then
                Assert.Contains(result, a => a.Render() == "-t=xenial");
            }
            public void Should_Use_Dist_Flag()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.Package = new PackageReference("apt:?package=xcowsay&dist=stable");

                // When
                var result = fixture.GetArguments().Render();

                // Then
                Assert.Equal("install -y xcowsay/stable", result);
            }
            public void Should_Not_Throw_If_Install_Path_Is_Null()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.InstallPath = null;

                // When
                var result = Record.Exception(() => fixture.Install());

                // Then
                Assert.Null(result);
            }
            public void Should_Ignore_Custom_Source_If_AbsoluteUri_Is_Used()
            {
                var fixture = new APTPackageInstallerFixture();

                fixture.Package = new PackageReference("apt:http://absolute/?package=xcowsay");

                // When
                var result = Record.Exception(() => fixture.Install());

                // Then
                Assert.Null(result);
                fixture.Config.DidNotReceive().GetValue(APT_CONFIGKEY);
            }
            public void Should_Not_Be_Able_To_Install_If_Scheme_Is_Incorrect()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.Package = new PackageReference("homebrew:?package=windirstat");

                // When
                var result = fixture.CanInstall();

                // Then
                Assert.False(result);
            }
            public void Should_Be_Able_To_Install_If_Scheme_Is_Correct()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.Package = new PackageReference("apt:?package=xcowsay");

                // When
                var result = fixture.CanInstall();

                // Then
                Assert.True(result);
            }
            public void Should_Throw_If_URI_Is_Null()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.Package = null;

                // When
                var result = Record.Exception(() => fixture.CanInstall());

                // Then
                Assert.IsType <ArgumentNullException>(result);
                Assert.Equal("package", ((ArgumentNullException)result).ParamName);
            }
            public void Should_Throw_If_Content_Resolver_Is_Null()
            {
                // Given
                var fixture = new APTPackageInstallerFixture();

                fixture.ContentResolver = null;

                // When
                var result = Record.Exception(() => fixture.CreateInstaller());

                // Then
                Assert.IsType <ArgumentNullException>(result);
                Assert.Equal("contentResolver", ((ArgumentNullException)result).ParamName);
            }