예제 #1
0
        public async Task AddBuildConfigs_WhenConnectionAlreadyExists_RefreshsBuildConfigs()
        {
            var connectionId = _fixture.Create<string>();
            var builds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            var buildsIds = builds.Select(b => b.CiExternalId)
                .ToList();
            var olderBuilds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            var olderBuildsIds = olderBuilds
                .Select(b => b.CiExternalId)
                .ToList();

            var connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(connectionId, olderBuilds);
            connManager.BuildsPerConnId.ContainsKey(connectionId).Should().BeTrue();
            connManager.BuildsPerConnId[connectionId].ShouldAllBeEquivalentTo(olderBuildsIds);

            await connManager.AddBuildConfigs(connectionId, builds);

            connManager.BuildsPerConnId.ContainsKey(connectionId).Should().BeTrue();
            connManager.BuildsPerConnId[connectionId].ShouldAllBeEquivalentTo(buildsIds);
        }
예제 #2
0
        public async Task RemoveBuildConfig_WhenOtherConnectionIdsAreUsingIt_ShouldNotRemoveTheBuild()
        {
            var duplicateBuild = _fixture.Create<Models.BuildConfig>();

            var connectionId = _fixture.Create<string>();
            var builds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            builds.Add(duplicateBuild);

            var otherConnectionId = _fixture.Create<string>();
            var otherBuilds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            otherBuilds.Add(duplicateBuild);

            var connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(connectionId, builds);
            await connManager.AddBuildConfigs(otherConnectionId, otherBuilds);

            var removeBuild = builds.First();
            await connManager.RemoveBuildConfig(connectionId, removeBuild);

            connManager.BuildsPerConnId.Keys.Count.Should().Be(2);
            connManager.BuildsToBeRefreshed.Should().NotContainKey(removeBuild.CiExternalId);
        }
예제 #3
0
        public async Task RemoveAllBuildConfigs_WhenOtherConnectionIdsAreUsingIt_ShouldNotRemoveTheBuild()
        {
            var duplicateBuild = _fixture.Create<Models.BuildConfig>();
            var duplicateBuildId = duplicateBuild.CiExternalId;

            var connectionId = _fixture.Create<string>();
            var builds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            builds.Add(duplicateBuild);

            var otherConnectionId = _fixture.Create<string>();
            var otherBuilds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            otherBuilds.Add(duplicateBuild);
            var otherBuildsIds = otherBuilds
                .Select(b => b.CiExternalId)
                .ToList();

            var connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(connectionId, builds);
            await connManager.AddBuildConfigs(otherConnectionId, otherBuilds);

            await connManager.RemoveAllBuildConfigs(connectionId);

            connManager.BuildsPerConnId.Keys.Count.Should().Be(1);
            connManager.BuildsToBeRefreshed.Should().ContainKeys(otherBuildsIds.ToArray());
            connManager.BuildsToBeRefreshed.Should().ContainKey(duplicateBuildId);
        }
예제 #4
0
        public async Task UpdateBuildConfigs_DontDuplicateBuildsToBeRefreshed()
        {
            var connectionId = _fixture.Create<string>();
            var builds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();

            var otherBuilds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            otherBuilds.Add(builds.First());

            var buildsIds = builds.Select(b => b.CiExternalId).ToList();
            buildsIds.AddRange(otherBuilds.Select(b => b.CiExternalId));
            buildsIds = buildsIds.Distinct().ToList();

            var connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(connectionId, builds);

            await connManager.UpdateBuildConfigs(connectionId, otherBuilds);

            connManager.BuildsPerConnId.ContainsKey(connectionId).Should().BeTrue();
            connManager.BuildsPerConnId[connectionId].ShouldAllBeEquivalentTo(buildsIds);
            connManager.BuildsToBeRefreshed.Should().ContainKeys(buildsIds.ToArray());
        }
        public async Task AddBuildConfigs_DontDuplicateBuildsToBeRefreshed()
        {
            string             connectionId = _fixture.Create <string>();
            List <BuildConfig> builds       = _fixture
                                              .Build <BuildConfig>()
                                              .CreateMany()
                                              .ToList();
            List <string> buildsIds = builds.Select(b => b.CiExternalId)
                                      .ToList();

            ConnectionsManager connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(_fixture.Create <string>(), new[] { builds.First() });

            await connManager.AddBuildConfigs(connectionId, builds);

            connManager.BuildsPerConnId.ContainsKey(connectionId).Should().BeTrue();
            connManager.BuildsPerConnId[connectionId].ShouldAllBeEquivalentTo(buildsIds);
            connManager.BuildsToBeRefreshed.Should().ContainKeys(buildsIds.ToArray());
        }
예제 #6
0
        public async Task AddBuildConfigs_AddsConnectionInfoStaticDictionaries()
        {
            var connectionId = _fixture.Create<string>();
            var builds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();
            var buildsIds = builds.Select(b => b.CiExternalId)
                .ToList();

            var connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(connectionId, builds);

            connManager.BuildsPerConnId.ContainsKey(connectionId).Should().BeTrue();
            connManager.BuildsPerConnId[connectionId].ShouldAllBeEquivalentTo(buildsIds);
            connManager.BuildsToBeRefreshed.Should().ContainKeys(buildsIds.ToArray());
        }
예제 #7
0
        public async Task RemoveAllBuildConfigs_ShouldRemoveAllBuildsForConnectionId()
        {
            var connectionId = _fixture.Create<string>();
            var builds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany();

            var connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(connectionId, builds);

            connManager.BuildsPerConnId.Keys.Should()
                .Contain(connectionId);

            await connManager.RemoveAllBuildConfigs(connectionId);

            connManager.BuildsPerConnId.Keys.Should().BeEmpty();
            connManager.BuildsToBeRefreshed.Keys.Should().BeEmpty();
        }
예제 #8
0
        public async Task RemoveBuildConfig_ShouldRemoveTheBuild()
        {
            var connectionId = _fixture.Create<string>();
            var builds = _fixture
                .Build<Models.BuildConfig>()
                .CreateMany()
                .ToList();

            var connManager = new ConnectionsManager();
            await connManager.AddBuildConfigs(connectionId, builds);

            connManager.BuildsPerConnId.Keys.Should()
                .Contain(connectionId);

            await connManager.RemoveBuildConfig(connectionId, builds.First());

            connManager.BuildsPerConnId.Keys.Should().Contain(connectionId);
            connManager.BuildsPerConnId[connectionId].Count.Should()
                .Be(builds.Count() - 1);

            connManager.BuildsToBeRefreshed.Keys.Count.Should()
                .Be(builds.Count() - 1);
        }