public void CreateGetAndUpdateTest()
        {
            Defect defect = CreateDefect();
            EntityListResult <Defect> list = entityService.Get <Defect>(workspaceContext);
            Defect firstDefect             = list.data[0];
            Defect defectForUpdate         = new Defect(firstDefect.Id);

            defectForUpdate.SetValue("name", defectForUpdate.Name + " updated " + new Guid());
            Defect updatedDefect  = entityService.Update <Defect>(workspaceContext, defectForUpdate);
            Defect updatedDefect2 = entityService.GetById <Defect>(workspaceContext, firstDefect.Id, null);

            Assert.AreEqual(defectForUpdate.Name, updatedDefect2.Name);
        }
        public void  DefectCoverageTest()
        {
            Test   createdTest1  = TestManualTests.CreateManualTest();
            Test   createdTest2  = TestManualTests.CreateManualTest();
            Test   createdTest3  = TestManualTests.CreateManualTest();
            Defect createdDefect = DefectTests.CreateDefect();

            //create coverage
            Defect defectForUpdate = new Defect(createdDefect.Id);

            //add tests

            EntityList <Test> testList = new EntityList <Test>();
            Test testForLink1          = new Test(createdTest1.Id);

            testForLink1.TypeName = "test";
            testList.data.Add(testForLink1);

            Test testForLink2 = new Test(createdTest3.Id);

            testForLink2.TypeName = "test";
            testList.data.Add(testForLink2);

            defectForUpdate.SetValue("test", testList);

            //define service arg, its required to add new relation instead of replace existing ones
            Dictionary <string, string> serviceArgs = new Dictionary <string, string>();

            serviceArgs.Add("reference_update_mode", "append");

            //actial update
            Defect updated = entityService.Update(workspaceContext, defectForUpdate, serviceArgs, null);


            //get test coverage
            List <QueryPhrase> queryPhrases         = new List <QueryPhrase>();
            QueryPhrase        defectIdPhrase       = new LogicalQueryPhrase(Release.ID_FIELD, createdDefect.Id);
            QueryPhrase        coveredContentPhrase = new CrossQueryPhrase("covered_content", defectIdPhrase);

            queryPhrases.Add(coveredContentPhrase);
            EntityListResult <Test> coveredTests = entityService.Get <Test>(workspaceContext, queryPhrases, null);

            Assert.AreEqual(2, coveredTests.data.Count);

            //validation
            List <EntityId> coveredTestIds = coveredTests.data.ConvertAll <EntityId>(a => a.Id);

            Assert.IsTrue(coveredTestIds.Contains(testForLink1.Id));
            Assert.IsTrue(coveredTestIds.Contains(testForLink2.Id));
        }
        /// <summary>
        /// Create a new defect entity
        /// </summary>
        public static Defect CreateDefect(string customName = null)
        {
            var name   = customName ?? "Defect_" + Guid.NewGuid();
            var defect = new Defect
            {
                Name     = name,
                Phase    = GetPhaseNew(),
                Severity = GetSeverityByName("High"),
                Parent   = Utility.GetWorkItemRoot()
            };

            defect.SetValue(CommonFields.Owner, BaseOctanePluginTest.User);

            var createdDefect = BaseOctanePluginTest.EntityService.Create(BaseOctanePluginTest.WorkspaceContext, defect, new[] { Defect.NAME_FIELD, Defect.AUTHOR_FIELD });

            Assert.AreEqual(name, createdDefect.Name, "Mismatched defect name");

            return(createdDefect);
        }