public void TheDefaultVersionForAnApplicaitonIs_0_0_0_0()
        {
            var classUnderTest = new ApplicationVersionKeeper(new VersionApplicationStateStoreMock());
            VersionedApplication application = classUnderTest.AddVersionedApplication("name", "desc");

            Assert.That(application.Version, Is.TypeOf<SemVersion>());
            Assert.That(application.Version.ToString(), Is.EqualTo("0.0.0"));
        }
        public void AVersionedApplicationIsReturedWhenCreated()
        {
            var stateStoreSpy = new VersionApplicationStateStoreMock();

            var classUnderTest = new ApplicationVersionKeeper(stateStoreSpy);
            VersionedApplication versionedApplication = classUnderTest.AddVersionedApplication("TestApplication", "Application Description");

            Assert.That(versionedApplication, Is.Not.Null);
        }
        public void CreatingANewApplicationCallsTheStateStore()
        {
            var stateStoreSpy = new VersionApplicationStateStoreMock();

            var classUnderTest = new ApplicationVersionKeeper(stateStoreSpy);
            classUnderTest.AddVersionedApplication("TestApplication", "Application Description");

            stateStoreSpy.AssertThisApplicationWasCreated("TestApplication", "Application Description");
        }
        public void CanCreateAnApplicationAtASpecificVersion()
        {
            const string setVersion = "1.2.3-4";
            var classUnderTest = new ApplicationVersionKeeper(new VersionApplicationStateStoreMock());
            VersionedApplication application = classUnderTest.AddVersionedApplication("name", "desc",
                SemVersion.Parse(setVersion));

            Assert.That(application.Version.ToString(), Is.EqualTo(setVersion));
        }
        public void WhenApplicationWithSameNameExistsReturnsDuplicateResult()
        {
            var state = new VersionedApplicationState("test", "description");
            var stateStoreSpy = new VersionApplicationStateStoreMock();
            stateStoreSpy.SetupApplicationStateToReturn(state);

            var classUnderTest = new ApplicationVersionKeeper(stateStoreSpy);

            var existingApplication = classUnderTest.AddVersionedApplication("test", "other description");
            Assert.That(existingApplication, Is.TypeOf<ExistingVersionedApplication>());
        }
        private static VersionedApplication ConfigureVersionKeeperWithApplicationState(VersionedApplicationState applicationState = null)
        {
            if (applicationState == null)
                applicationState = new VersionedApplicationState("name", "desc");

            var versionApplicationStateStoreMock = new VersionApplicationStateStoreMock();
            versionApplicationStateStoreMock.SetupApplicationStateToReturn(applicationState);
            var classUnderTest = new ApplicationVersionKeeper(versionApplicationStateStoreMock);
            VersionedApplication application = classUnderTest.AddVersionedApplication("name", "desc");
            return application;
        }