private static void SetHierarchyPart(int index, HierarchyPart part, string[] itemIds) { switch (index) { case 0: // A (root) part.Y = 1; part.X = 1; part.ChildrenIds.Add(itemIds[1]); part.ChildrenIds.Add(itemIds[2]); break; case 1: // B (child) part.Y = 2; part.X = 1; part.ParentId = itemIds[0]; break; case 2: // C (child) part.Y = 2; part.X = 2; part.ParentId = itemIds[0]; part.ChildrenIds.Add(itemIds[3]); break; case 3: // D (grandson) part.Y = 3; part.X = 1; part.ParentId = itemIds[2]; break; } }
public void GetDataPins_Tag_3() { HierarchyPart part = GetPart(); Dictionary <string, string> pins = part.GetDataPins() .ToDictionary(p => p.Name, p => p.Value); Assert.Equal(3, pins.Count); Assert.True(pins.ContainsKey("y")); Assert.Equal("1", pins["y"]); Assert.True(pins.ContainsKey("x")); Assert.Equal("2", pins["x"]); Assert.True(pins.ContainsKey("tag")); Assert.Equal("some-tag", pins["tag"]); }
public void GetDataPins_NoTag_2() { HierarchyPart part = GetPart(); part.Tag = null; Dictionary <string, string> pins = part.GetDataPins() .ToDictionary(p => p.Name, p => p.Value); Assert.Equal(2, pins.Count); Assert.True(pins.ContainsKey("y")); Assert.Equal("1", pins["y"]); Assert.True(pins.ContainsKey("x")); Assert.Equal("2", pins["x"]); }
private static HierarchyPart GetPart() { HierarchyPart part = new HierarchyPart { ItemId = Guid.NewGuid().ToString(), RoleId = "some-role", CreatorId = "zeus", UserId = "another", ParentId = PARENT_GUID, Y = 1, X = 2, Tag = "some-tag" }; part.ChildrenIds.Add(CHILD1_GUID); part.ChildrenIds.Add(CHILD2_GUID); return(part); }
public void Part_Is_Serializable() { HierarchyPart part = GetPart(); string json = TestHelper.SerializePart(part); HierarchyPart part2 = TestHelper.DeserializePart <HierarchyPart>(json); Assert.Equal(part.Id, part2.Id); Assert.Equal(part.TypeId, part2.TypeId); Assert.Equal(part.ItemId, part2.ItemId); Assert.Equal(part.RoleId, part2.RoleId); Assert.Equal(part.CreatorId, part2.CreatorId); Assert.Equal(part.UserId, part2.UserId); Assert.Equal(part.Y, part2.Y); Assert.Equal(part.X, part2.X); Assert.Equal(part.Tag, part2.Tag); Assert.Equal(part.ParentId, part2.ParentId); Assert.Equal(part.ChildrenIds.Count, part2.ChildrenIds.Count); Assert.Contains(CHILD1_GUID, part2.ChildrenIds); Assert.Contains(CHILD2_GUID, part2.ChildrenIds); }
private MongoItem[] SeedItems() { EnsureClientCreated(CONNECTION); IMongoDatabase db = Client.GetDatabase(DB_NAME); IMongoCollection <MongoItem> items = db.GetCollection <MongoItem>(MongoItem.COLLECTION); IMongoCollection <MongoPart> parts = db.GetCollection <MongoPart>(MongoPart.COLLECTION); var jsonOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; // generate IDs string[] itemIds = new string[4]; for (int i = 0; i < 4; i++) { itemIds[i] = Guid.NewGuid().ToString(); } // generate items and seed // 4 items: A B C D with hierarchy: // A (y=1) // +--B (y=2 x=1) // +--C (y=2 x=2) // +--D (y=3) MongoItem[] mongoItems = new MongoItem[4]; for (int i = 0; i < 4; i++) { char letter = (char)('A' + i); // item MongoItem mongoItem = new MongoItem { Id = itemIds[i], Title = $"Item {letter}", Description = $"Description for {letter}", FacetId = "default", SortKey = $"item {letter}", CreatorId = "zeus", UserId = "zeus" }; mongoItems[i] = mongoItem; items.InsertOne(mongoItem); // hierarchy part HierarchyPart part = new HierarchyPart { ItemId = mongoItem.Id, CreatorId = mongoItem.CreatorId, UserId = mongoItem.UserId }; SetHierarchyPart(i, part, itemIds); parts.InsertOne(new MongoPart(part) { Content = BsonDocument.Parse( JsonSerializer.Serialize(part, part.GetType(), jsonOptions)) }); } return(mongoItems); }