예제 #1
0
        public void ShouldLogMessageIfNoMatch()
        {
            SetupJsonLoader(@"project\myFolder\config.json", "{packages:[{\"locator\":\"id\"}]}");
            SetupProviderMatcher();
            var messageLogger = new StubConsoleWriter();

            var testSubject = new PackagesRestorer(_jsonLoader, _providerMatcher, messageLogger, new SaucySettings());

            testSubject.Restore(@"project\myFolder\config.json");

            messageLogger.AssertWrittenMessages(
                @"Restoring packages from project\myFolder\config.json",
                "Package locator does not match any provider: {\"locator\":\"id\"}");
        }
예제 #2
0
        public void ShouldAttemptToGetMatchingProviderForEachPackage()
        {
            SetupJsonLoader(@"myFolder\config.json", "{packages:[{package:\"myPackageA\"},{package:\"myPackageB\"}]}");
            SetupProviderMatcher();

            var packageLocatorA = (JObject)_saucyConfig["packages"][0];
            var packageLocatorB = (JObject)_saucyConfig["packages"][1];

            var testSubject = new PackagesRestorer(_jsonLoader, _providerMatcher, A.Fake <IWriteToConsole>(), new SaucySettings());

            testSubject.Restore(@"myFolder\config.json");

            Assert.That(_providerMatcher.MatchPackageLocatorsArgs.ToArray(), Is.EqualTo(new[] { packageLocatorA, packageLocatorB }));
        }
예제 #3
0
        public void ShouldLogMessageIfMatcherThrowsAmbiguousPackageLocatorException()
        {
            SetupJsonLoader(@"project\myFolder\config.json", "{packages:[{\"locator\":\"id\"}]}");
            var messageLogger     = new StubConsoleWriter();
            var myProviderMatcher = A.Fake <IMatchProvider>();

            A.CallTo(() => myProviderMatcher.Match(A <JObject> ._)).Throws(new AmbiguousPackageLocatorException(new JObject()));

            var testSubject = new PackagesRestorer(_jsonLoader, myProviderMatcher, messageLogger, new SaucySettings());

            testSubject.Restore(@"project\myFolder\config.json");

            messageLogger.AssertWrittenMessages(
                @"Restoring packages from project\myFolder\config.json",
                "Package locator matches multiple providers: {\"locator\":\"id\"}");
        }
예제 #4
0
        public void ShouldCallProviderPullForEachPackage()
        {
            var providerA = A.Fake <IProvider>();
            var providerB = A.Fake <IProvider>();

            SetupJsonLoader(@"project\myFolder\config.json", "{packages:[{package:\"myPackageA\"},{package:\"myPackageB\"}]}");
            SetupProviderMatcher(providerA, providerB);

            var packageLocatorA = (JObject)_saucyConfig["packages"][0];
            var packageLocatorB = (JObject)_saucyConfig["packages"][1];

            var testSubject = new PackagesRestorer(_jsonLoader, _providerMatcher, A.Fake <IWriteToConsole>(), new SaucySettings {
                PackagesFolder = "packagesFolder"
            });

            testSubject.Restore(@"project\myFolder\config.json");

            A.CallTo(() => providerA.Pull(packageLocatorA, @"project\myFolder\packagesFolder")).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => providerB.Pull(packageLocatorB, @"project\myFolder\packagesFolder")).MustHaveHappened(Repeated.Exactly.Once);
        }