Esempio n. 1
0
        private static async Task Exec()
        {
            Console.WriteLine("----------------------" +
                              "------------");
            var stopwatch = Stopwatch.StartNew();

            using (var db = new MyContext())
            {
                using (var transaction = db.Database.BeginTransaction(IsolationLevel.ReadCommitted))
                {
//                    db.Database.OpenConnection();

                    var mergeOperation = new MergeOperation <Blog>(db);
                    mergeOperation.WithData(() => GetBlogToInsert(100500));
                    mergeOperation.OnConflictDoUpdate(
                        (Blog b) => new { b.BlogId },
                        (target, excluded) => new Blog
                    {
                        Url = excluded.Url,
//                            Url = "TEST",
                    });

                    await mergeOperation.ExecuteAsync();

                    transaction.Commit();
                }
            }

            stopwatch.Stop();

            Console.WriteLine("-------------- DONE --------------");
            Console.WriteLine(stopwatch.Elapsed);
        }
Esempio n. 2
0
        public async Task MergeOperation_Execute_WhenCalled_NothingGoesWrong()
        {
            var changesets = new List <Changeset>
            {
                new Changeset {
                    ChangesetId = 2, Comment = "twee"
                },
                new Changeset {
                    ChangesetId = 5, Comment = "vijf"
                },
                new Changeset {
                    ChangesetId = 7, Comment = "zeven"
                },
                new Changeset {
                    ChangesetId = 8, Comment = "acht"
                }
            };

            _configManager.Expect(x => x.GetValue <bool>(ConfigKeys.ENABLE_WARNING_WHEN_PENDING_CHANGES))
            .Return(false);

            _configManager.Expect(x => x.GetValue <Branch>(ConfigKeys.LATEST_VERSION_FOR_BRANCH))
            .Return(Branch.None);

            _sut.MyCurrentAction += (s, action) =>
            {
                Assert.AreEqual(Resources.MergingBranches, action);
            };

            var excludedWorkItemTypes = new List <string> {
                "Code Review Request"
            };

            _configManager.Expect(x => x.GetValue <bool>(ConfigKeys.EXCLUDE_WORK_ITEMS_FOR_MERGE)).Return(false);
            _configManager.Expect(x => x.GetValue <bool>(ConfigKeys.SHOULD_SHOW_LATEST_VERSION_IN_COMMENT)).Return(false);
            _configManager.Expect(x => x.GetValue <IEnumerable <string> >(ConfigKeys.WORK_ITEM_TYPES_TO_EXCLUDE))
            .Return(excludedWorkItemTypes);

            var workItemsToAdd = new List <int> {
                5, 75, 85
            };

            _configManager.Expect(x => x.GetValue <CheckInComment>(ConfigKeys.CHECK_IN_COMMENT_OPTION))
            .Return(CheckInComment.None);
            _configManager.Expect(x => x.GetValue <string>(ConfigKeys.COMMENT_FORMAT)).Return(string.Empty);
            _configManager.Expect(x => x.GetValue <string>(ConfigKeys.COMMENT_LINE_FORMAT)).Return(string.Empty);

            _mergeService.Expect(x => x.MergeBranchesAsync(_currentWorkspaceModel, _sourceBranchName, _targetbranchName, 2, 8)).Return(Task.CompletedTask);
            _mergeService.Expect(x => x.GetWorkItemIdsAsync(Arg <IEnumerable <int> > .Matches(y => y.All(z => changesets.Select(cs => cs.ChangesetId).Contains(z))), Arg <IEnumerable <string> > .Matches(y => y.First() == excludedWorkItemTypes.First())))
            .Return(Task.FromResult <IEnumerable <int> >(workItemsToAdd));
            _teamExplorerService.Expect(x => x.AddWorkItemsAndCommentThenNavigate(_currentWorkspaceModel, string.Empty, workItemsToAdd));

            await _sut.ExecuteAsync(new MergeModel
            {
                OrderedChangesets = changesets,
                SourceBranch      = _sourceBranchName,
                TargetBranch      = _targetbranchName,
                WorkspaceModel    = _currentWorkspaceModel
            });
        }