/// <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)); } CorrExchangesPart part = new CorrExchangesPart(); SetPartMetadata(part, roleId, item); for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Exchanges.Add(new Faker <CorrExchange>() .RuleFor(e => e.IsDubious, f => f.Random.Bool(0.3f)) .RuleFor(e => e.IsIndirect, f => f.Random.Bool()) .RuleFor(e => e.IsFromParticipant, f => f.Random.Bool()) .RuleFor(e => e.Chronotopes, new List <Chronotope> { SeederHelper.GetChronotope("from", 1200) }) .RuleFor(e => e.Participants, SeederHelper.GetDecoratedIds(1, 2)) .RuleFor(e => e.Sources, SeederHelper.GetDocReferences(1, 3)) .RuleFor(e => e.Attachments, SeederHelper.GetAttachments(1, 3)) .Generate()); } return(part); }
public void GetDataPins_NoExchange_Ok() { CorrExchangesPart part = GetPart(0); List <DataPin> pins = part.GetDataPins(null).ToList(); TestHelper.AssertValidDataPinNames(pins); Assert.Single(pins); DataPin pin = pins[0]; Assert.Equal("tot-count", pin.Name); TestHelper.AssertPinIds(part, pin); Assert.Equal("0", pin.Value); }
public void Part_Is_Serializable() { CorrExchangesPart part = GetPart(2); string json = TestHelper.SerializePart(part); CorrExchangesPart part2 = TestHelper.DeserializePart <CorrExchangesPart>(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.Exchanges.Count); // TODO: details }
public void Seed_Ok() { CorrExchangesPartSeeder seeder = new CorrExchangesPartSeeder(); seeder.SetSeedOptions(_seedOptions); IPart part = seeder.GetPart(_item, null, _factory); Assert.NotNull(part); CorrExchangesPart p = part as CorrExchangesPart; Assert.NotNull(p); TestHelper.AssertPartMetadata(p); Assert.NotEmpty(p.Exchanges); }
public void GetDataPins_EmptyExchange_Ok() { CorrExchangesPart part = GetPart(0); part.Exchanges.Add(new CorrExchange { Participants = new List <DecoratedId>(new[] { new DecoratedId { Id = "barbato", Rank = 1 } }) }); List <DataPin> pins = part.GetDataPins(null).ToList(); Assert.Equal(2, pins.Count); }
private static CorrExchangesPart GetPart(int count) { CorrExchangesPart part = new CorrExchangesPart { ItemId = Guid.NewGuid().ToString(), RoleId = "some-role", CreatorId = "zeus", UserId = "another" }; for (int n = 1; n <= count; n++) { part.Exchanges.Add(new CorrExchange { IsDubious = n % 2 == 0, IsIndirect = n % 2 == 0, IsFromParticipant = n % 2 != 0, Chronotopes = new List <Chronotope>(new[] { new Chronotope { Tag = "from", Date = HistoricalDate.Parse(n + 1200 + " AD"), TextDate = "kal.apr.", Place = (n % 2 == 0? "Even" : "Odd") + " town", Sources = TestHelper.GetDocReferences(2) }, new Chronotope { Tag = "to", Date = HistoricalDate.Parse(n + 1201 + " AD"), Place = (n % 2 == 0 ? "Even" : "Odd") + " lake" } }), Participants = GetParticipants(2), Sources = TestHelper.GetDocReferences(2), Attachments = GetAttachments(2) }); } return(part); }
public void GetDataPins_Exchanges_Ok() { CorrExchangesPart part = GetPart(3); List <DataPin> pins = part.GetDataPins(null).ToList(); Assert.Equal(19, pins.Count); TestHelper.AssertValidDataPinNames(pins); DataPin pin = pins.Find(p => p.Name == "dubious-count"); TestHelper.AssertPinIds(part, pin); Assert.Equal("1", pin.Value); pin = pins.Find(p => p.Name == "indirect-count"); TestHelper.AssertPinIds(part, pin); Assert.Equal("1", pin.Value); pin = pins.Find(p => p.Name == "incoming-count"); TestHelper.AssertPinIds(part, pin); Assert.Equal("2", pin.Value); for (int n = 1; n <= 3; n++) { HistoricalDate date = HistoricalDate.Parse(n + 1200 + " AD"); double value = date.GetSortValue(); pin = pins.Find(p => p.Name == "date-value.from" && p.Value == value.ToString(CultureInfo.InvariantCulture)); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); date = HistoricalDate.Parse(n + 1201 + " AD"); value = date.GetSortValue(); pin = pins.Find(p => p.Name == "date-value.to" && p.Value == value.ToString(CultureInfo.InvariantCulture)); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); } pin = pins.Find(p => p.Name == "place.from" && p.Value == "even town"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "place.from" && p.Value == "odd town"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "place.to" && p.Value == "even lake"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "place.to" && p.Value == "odd lake"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); for (int n = 1; n <= 2; n++) { pin = pins.Find(p => p.Name == $"participant.{(n % 2 == 0 ? "even" : "odd")}" && p.Value == $"guy{n}"); TestHelper.AssertPinIds(part, pin); } pin = pins.Find(p => p.Name == "att-odd-count" && p.Value == "3"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "att-even-count" && p.Value == "3"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "att-tot-count" && p.Value == "6"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); }