Exemplo n.º 1
0
        protected override void Seed(AbsenceManagementContext context)
        {
            var systemUser =
                context.People
                .FirstOrDefault(p => p.DataSource == "SYSTEM" && p.DataSourceId == "0");

            if (systemUser == null)
            {
                context.People.AddOrUpdate(
                    PersonBuilder
                    .CreatePerson("System", "User")
                    .WithDataSource("SYSTEM", "0")
                    .Build()
                    );
                context.SaveChanges();

                systemUser = context.People
                             .FirstOrDefault(p => p.DataSource == "SYSTEM" && p.DataSourceId == "0");

                context.Users.Add(new User {
                    Person   = systemUser,
                    PersonId = systemUser.Id,
                    UserName = "******",
                    Email    = "*****@*****.**"
                });
            }
        }
Exemplo n.º 2
0
        private static IEnumerable <Person> GetPeople()
        {
            yield return(PersonBuilder
                         .CreatePerson("John", "Doe")
                         .WithDataSource("hr", "154785")
                         .Build());

            yield return(PersonBuilder
                         .CreatePerson("Jane", "Doe")
                         .WithDataSource("hr", "154954")
                         .Build());
        }
Exemplo n.º 3
0
        public static AbsenceManagementContext GetPersistentAbsenceManagentContext(
            IEnumerable <Person> people      = null,
            IEnumerable <Relation> relations = null
            )
        {
            string id = $"{DateTime.Now.Ticks.ToString()}-{_random.Next(int.MinValue, int.MaxValue)}";

            Thread.Sleep(1);

            using (var ctx = SetupPersistentAbsenceManagementContext(
                       id: id,
                       people: people ?? new Person[] { PersonBuilder.CreatePerson("John", "Doe").Build() },
                       relations: relations ?? TestData.GetRelationTestData().Select(o => (Relation)o[0])
                       )) { }

            return(SetupPersistentAbsenceManagementContext(id: id));
        }
        public void Can_Add()
        {
            // Arrange
            var sut = new EFDisconnectedPersonRepository(
                EFTestData.GetTransientAbsenceManagementContext()
                );
            var user = PersonBuilder.CreatePerson("John", "Doe").Build();

            // Act
            sut.Add(user);
            var actual = sut.GetAll().FirstOrDefault(p => p.FirstName.Equals("John"));

            // Assert
            Assert.Equal(1, sut.GetAll().Count());
            Assert.NotNull(actual);
            Assert.Equal(user.FirstName, actual.FirstName);
            Assert.Equal(user.LastName, actual.LastName);
        }
Exemplo n.º 5
0
        public static IEnumerable <object[]> GetRelationTestData()
        {
            var master = PersonBuilder
                         .CreatePerson("Harley", "Powell")
                         .WithDataSource("HR", "30031984")
                         .Build();

            return(GetPeopleTestData()
                   .Select(o => o[0])
                   .Cast <Person>()
                   .Select(p => RelationBuilder
                           .CreateRelation(RelationType.ManagerToSubordinate)
                           .ForMaster(master)
                           .WithSlave(p)
                           .Build()
                           )
                   .Select(r => new object[] { r }));
        }
        public void Can_Update()
        {
            using (var ctx = EFTestData.GetPersistentAbsenceManagentContext()) {
                // Arrange
                var sut    = new EFDisconnectedPersonRepository(ctx);
                var userId = sut.GetAll().FirstOrDefault().Id;

                // Act
                var actual = PersonBuilder.CreatePerson("Johnnie", "Doe").Build();
                TestData.SetPrivateProperty(actual, nameof(Person.Id), userId);
                sut.Update(actual);

                // Assert
                Assert.Equal(ctx.People.Count(), sut.GetAll().Count());
                Assert.NotNull(actual);
                Assert.Equal("Johnnie", actual.FirstName);
                Assert.Equal("Doe", actual.LastName);
            }
        }
        static void Main(string[] args)
        {
            // той също е част от creational Design Patterns защото връща създаден обект
            // 1. Правя си клас, който ще създава инстанция на private обект. Чрез public Properties ще мога да му попълвам стойностите и накрая ще може да ви се върне нов обект със записани стойности.

            // 1. Правя си един class Person който има Properties: First, Surname, LastName, Age, Address
            // 2. Правя си PersonBuilder който вътре в себе си прави инстанция на Person и я държи скрита
            // 3. Правя методи в PersonBuilder, който да приемат някакви стойности през параметър на метода и да ги сетват на Person. Задължително трябва да връщат this за да може да продължим с точка следващ метод - .FirstName("Ivan").LastName("Pepkin".Age(12))
            // 4. За да може да връща целия Person с попълнените му данни трябва да направя един метод, който връща Person-a

            var personBuilder = new PersonBuilder();
            var person        = personBuilder
                                .CreatePerson()
                                .WithFirstName("Ivan")
                                .WithSurname("Penchev")
                                .WithLastname("Gorilov")
                                .WithAge(33)
                                .WithAddress("Sofia")
                                .Build();
        }
Exemplo n.º 8
0
        public static IEnumerable <object[]> GetPeopleTestData()
        {
            yield return(new object[] {
                PersonBuilder
                .CreatePerson("Yves", "Schelpe")
                .WithDataSource("HR", "11101985")
                .Build()
            });

            yield return(new object[] {
                PersonBuilder
                .CreatePerson("Ramiro", "Solomon")
                .WithDataSource("HR", "15051945")
                .Build()
            });

            yield return(new object[] {
                PersonBuilder
                .CreatePerson("Sonya", "Sharpe")
                .WithDataSource("HR", "29101966")
                .Build()
            });
        }