/// <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)); } MsNumberingsPart part = new MsNumberingsPart(); SetPartMetadata(part, roleId, item); for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Numberings.Add(new Faker <MsNumbering>() .RuleFor(p => p.IsMain, n == 1) .RuleFor(p => p.IsPagination, n == 1) .RuleFor(p => p.Era, f => f.PickRandom("ancient", "modern")) .RuleFor(p => p.System, f => f.PickRandom("roman", "arabic")) .RuleFor(p => p.Technique, f => f.Lorem.Word()) .RuleFor(p => p.Century, f => f.Random.Short(12, 15)) .RuleFor(p => p.Position, f => f.PickRandom("bottom", "top")) .RuleFor(p => p.Issues, f => f.PickRandom(null, f.Lorem.Sentence())) .Generate()); } return(part); }
private static MsNumberingsPart GetPart(int count) { MsNumberingsPart part = new MsNumberingsPart { ItemId = Guid.NewGuid().ToString(), RoleId = "some-role", CreatorId = "zeus", UserId = "another" }; for (int n = 1; n <= count; n++) { string eo = n % 2 == 0 ? "even" : "odd"; part.Numberings.Add(new MsNumbering { IsMain = n == 1, IsPagination = n % 2 == 0, Era = eo, System = "s-" + eo, Technique = "t-" + eo, Century = (short)(10 + n), Position = $"pos-{n}" }); } return(part); }
public void GetDataPins_Numberings_Ok() { MsNumberingsPart part = GetPart(3); List <DataPin> pins = part.GetDataPins(null).ToList(); Assert.Equal(13, 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 == "era-odd-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("2", pin.Value); pin = pins.Find(p => p.Name == "era-even-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("1", pin.Value); pin = pins.Find(p => p.Name == "sys-s-odd-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("2", pin.Value); pin = pins.Find(p => p.Name == "sys-s-even-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("1", pin.Value); pin = pins.Find(p => p.Name == "tech-t-odd-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("2", pin.Value); pin = pins.Find(p => p.Name == "tech-t-even-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("1", pin.Value); for (int n = 1; n <= 3; n++) { pin = pins.Find(p => p.Name == "century" && p.Value == (n + 10).ToString(CultureInfo.InvariantCulture)); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "position" && p.Value == $"pos-{n}"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); } }
public void GetDataPins_NoNumberings_Ok() { MsNumberingsPart part = GetPart(0); List <DataPin> pins = part.GetDataPins(null).ToList(); 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() { MsNumberingsPart part = GetPart(2); string json = TestHelper.SerializePart(part); MsNumberingsPart part2 = TestHelper.DeserializePart <MsNumberingsPart>(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); // TODO: details }
public void Seed_Ok() { MsNumberingsPartSeeder seeder = new MsNumberingsPartSeeder(); seeder.SetSeedOptions(_seedOptions); IPart part = seeder.GetPart(_item, null, _factory); Assert.NotNull(part); MsNumberingsPart p = part as MsNumberingsPart; Assert.NotNull(p); TestHelper.AssertPartMetadata(p); Assert.NotEmpty(p.Numberings); }