public void WhenApplicationDoesNotExistANullApplicationIsReturned()
        {
            var classUnderTest = new ApplicationVersionKeeper(new VersionApplicationStateStoreMock());
            VersionedApplication application = classUnderTest.GetVersionedApplication("applicationName");

            Assert.That(application, Is.TypeOf<NullVersionedApplication>());

            Assert.That(application.Name, Is.Empty);
            Assert.That(application.Description, Is.Empty);
        }
        public void CanRetrieveAnApplicationWhenItIsTheStateStore()
        {
            const string applicationDescription = "description";
            const string applicationName = "test";

            var stateStore = new VersionApplicationStateStoreMock();
            stateStore.SetupApplicationStateToReturn(new VersionedApplicationState(applicationName, applicationDescription));

            var classUnderTest = new ApplicationVersionKeeper(stateStore);
            VersionedApplication application = classUnderTest.GetVersionedApplication(applicationName);

            Assert.That(application, Is.Not.Null);
            Assert.That(application.Name, Is.EqualTo(applicationName));
            Assert.That(application.Description, Is.EqualTo(applicationDescription));

            stateStore.AssertThisApplicationNameWasRequested(applicationName);
        }
        public void VersionNumberIncrementedCorrectlyAccrossInstancesOfVersionKeeper()
        {
            const string applicationName = "test";

            var stateStore = new VersionApplicationStateStoreMock();

            ApplicationVersionKeeper firstInstanceOfApplicationVersionKeeper = BuildUpClassWithNewApplication(applicationName, stateStore);
            VersionedApplication application = firstInstanceOfApplicationVersionKeeper.GetVersionedApplication(applicationName);

            string firstVersionControlNumber = GenerateRandomVersionControlIdentifier();
            application.RecordBuild(firstVersionControlNumber);
            application.RecordBuild(firstVersionControlNumber);

            string secondVersionControlNumber = GenerateRandomVersionControlIdentifier();

            application.RecordBuild(secondVersionControlNumber);
            application.RecordBuild(secondVersionControlNumber);
            Assert.That(application.Version.ToString(), Is.EqualTo("0.0.1+2"));

            var secondInstanceOfVersionKeeper = new ApplicationVersionKeeper(stateStore);
            application = secondInstanceOfVersionKeeper.GetVersionedApplication(applicationName);
            
            Assert.That(application.Version.ToString(), Is.EqualTo("0.0.1+2"));
        }