Example #1
0
        public void GivenMessageContentIsNotTooLong_WhenUpdateMessageIsCreated_ThenTheMessageIsNotShortened()
        {
            // Arrange
            var release = RepositoryReleaseBuilder.BuildOneWithShortRepoAndReleaseNameOnAspecificDate <GitHubRepositoryRelease>();

            // Act
            var message = MessageBuilder.BuildForRelease(release);

            // Assert
            var messageLengthWithoutUrlPlusFixedShortenedUrl =
                message.Content.Length - release.HtmlUrl.Length + MessageBuilder.TwitterShortenedUrlCharacterCount;

            messageLengthWithoutUrlPlusFixedShortenedUrl.Should().BeLessOrEqualTo(MessageBuilder.MaxTwitterCharacterCount);
        }
Example #2
0
        public void GivenARepositoryRelease_WhenUpdateMessageIsCreated_ThenTheMessageContainsTheCorrespondingReleaseInfo()
        {
            // Arrange
            var release = RepositoryReleaseBuilder.BuildOneWithShortRepoAndReleaseNameOnAspecificDate <GitHubRepositoryRelease>();

            // Act
            var message = MessageBuilder.BuildForRelease(release);

            // Assert
            message.Content.Should().Be(@"A new azure-functions-host release, Azure Functions Runtime 2.0.12477 (tagged v2.0.12477), is available on GitHub since 01 Jan 2018.

See https://github.com/Azure/azure-functions-host/releases/tag/v2.0.12477 for more information.

#AzureFunctions #Serverless");
        }
        public void GivenHistoryReleaseIsNullReleaseAndGitHubReleaseIsNullRelease_WhenIsNewAndShouldBeStoredIsCalled_ThenResultShouldBeFalse()
        {
            // Arrange
            const string repoName             = "repo";
            var          repoConfig           = RepositoryConfigurationBuilder.BuildOne(repoName);
            var          releasesFromGitHub   = RepositoryReleaseBuilder.BuildListContainingOneNullRelease <GitHubRepositoryRelease>(repoName);
            var          releasesFromHistory  = RepositoryReleaseBuilder.BuildListContainingOneNullRelease <HistoryRepositoryRelease>(repoName);
            var          releaseMatchFunction = ReleaseFunctionBuilder.BuildForMatchingRepositoryName();

            // Act
            var latestReleases = LatestObjectsBuilder.Build <RepositoryConfiguration, RepositoryRelease, LatestReleases>(
                repoConfig,
                releasesFromGitHub,
                releasesFromHistory,
                releaseMatchFunction);

            // Assert
            latestReleases.IsNewAndShouldBeStored.Should().BeFalse("because there is no result from GitHub");
        }
        public void GivenHistoryReleaseIsReleaseWithNonMatchingReleaseId_WhenIsNewAndShouldBeStoredIsCalled_ThenResultShouldBeTrue()
        {
            // Arrange
            const string repoName             = "repo";
            const int    releaseIdHistory     = 1;
            const int    releaseIdGithub      = 2;
            var          repoConfig           = RepositoryConfigurationBuilder.BuildOne(repoName);
            var          releasesFromGitHub   = RepositoryReleaseBuilder.BuildListContainingOneWithReleaseId <GitHubRepositoryRelease>(repoName, releaseIdGithub);
            var          releasesFromHistory  = RepositoryReleaseBuilder.BuildListContainingOneWithReleaseId <HistoryRepositoryRelease>(repoName, releaseIdHistory);
            var          releaseMatchFunction = ReleaseFunctionBuilder.BuildForMatchingRepositoryName();

            // Act
            var latestReleases = LatestObjectsBuilder.Build <RepositoryConfiguration, RepositoryRelease, LatestReleases>(
                repoConfig,
                releasesFromGitHub,
                releasesFromHistory,
                releaseMatchFunction);

            // Assert
            latestReleases.IsNewAndShouldBeStored.Should().BeTrue("because the releaseIds are not equal");
        }
        public void GivenHistoryReleaseIsNullReleaseAndGitHubReleaseIsWithinTimeWindow_WhenIsNewAndShouldBePostedIsCalled_ThenResultShouldBeTrue()
        {
            // Arrange
            const string repoName             = "repo";
            const int    releaseIdGithub      = 1;
            var          daysTimespan         = new TimeSpan(1, 0, 0, 0);
            var          gitHubReleaseDate    = DateTimeOffset.UtcNow.Subtract(daysTimespan);
            var          repoConfig           = RepositoryConfigurationBuilder.BuildOne(repoName);
            var          releasesFromGitHub   = RepositoryReleaseBuilder.BuildListContainingOneWithReleaseIdAndDate <GitHubRepositoryRelease>(repoName, releaseIdGithub, gitHubReleaseDate);
            var          releasesFromHistory  = RepositoryReleaseBuilder.BuildListContainingOneNullRelease <HistoryRepositoryRelease>(repoName);
            var          releaseMatchFunction = ReleaseFunctionBuilder.BuildForMatchingRepositoryName();

            // Act
            var latestReleases = LatestObjectsBuilder.Build <RepositoryConfiguration, RepositoryRelease, LatestReleases>(
                repoConfig,
                releasesFromGitHub,
                releasesFromHistory,
                releaseMatchFunction);

            // Assert
            latestReleases.IsNewAndShouldBeStored.Should().BeTrue("because the release is not in history yet.");
            latestReleases.IsNewAndShouldBePosted.Should().BeTrue($"because the release date is within the time window of {LatestReleases.MaximumNumberOfDaysToPostAboutNewlyFoundRelease} days");
        }