Пример #1
0
        public void GetDataPins_NoWorks_Ok()
        {
            PersonWorksPart part = GetPart(0);

            List <DataPin> pins = part.GetDataPins(null).ToList();

            TestHelper.AssertValidDataPinNames(pins);

            Assert.Equal(3, pins.Count);

            DataPin pin = pins.Find(p => p.Name == "tot-count");

            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);
            Assert.Equal("0", pin.Value);

            pin = pins.Find(p => p.Name == "dubious-count");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);
            Assert.Equal("0", pin.Value);

            pin = pins.Find(p => p.Name == "lost-count");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);
            Assert.Equal("0", pin.Value);
        }
Пример #2
0
        public static PersonWorksPart GetPart(int count)
        {
            PersonWorksPart part = new PersonWorksPart
            {
                ItemId    = Guid.NewGuid().ToString(),
                RoleId    = "some-role",
                CreatorId = "zeus",
                UserId    = "another"
            };

            for (int n = 1; n <= count; n++)
            {
                part.Works.Add(new PersonWork
                {
                    Titles      = new List <string>(new[] { $"title-{n}" }),
                    Genre       = (n & 1) == 1 ? "odd" : "even",
                    IsDubious   = n == 3,
                    IsLost      = n == 3,
                    Language    = (n & 1) == 1 ? "eng" : "ita",
                    Note        = "note",
                    Chronotopes = TestHelper.GetChronotopes(2),
                    References  = TestHelper.GetDocReferences(2)
                });
            }

            return(part);
        }
Пример #3
0
        /// <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));
            }

            PersonWorksPart part = new PersonWorksPart();

            SetPartMetadata(part, roleId, item);
            string[] languages = new[] { "eng", "ita", "fra", "deu", "spa" };

            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Works.Add(new Faker <PersonWork>()
                               .RuleFor(a => a.Language, f => f.PickRandom(languages))
                               .RuleFor(a => a.IsDubious, f => f.Random.Bool(0.2f))
                               .RuleFor(a => a.IsLost, f => f.Random.Bool(0.2f))
                               .RuleFor(a => a.Genre, f => f.Lorem.Word())
                               .RuleFor(a => a.Titles, f => new List <string>(new[] { f.Lorem.Sentence() }))
                               .RuleFor(a => a.Chronotopes, SeederHelper.GetChronotopes(1, 3))
                               .RuleFor(a => a.References, SeederHelper.GetDocReferences(1, 3))
                               .RuleFor(a => a.Note,
                                        f => f.Random.Bool(0.2f)? f.Lorem.Sentence() : null)
                               .Generate());
            }

            return(part);
        }
Пример #4
0
        public void GetDataPins_Works_Ok()
        {
            PersonWorksPart part = GetPart(3);

            List <DataPin> pins = part.GetDataPins(null).ToList();

            Assert.Equal(10, pins.Count);
            TestHelper.AssertValidDataPinNames(pins);

            // counts
            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 == "dubious-count");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);
            Assert.Equal("1", pin.Value);

            pin = pins.Find(p => p.Name == "lost-count");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);
            Assert.Equal("1", pin.Value);

            // genre
            pin = pins.Find(p => p.Name == "genre" && p.Value == "odd");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);

            pin = pins.Find(p => p.Name == "genre" && p.Value == "even");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);

            // language
            pin = pins.Find(p => p.Name == "language" && p.Value == "eng");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);

            pin = pins.Find(p => p.Name == "language" && p.Value == "ita");
            Assert.NotNull(pin);
            TestHelper.AssertPinIds(part, pin);

            for (int n = 1; n <= 3; n++)
            {
                // title
                pin = pins.Find(p => p.Name == "title" && p.Value == $"title{n}");
                Assert.NotNull(pin);
                TestHelper.AssertPinIds(part, pin);
            }
        }
        public void Seed_Ok()
        {
            PersonWorksPartSeeder seeder = new PersonWorksPartSeeder();

            seeder.SetSeedOptions(_seedOptions);

            IPart part = seeder.GetPart(_item, null, _factory);

            Assert.NotNull(part);

            PersonWorksPart p = part as PersonWorksPart;

            Assert.NotNull(p);

            TestHelper.AssertPartMetadata(p);

            Assert.NotEmpty(p.Works);
        }
Пример #6
0
        public void Part_Is_Serializable()
        {
            PersonWorksPart part = GetPart(2);

            string          json  = TestHelper.SerializePart(part);
            PersonWorksPart part2 =
                TestHelper.DeserializePart <PersonWorksPart>(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.Works.Count);
            // TODO: details
        }