private void GetBugs(BugzillaServiceConfiguration config)
        {
            BugzillaMocks mocks = new BugzillaMocks();

            List <Bug> expectedBugs = CreateSomeBogusRemoteBugs(5);
            List <int> expectedIds  = new List <int>();

//			Product expectedProduct = Product.Create(new GetProductResult(productId, productName, "Expected Descr"));
//			User expectedOwner = User.Create(new GetUserResult(ownerId, "Fred", "FredsLogin"));

            foreach (Bug bug in expectedBugs)
            {
                expectedIds.Add(int.Parse(bug.ID));
            }

//			SetupResult.For(mocks.ClientFactory.CreateNew(config.Url, mocks.Logger)).Return(mocks.Client);

            Expect.Call(mocks.Client.Login()).Return(expectedUserId);

            for (int i = 0; i < expectedBugs.Count; i++)
            {
                Bug bug = expectedBugs[i];
                Expect.Call(mocks.Client.GetBug(int.Parse(bug.ID))).Return(bug);
                Expect.Call(mocks.Client.Search(expectedFilterId)).Return(new List <int> {
                    1, 2, 3, 4, 5
                });
                //Expect.Call(mocks.Client.GetProduct(bug.ProductID)).Return(expectedProduct);
                //Expect.Call(mocks.Client.GetUser(bug.AssignedToID)).Return(expectedOwner);
            }

            mocks.Repository.ReplayAll();

            BugzillaReaderUpdater reader = new BugzillaReaderUpdater(config, mocks.ClientFactory, mocks.Logger);

            List <Defect> returnedBugs = reader.GetBugs();

            Assert.AreEqual(expectedBugs.Count, returnedBugs.Count, "Did not get back the right number of defects.");

            foreach (Defect defect in returnedBugs)
            {
                Assert.AreEqual(defect.ProjectId, v1ProjectId);
                Assert.AreEqual(defect.Owners, assignTo);
                Assert.AreEqual(defect.Priority, v1PriorityId);

                if (!string.IsNullOrEmpty(config.UrlTemplateToIssue) && !string.IsNullOrEmpty(config.UrlTitleToIssue))
                {
                    Assert.AreEqual(config.UrlTemplateToIssue.Replace("#key#", defect.ExternalId), defect.ExternalLink.Url);
                    Assert.AreEqual(config.UrlTitleToIssue, defect.ExternalLink.Title);
                }
            }

            mocks.Repository.VerifyAll();
        }
        private void OnDefectCreated(BugzillaServiceConfiguration config)
        {
            BugzillaMocks mocks = new BugzillaMocks();

            Defect defect                  = GetStockBug();
            int    expectedExternalId      = 1234;
            string expectedDefectLinkValue = "http://localhost/VersionOne.Web/assetdetail.v1?Oid=Defect:1000";

            defect.ExternalId = expectedExternalId.ToString();
            WorkitemCreationResult workitemCreationResult = new WorkitemCreationResult(defect);

            workitemCreationResult.Messages.Add("Message1");
            workitemCreationResult.Permalink = expectedDefectLinkValue;

            SetupResult.For(mocks.ClientFactory.CreateNew()).Return(mocks.Client);

            Expect.Call(mocks.Client.Login()).Return(expectedUserId);

            Expect.Call(mocks.Client.Logout);

            Expect.Call(mocks.Client.AcceptBug(Arg <int> .Is.Anything, Arg <string> .Is.Anything)).Return(true);

            if (!string.IsNullOrEmpty(config.OnCreateFieldName))
            {
                Expect.Call(mocks.Client.UpdateBug(expectedExternalId, config.OnCreateFieldName, config.OnCreateFieldValue)).Return(true);
            }

            if (!string.IsNullOrEmpty(config.DefectLinkFieldName))
            {
                Expect.Call(mocks.Client.UpdateBug(expectedExternalId, config.DefectLinkFieldName, expectedDefectLinkValue)).Return(true);
            }

            if (!string.IsNullOrEmpty(config.OnCreateReassignValue))
            {
                Expect.Call(mocks.Client.ReassignBug(expectedExternalId, config.OnCreateReassignValue)).Return(true);
            }

            mocks.Repository.ReplayAll();

            BugzillaReaderUpdater updater = new BugzillaReaderUpdater(config, mocks.ClientFactory, mocks.Logger);

            updater.OnDefectCreated(workitemCreationResult);

            mocks.Repository.VerifyAll();
        }