private static PersonEventsPart GetPart(int count) { PersonEventsPart part = new PersonEventsPart { ItemId = Guid.NewGuid().ToString(), RoleId = "some-role", CreatorId = "zeus", UserId = "another", }; for (int n = 1; n <= count; n++) { part.Events.Add(new BioEvent { Type = n % 2 == 0 ? "even" : "odd", Date = HistoricalDate.Parse($"{1200 + n} AD"), Places = new List <string>(new[] { "place-1", "place-2" }), Description = "A description.", Sources = TestHelper.GetDocReferences(2), Participants = new List <DecoratedId>(new[] { new DecoratedId { Id = "guy-1", Tag = "tag", Rank = 1 }, new DecoratedId { Id = "guy-2", Tag = "tag", Rank = 1 } }) }); } return(part); }
public void GetDataPins_NoEvents_Ok() { PersonEventsPart part = GetPart(0); List <DataPin> pins = part.GetDataPins(null).ToList(); TestHelper.AssertValidDataPinNames(pins); Assert.Single(pins); DataPin pin = pins[0]; TestHelper.AssertPinIds(part, pin); Assert.Equal("tot-count", pin.Name); Assert.Equal("0", pin.Value); }
public void GetDataPins_Events_Ok() { PersonEventsPart part = GetPart(3); List <DataPin> pins = part.GetDataPins(null).ToList(); Assert.Equal(10, pins.Count); TestHelper.AssertValidDataPinNames(pins); DataPin pin = pins.Find(p => p.Name == "tot-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("3", pin.Value); pin = pins.Find(p => p.Name == "type-odd-count" && p.Value == "2"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "type-even-count" && p.Value == "1"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); for (int n = 1; n <= 3; n++) { double expected = HistoricalDate.Parse($"{1200 + n} AD") .GetSortValue(); pin = pins.Find(p => p.Name == "date-value" && p.Value == expected.ToString(CultureInfo.InvariantCulture)); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); } for (int n = 1; n <= 2; n++) { pin = pins.Find(p => p.Name == "place" && p.Value == $"place{n}"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "participant" && p.Value == $"tag:guy{n}"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); } }
public void Part_Is_Serializable() { PersonEventsPart part = GetPart(2); string json = TestHelper.SerializePart(part); PersonEventsPart part2 = TestHelper.DeserializePart <PersonEventsPart>(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(2, part.Events.Count); // TODO: details }
public void Seed_Ok() { PersonEventsPartSeeder seeder = new PersonEventsPartSeeder(); seeder.SetSeedOptions(_seedOptions); IPart part = seeder.GetPart(_item, null, _factory); Assert.NotNull(part); PersonEventsPart p = part as PersonEventsPart; Assert.NotNull(p); TestHelper.AssertPartMetadata(p); Assert.NotEmpty(p.Events); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } PersonEventsPart part = new PersonEventsPart(); SetPartMetadata(part, roleId, item); for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Events.Add(new Faker <BioEvent>() .RuleFor(e => e.Type, f => n == 1? "birth" : f.PickRandom("work", "marriage")) .RuleFor(e => e.Date, HistoricalDate.Parse($"{n} AD")) .RuleFor(e => e.Places, f => new List <string>(new[] { f.Lorem.Word() })) .RuleFor(e => e.Description, f => f.Lorem.Sentence()) .RuleFor(e => e.Sources, SeederHelper.GetDocReferences(1, 3)) .RuleFor(e => e.Participants, SeederHelper.GetDecoratedIds(1, 3)) .RuleFor(e => e.Work, f => f.Lorem.Sentence(1, 3)) .RuleFor(e => e.Rank, f => f.Random.Short(0, 3)) .RuleFor(e => e.IsWorkDubious, f => f.Random.Bool(0.2f)) .RuleFor(e => e.IsWorkLost, f => f.Random.Bool(0.2f)) .RuleFor(e => e.ExternalIds, SeederHelper.GetExternalIds(1, 3)) .Generate()); } return(part); }