public void Update()
        {
            using (TransactionScope scope = new TransactionScope())
            {
                TagRepository tagRepo = new TagRepository(new EFContext());
                PopRepository target = new PopRepository(new EFContext());

                tagRepo.Create(new Tag()
                {
                    Name = "PopTag_1"
                });

                tagRepo.Create(new Tag()
                {
                    Name = "PopTag_2"
                });

                Tag popTag_1 = tagRepo.GetAll().FirstOrDefault(w => w.Name == "PopTag_1");
                Tag PopTag_2 = tagRepo.GetAll().FirstOrDefault(w => w.Name == "PopTag_2");

                Pop pop = new Pop()
                {
                    Title = "New Pop",
                    URL = "New Pop URL",
                    PublishDate = DateTime.Now,
                    Tags = new List<Tag> { popTag_1 },
                    User = new User()
                    {
                        Login = "******",
                        Password = "******",
                        Email = "*****@*****.**"
                    }
                };

                target.Create(pop);

                Pop updatePop = target.GetAll().FirstOrDefault(w => w.Title == pop.Title);

                updatePop.Title = "Edited Pop";
                updatePop.URL = "Edited Pop URL";
                updatePop.PublishDate = DateTime.Now;
                updatePop.Tags.Remove(popTag_1);
                updatePop.Tags.Add(PopTag_2);

                target.Update(updatePop);

                Pop updatedPop = target.GetAll().FirstOrDefault(w => w.Title == updatePop.Title);

                updatedPop.Title.Should().Be(updatePop.Title);
                updatedPop.URL.Should().Be(updatePop.URL);
                updatedPop.PublishDate.Should().Be(updatePop.PublishDate);

                updatedPop.Tags.Count.Should().Be(1);

                updatedPop.Tags.Satisfy(t => t.FirstOrDefault(w => w.Name == "PopTag_2") != null);
            }
        }
        public void Create()
        {
            using (TransactionScope scope = new TransactionScope())
            {
                UserRepository userRepo = new UserRepository(new EFContext());
                TagRepository tagRepo = new TagRepository(new EFContext());
                PopRepository target = new PopRepository(new EFContext());

                userRepo.Create(new User()
                {
                    Login = "******",
                    Password = "******",
                    Email = "*****@*****.**"
                });

                User user = userRepo.GetAll().FirstOrDefault(w => w.Login == "1234");

                tagRepo.Create(new Tag()
                {
                    Name = "Pop"
                });

                Tag tag = tagRepo.GetAll().FirstOrDefault(w => w.Name == "Pop");

                Pop model = new Pop()
                {
                    Title = "New Pop",
                    URL = "New Pop URL",
                    PublishDate = DateTime.Now,
                    Tags = new List<Tag> { tag },
                    User = user
                };

                target.Create(model);

                Pop createdPop = target.GetAll().FirstOrDefault(w => w.Title == model.Title);

                createdPop.Title.Should().Be(model.Title);
                createdPop.URL.Should().Be(model.URL);
                createdPop.PublishDate.Should().Be(model.PublishDate);

                createdPop.Tags.Satisfy(t => t.FirstOrDefault(w => w.Name == "Pop") != null);
                createdPop.User.Login.Should().Be("1234");
            }
        }