/// <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)); } MsScriptsPart part = new MsScriptsPart(); SetPartMetadata(part, roleId, item); int count = Randomizer.Seed.Next(1, 5 + 1); for (int n = 1; n <= count; n++) { bool even = n % 2 == 0; part.Scripts.Add(new Faker <MsScript>() .RuleFor(s => s.Role, f => f.PickRandom("superior", "inferior")) .RuleFor(s => s.Languages, f => new List <string>(new[] { f.PickRandom("lat", "grc") })) .RuleFor(s => s.Type, f => f.PickRandom("cap", "unc")) .RuleFor(s => s.Hands, f => GetHands(f.Random.Number(0, 2))) .Generate()); } return(part); }
public void GetDataPins_NoEntries_Ok() { MsScriptsPart part = GetPart(); part.Scripts.Clear(); 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 Seed_Ok() { MsScriptsPartSeeder seeder = new MsScriptsPartSeeder(); seeder.SetSeedOptions(_seedOptions); IPart part = seeder.GetPart(_item, null, _factory); Assert.NotNull(part); MsScriptsPart p = part as MsScriptsPart; Assert.NotNull(p); TestHelper.AssertPartMetadata(p); Assert.NotEmpty(p.Scripts); }
public void Part_Is_Serializable() { MsScriptsPart part = GetPart(); string json = TestHelper.SerializePart(part); MsScriptsPart part2 = TestHelper.DeserializePart <MsScriptsPart>(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.Scripts.Count, part2.Scripts.Count); // TODO: details }
public void GetDataPins_Entries_Ok() { MsScriptsPart part = new MsScriptsPart { ItemId = Guid.NewGuid().ToString(), RoleId = "some-role", CreatorId = "zeus", UserId = "another" }; for (int n = 1; n <= 3; n++) { bool even = n % 2 == 0; part.Scripts.Add(new MsScript { Role = even ? "inferior" : "superior", Languages = new List <string>(new[] { even ? "grc" : "lat" }), Type = even ? "unc" : "cap", Hands = new List <MsHand>(new[] { new MsHand { Id = $"h{n}" } }) }); } List <DataPin> pins = part.GetDataPins(null).ToList(); Assert.Equal(10, pins.Count); DataPin pin = pins.Find(p => p.Name == "tot-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("3", pin.Value); // role pin = pins.Find(p => p.Name == "role" && p.Value == "superior"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "role" && p.Value == "inferior"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); // language pin = pins.Find(p => p.Name == "language" && p.Value == "grc"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "language" && p.Value == "lat"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); // type pin = pins.Find(p => p.Name == "type" && p.Value == "cap"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "type" && p.Value == "unc"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); // hand-id for (int n = 1; n <= 3; n++) { pin = pins.Find(p => p.Name == "hand-id" && p.Value == $"h{n}"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); } }