Пример #1
0
        public void UpdateMultiValueRelationTest()
        {
            IMetaModel metaModel = new MetaModel(new VersionOneAPIConnector(_metaUrl));
            IServices  services  = new Services(
                metaModel,
                new VersionOneAPIConnector(_dataUrl).WithVersionOneUsernameAndPassword(_username, _password));

            var storyId         = Oid.FromToken("Story:1124", metaModel);
            var query           = new Query(storyId);
            var storyType       = metaModel.GetAssetType("Story");
            var ownersAttribute = storyType.GetAttributeDefinition("Owners");

            query.Selection.Add(ownersAttribute);

            var result = services.Retrieve(query);
            var story  = result.Assets[0];
            var values = story.GetAttribute(ownersAttribute).Values;
            var owners = values.Cast <object>().ToList();

            if (owners.Count >= 1)
            {
                story.RemoveAttributeValue(ownersAttribute, owners[0]);
            }

            services.Save(story);
        }
        public void Complex1()
        {
            var termA = new FilterTerm(WorkitemParent);

            termA.Equal(Oid.FromToken("Theme:5", Meta));
            termA.Equal(Oid.FromToken("Theme:6", Meta));

            var termB = new FilterTerm(WorkitemScope);

            termB.Equal(Oid.FromToken("Scope:0", Meta));

            var termC = new FilterTerm(WorkitemParent);

            termC.NotEqual(Oid.FromToken("Theme:7", Meta));
            termC.NotEqual(Oid.FromToken("Theme:8", Meta));

            var termD = new FilterTerm(WorkitemScope);

            termD.NotEqual(Oid.FromToken("Scope:1", Meta));

            var and1 = new AndFilterTerm(termA, termB);
            var and2 = new AndFilterTerm(termC, termD);

            var o = new OrFilterTerm(and1, and2);

            Assert.AreEqual(
                "((Workitem.Parent='Theme%3a5','Theme%3a6';Workitem.Scope='Scope%3a0')|(Workitem.Parent!='Theme%3a7','Theme%3a8';Workitem.Scope!='Scope%3a1'))",
                o.Token);
        }
Пример #3
0
        public IEnumerable <T> Execute(string token, object[] selectFields)
        {
            var oid = Oid.FromToken(token, MetaModelProvider.Meta);

            var emptyObj = new T();

            var query = new Query(oid);

            var attributes = new List <IAttributeDefinition>(selectFields.Length);

            attributes.AddRange(selectFields.Select(emptyObj.GetAttribute));
            query.Selection.AddRange(attributes);

            var list = new List <T>();

            var result = ServicesProvider.Services.Retrieve(query);

            if (result.Assets.Count == 0)
            {
                return(list);
            }

            list.AddRange(result.Assets.Select(emptyObj.Create).Select(asssetObject => asssetObject).Cast <T>());

            return(list);
        }
Пример #4
0
        public void ReOpenAnAssetTest()
        {
            IMetaModel metaModel = new MetaModel(new VersionOneAPIConnector(_metaUrl));
            IServices  services  = new Services(
                metaModel,
                new VersionOneAPIConnector(_dataUrl).WithVersionOneUsernameAndPassword(_username, _password));

            // create a new story
            var projectId     = Oid.FromToken("Scope:0", metaModel);
            var assetType     = metaModel.GetAssetType("Story");
            var story         = services.New(assetType, projectId);
            var nameAttribute = assetType.GetAttributeDefinition("Name");

            story.SetAttributeValue(nameAttribute, "My New Story");
            services.Save(story);

            // closes the story
            var closeOperation = metaModel.GetOperation("Story.Inactivate");
            var closeId        = services.ExecuteOperation(closeOperation, story.Oid);

            //reopens the story
            var activateOperation = metaModel.GetOperation("Story.Reactivate");
            var activeId          = services.ExecuteOperation(activateOperation, story.Oid);

            var query      = new Query(activeId.Momentless);
            var assetState = metaModel.GetAttributeDefinition("Story.AssetState");

            query.Selection.Add(assetState);
            var   result      = services.Retrieve(query);
            Asset activeStory = result.Assets[0];

            Assert.AreEqual("Active", activeStory.GetAttribute(assetState).Value.ToString());
        }
Пример #5
0
        public void DeleteAnAssetTest()
        {
            IMetaModel metaModel = new MetaModel(new VersionOneAPIConnector(_metaUrl));
            IServices  services  = new Services(
                metaModel,
                new VersionOneAPIConnector(_dataUrl).WithVersionOneUsernameAndPassword(_username, _password));

            // create a new story so we can delete it
            var projectId     = Oid.FromToken("Scope:0", metaModel);
            var assetType     = metaModel.GetAssetType("Story");
            var newStory      = services.New(assetType, projectId);
            var nameAttribute = assetType.GetAttributeDefinition("Name");

            newStory.SetAttributeValue(nameAttribute, "My New Story");
            services.Save(newStory);
            // delete the story
            var         deleteOperation = metaModel.GetOperation("Story.Delete");
            var         deletedId       = services.ExecuteOperation(deleteOperation, newStory.Oid);
            var         query           = new Query(deletedId.Momentless);
            QueryResult result          = services.Retrieve(query);

            Assert.AreEqual(0, result.TotalAvaliable);

            // The delete operation returns the Oid with the new Moment of the deleted asset.
            // Future queries will automatically exclude deleted assets from results.
            // Currently there is no support for undeleting a deleted asset.
        }
Пример #6
0
        public void GetRegressionPlanWithValuableFilterTest()
        {
            var owner  = EntityFactory.CreateMember("Paul");
            var nobody = EntityFactory.CreateMember("Mike");

            IDictionary <string, object> attributes = new Dictionary <string, object>();

            attributes.Add("Owner", Oid.FromToken(owner.ID, Instance.ApiClient.MetaModel));

            var plan = EntityFactory.CreateRegressionPlan(RegressionPlanName, SandboxProject, attributes);

            var filter = new RegressionPlanFilter();

            filter.Project.Add(SandboxProject);
            filter.Owners.Add(owner);
            var plans = Instance.Get.RegressionPlans(filter);

            Assert.AreEqual(1, plans.Count);
            CollectionAssert.Contains(plans, plan);

            filter = new RegressionPlanFilter();
            filter.Project.Add(SandboxProject);
            filter.Owners.Add(nobody);
            plans = Instance.Get.RegressionPlans(filter);
            Assert.AreEqual(0, plans.Count);
        }
Пример #7
0
        public void UpdateAdminMemberName()
        {
            var query         = new Query(Oid.FromToken("Member:20", _metaModel));
            var nameAttribute = _metaModel.GetAttributeDefinition("Member.Name");

            query.Selection.Add(nameAttribute);
            var result    = _services.Retrieve(query);
            var member    = result.Assets[0];
            var nameValue = member.GetAttribute(nameAttribute).Value as string;

            Console.WriteLine("Name is currently: " + nameValue);

            var newName = string.Empty;

            while (newName == string.Empty)
            {
                newName = ReadString("Please enter a new name and hit enter");
            }

            member.SetAttributeValue(nameAttribute, newName);
            _services.Save(member);

            Console.WriteLine();
            Console.WriteLine("Saved member, now requerying...");
            Console.WriteLine();

            result    = _services.Retrieve(query);
            member    = result.Assets[0];
            nameValue = member.GetAttribute(nameAttribute).Value as string;
            Console.WriteLine("Name is now: " + nameValue);
        }
        public bool UpdateSingleValueRelation()
        {
            var storyId         = Oid.FromToken("Story:1094", _context.MetaModel);
            var query           = new Query(storyId);
            var storyType       = _context.MetaModel.GetAssetType("Story");
            var sourceAttribute = storyType.GetAttributeDefinition("Source");

            query.Selection.Add(sourceAttribute);
            var result    = _context.Services.Retrieve(query);
            var story     = result.Assets[0];
            var oldSource = GetValue(story.GetAttribute(sourceAttribute).Value);

            story.SetAttributeValue(sourceAttribute, GetNextSourceId(oldSource));
            _context.Services.Save(story);

            LogResult(story.Oid.Token, oldSource, GetValue(story.GetAttribute(sourceAttribute).Value));

            /***** OUTPUT EXAMPLE *****
             * Story:1094:17726
             * StorySource:148
             * StorySource:149
             ******************/

            return(true);
        }
        public bool UpdateScalarAttribute()
        {
            var storyId       = Oid.FromToken("Story:1094", _context.MetaModel);
            var query         = new Query(storyId);
            var storyType     = _context.MetaModel.GetAssetType("Story");
            var nameAttribute = storyType.GetAttributeDefinition("Name");

            query.Selection.Add(nameAttribute);
            var result  = _context.Services.Retrieve(query);
            var story   = result.Assets[0];
            var oldName = GetValue(story.GetAttribute(nameAttribute).Value);

            story.SetAttributeValue(nameAttribute, Guid.NewGuid().ToString());
            _context.Services.Save(story);

            LogResult(story.Oid.Token, oldName, GetValue(story.GetAttribute(nameAttribute).Value));

            /***** OUTPUT EXAMPLE *****
             * Story:1094:1446
             * Logon
             * F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
             ******************/

            return(true);
        }
        public Asset GetSingleAsset()
        {
            var memberId       = Oid.FromToken("Member:20", _context.MetaModel);
            var query          = new Query(memberId);
            var nameAttribute  = _context.MetaModel.GetAttributeDefinition("Member.Name");
            var emailAttribute = _context.MetaModel.GetAttributeDefinition("Member.Email");

            query.Selection.Add(nameAttribute);
            query.Selection.Add(emailAttribute);

            var result = _context.Services.Retrieve(query);
            var member = result.Assets[0];

            LogResult(member.Oid.Token,
                      GetValue(member.GetAttribute(nameAttribute).Value),
                      GetValue(member.GetAttribute(emailAttribute).Value));

            /***** OUTPUT EXAMPLE *****
             * Member:20
             * Administrator
             * [email protected]
             ******************/

            return(member);
        }
        private Project GetProjectById(string id)
        {
            if (!connector.IsConnected)
            {
                return(null);
            }

            if (CurrentProjectId == null)
            {
                Logger.Error("Current project is not selected");
                throw new DataLayerException("Current project is not selected");
            }

            var query = new Query(Oid.FromToken(id, connector.MetaModel));

            AddSelection(query, Entity.ProjectType);

            try {
                var result = connector.Services.Retrieve(query);
                return(result.TotalAvaliable == 1 ? WorkitemFactory.CreateProject(result.Assets[0], null) : null);
            } catch (MetaException ex) {
                connector.IsConnected = false;
                throw new DataLayerException("Unable to get projects", ex);
            } catch (Exception ex) {
                throw new DataLayerException("Unable to get projects", ex);
            }
        }
Пример #12
0
        private Attribute GetAttributeOnCustomType(Entity entity, string name, bool cachable)
        {
            var asset     = GetAsset(Oid.FromToken(entity.ID, MetaModel));
            var def       = asset.AssetType.GetAttributeDefinition(name);
            var attribute = (cachable ? asset.GetAttribute(def) : null) ?? RetrieveAttribute(asset.Oid, def, cachable);

            return(attribute);
        }
Пример #13
0
        internal void RemoveRelation <T>(Entity entity, string name, T value) where T : Entity
        {
            var asset = GetAsset(entity);
            var def   = asset.AssetType.GetAttributeDefinition(name);
            var oid   = Oid.FromToken(value.ID, MetaModel);

            asset.RemoveAttributeValue(def, oid);
        }
Пример #14
0
        public void HashCodeAndEqualTest()
        {
            Oid oid  = new Oid(Meta.GetAssetType("Story"), 5, null);
            Oid oid2 = Oid.FromToken("Story:5", Meta);

            Assert.AreEqual(oid, oid2);
            Assert.AreEqual(oid.GetHashCode(), oid2.GetHashCode());
        }
        protected Asset GetAssetFromV1(string AssetID)
        {
            Oid         assetId = Oid.FromToken(AssetID, _metaAPI);
            Query       query   = new Query(assetId);
            QueryResult result  = _dataAPI.Retrieve(query);

            return(result.Assets[0]);
        }
Пример #16
0
        public void FromTokenIsNull()
        {
            Oid oid = Oid.FromToken("NULL", Meta);

            Assert.AreEqual(Oid.Null, oid);
            Assert.AreSame(Oid.Null, oid);
            Assert.AreEqual(Oid.Null.GetHashCode(), oid.GetHashCode());
        }
Пример #17
0
        public void TestSetValidOidOnAsset()
        {
            var newStory = _services.New(_storyAssetType, _projectId);

            newStory.Oid = Oid.FromToken("Story:999999", _metaModel);

            Assert.IsNotNull(newStory.Oid);
        }
Пример #18
0
        public void ShowAdminMemberToken()
        {
            var query  = new Query(Oid.FromToken("Member:20", _metaModel));
            var result = _services.Retrieve(query);
            var member = result.Assets[0];

            Console.WriteLine(member.Oid.Token);
        }
Пример #19
0
        private Asset CreateDisposableStory(string name, string scopeToken)
        {
            var story = new Asset(storyType);

            assetsToDispose.Add(story);
            story.SetAttributeValue(nameDef, name);
            story.SetAttributeValue(scopeDef, Oid.FromToken(scopeToken, metaModel));
            services.Save(story);
            return(story);
        }
Пример #20
0
        /// <summary>
        /// Creates a new V1 project for integration test assets.
        /// </summary>
        private static void CreateTestProject()
        {
            var assetType     = _metaModel.GetAssetType("Scope");
            var nameAttribute = assetType.GetAttributeDefinition("Name");
            var projectId     = Oid.FromToken("Scope:0", _metaModel);
            var newAsset      = _services.New(assetType, projectId);

            newAsset.SetAttributeValue(nameAttribute, TestProjectName);
            _services.Save(newAsset);
            _projectId = newAsset.Oid.Momentless;
        }
        protected string GetAssetNumberV1(string AssetType, string AssetID)
        {
            IAssetType           assetType       = _metaAPI.GetAssetType(AssetType);
            Oid                  assetId         = Oid.FromToken(AssetID, _metaAPI);
            Query                query           = new Query(assetId);
            IAttributeDefinition numberAttribute = assetType.GetAttributeDefinition("Number");

            query.Selection.Add(numberAttribute);
            QueryResult result = _dataAPI.Retrieve(query);

            return(result.Assets[0].GetAttribute(numberAttribute).Value.ToString());
        }
Пример #22
0
        public void HashCodeAndEqualWithMomentTest()
        {
            Oid oid           = new Oid(Meta.GetAssetType("Story"), 5, 555);
            Oid oid2          = Oid.FromToken("Story:5:555", Meta);
            Oid anotherOid    = Oid.FromToken("Story:5:666", Meta);
            Oid momentlessOid = Oid.FromToken("Story:5", Meta);

            Assert.AreEqual(oid, oid2);
            Assert.AreEqual(oid.GetHashCode(), oid2.GetHashCode());
            Assert.AreNotEqual(oid, anotherOid);
            Assert.AreNotEqual(oid, momentlessOid);
            Assert.AreNotEqual(momentlessOid, anotherOid);
        }
Пример #23
0
        /// <summary>
        /// Find an asset in the asset cache or create one for this id
        /// </summary>
        /// <param name="id"></param>
        /// <param name="assetTypeToken">The Asset Type Token of the asset to create if one does not already exist</param>
        /// <returns>An Asset that will exist in the asset cache</returns>
        private Asset GetAsset(object id, string assetTypeToken)
        {
            Asset result;

            if (!assetCache.TryGetValue(id, out result))
            {
                var assetType = MetaModel.GetAssetType(assetTypeToken);
                var assetId   = id as AssetID;
                result = assetId != null ? new Asset(Oid.FromToken(assetId, MetaModel)) : new Asset(assetType);
                SetAsset(id, result);
            }

            return(result);
        }
        [Test] public void OidQueryMultiValueAttribute()
        {
            var subject = new Services(Meta, DataConnector);
            var q       = new Query(Oid.FromToken("Story:1036", Meta));
            var def     = Meta.GetAttributeDefinition("Story.Owners");

            q.Selection.Add(def);
            var r      = subject.Retrieve(q);
            var a      = r.Assets[0];
            var attrib = a.GetAttribute(def);

            Assert.IsNotNull(attrib);
            Assert.That(attrib.Values, Is.Empty);
        }
        public void NewMultiValueRelationLoads()
        {
            var subject       = new Services(Meta, DataConnector);
            var storyType     = Meta.GetAssetType("Story");
            var storyRequests = storyType.GetAttributeDefinition("Requests");
            var contextOid    = Oid.FromToken("Request:6075", Meta);
            var storyAsset    = subject.New(storyType, contextOid);

            Assert.IsTrue(storyAsset.GetAttribute(storyRequests).HasChanged, "Story Requests has changed");

            var x = storyAsset.GetAttribute(storyRequests).NewValues.Cast <object>().ToList();

            Assert.IsTrue(x.Contains(contextOid), "Story Requests contains " + contextOid.Token);
        }
Пример #26
0
        public void CreateRegressionPlanWithAttributesTest()
        {
            var member     = EntityFactory.CreateMember("test user");
            var attributes = new Dictionary <string, object> {
                { "Description", RegressionPlanDescription },
                { "Owner", Oid.FromToken(member.ID, Instance.ApiClient.MetaModel) }
            };
            var regressionPlan = EntityFactory.Create(() => SandboxProject.CreateRegressionPlan(RegressionPlanName, attributes));

            Assert.AreEqual(SandboxProject, regressionPlan.Project);
            Assert.AreEqual(RegressionPlanName, regressionPlan.Name);
            Assert.AreEqual(RegressionPlanDescription, regressionPlan.Description);
            Assert.AreEqual(member, regressionPlan.Owner);
        }
Пример #27
0
        public void ShowMultipleAttributes()
        {
            var query          = new Query(Oid.FromToken("Member:20", _metaModel));
            var nameAttribute  = _metaModel.GetAttributeDefinition("Member.Name");
            var emailAttribute = _metaModel.GetAttributeDefinition("Member.Email");

            query.Selection.Add(nameAttribute);
            query.Selection.Add(emailAttribute);

            var result = _services.Retrieve(query);
            var member = result.Assets[0];

            Console.WriteLine("Oid Token: " + member.Oid.Token);
            Console.WriteLine("Name: " + member.GetAttribute(nameAttribute).Value);
            Console.WriteLine("Email: " + member.GetAttribute(emailAttribute).Value);
        }
Пример #28
0
        public void AddNewAssetTest()
        {
            IMetaModel metaModel = new MetaModel(new VersionOneAPIConnector(_metaUrl));
            IServices  services  = new Services(
                metaModel,
                new VersionOneAPIConnector(_dataUrl).WithVersionOneUsernameAndPassword(_username, _password));

            var projectId     = Oid.FromToken("Scope:0", metaModel);
            var assetType     = metaModel.GetAssetType("Story");
            var newStory      = services.New(assetType, projectId);
            var nameAttribute = assetType.GetAttributeDefinition("Name");

            newStory.SetAttributeValue(nameAttribute, "My New Story");
            services.Save(newStory);

            Assert.IsFalse(newStory.Oid.IsNull);
        }
Пример #29
0
        public void full_working_example_with_basic_authentication()
        {
            // Setting up a basic connection with the connector and retrieving the Member with the ID 20
            var dataConnector = new VersionOneAPIConnector(_prefix + "rest-1.v1/")
                                .WithVersionOneUsernameAndPassword(_username, _password);
            var metaConnector = new VersionOneAPIConnector(_prefix + "meta.v1/");

            IMetaModel metaModel = new MetaModel(metaConnector);
            IServices  services  = new Services(metaModel, dataConnector);

            var memberId   = Oid.FromToken("Member:20", metaModel);
            var query      = new Query(memberId);
            var memberName = metaModel.GetAttributeDefinition("Member.Name");

            query.Selection.Add(memberName);

            var result = services.Retrieve(query);
        }
Пример #30
0
        public void EnvironmentContextUsageTest()
        {
            var context = new EnvironmentContext();

            var memberId       = Oid.FromToken("Member:20", context.MetaModel);
            var query          = new Query(memberId);
            var nameAttribute  = context.MetaModel.GetAttributeDefinition("Member.Name");
            var emailAttribute = context.MetaModel.GetAttributeDefinition("Member.Email");

            query.Selection.Add(nameAttribute);
            query.Selection.Add(emailAttribute);

            var result = context.Services.Retrieve(query);
            var member = result.Assets[0];

            Assert.AreEqual("Administrator", member.GetAttribute(nameAttribute).Value);
            Assert.AreEqual("*****@*****.**", member.GetAttribute(emailAttribute).Value);
        }