public void TestFixtureSetUp()
        {
            // setup memcached
            _memcached = Process.Start(
                @"..\..\..\..\Libraries\memcached.exe",
                "-vv -p 11200");

            using (var db = new TrackerDataContext())
            {
                var role1 = new Role
                {
                    Name = "Test Role"
                };
                var role2 = new Role
                {
                    Name = "Duck Roll"
                };

                db.Role.InsertOnSubmit(role1);
                db.Role.InsertOnSubmit(role2);
                db.SubmitChanges();

                _roleIds.Add(role1.Id);
                _roleIds.Add(role2.Id);
            }
        }
        public ActionResult Create([Bind(Exclude="Id")]Task task)
        {
            try
            {
                using (var db = new TrackerDataContext())
                {
                    db.Task.InsertOnSubmit(task);
                    db.SubmitChanges();

                    var audit = new Audit(db.LastAudit);
                    audit.Task = task;
                    db.Audit.InsertOnSubmit(audit);
                    db.SubmitChanges();
                }
                return RedirectToAction("Edit", new { id = task.Id });
            }
            catch (BrokenRuleException e)
            {
                foreach (BrokenRule rule in e.BrokenRules)
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                return View(GetData());
            }
        }
        public ActionResult AddRole(int userId, int roleId)
        {
            using (var db = new TrackerDataContext())
            {
                var options = new DataLoadOptions();
                options.LoadWith<User>(u => u.UserRoleList);

                var user = db.User.GetByKey(userId);
                var role = db.Role.GetByKey(roleId);
                user.RoleList.Add(role);
                db.SubmitChanges();
            }
            return RedirectToAction("Edit", new { id = userId });
        }
        public ActionResult CopyTask(int id)
        {
            Task copiedTask = null;
            using (var db = new TrackerDataContext())
            {
                Task task = db.Task.GetByKey(id);
                copiedTask = task.Clone();
                copiedTask.Id = 0;
                copiedTask.CreatedUser = db.User.GetByEmailAddress(System.Web.HttpContext.Current.User.Identity.Name);
                db.Task.InsertOnSubmit(copiedTask);
                db.SubmitChanges();
            }

            return RedirectToAction("Edit", new {id = copiedTask.Id});
        }
 private void CreateTask(int userId)
 {
     var task = new Task()
     {
         AssignedId = userId,
         Status = Status.InProgress,
         Summary = "Explain the visions that inspire you",
         Priority = Priority.High,
         CreatedId = userId,
     };
     using (var db = new TrackerDataContext { Log = Console.Out })
     {
         db.Task.InsertOnSubmit(task);
         db.SubmitChanges();
         TaskId = task.Id;
     }
 }
        public ActionResult RemoveRole(int userId, int roleId)
        {
            using (var db = new TrackerDataContext())
            {
                var options = new DataLoadOptions();
                options.LoadWith<User>(u => u.UserRoleList);
                options.LoadWith<UserRole>(r => r.Role);
                db.LoadOptions = options;

                var user = db.User.GetByKey(userId);
                var role = user.RoleList.FirstOrDefault(r => r.Id == roleId);

                user.RoleList.Remove(role);
                db.SubmitChanges();
            }
            return RedirectToAction("Edit", new { id = userId });
        }
        public void TestFixtureSetUp()
        {
            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                var role1 = new Role
                {
                    Name = "Test Role"
                };
                var role2 = new Role
                {
                    Name = "Duck Roll"
                };

                db.Role.InsertOnSubmit(role1);
                db.Role.InsertOnSubmit(role2);
                db.SubmitChanges();

                _roleIds.Add(role1.Id);
                _roleIds.Add(role2.Id);
            }
        }
        public void TestFixtureSetUp()
        {
            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                db.Guid.InsertOnSubmit(new Core.Data.Guid
                {
                    Id = _guid1Id,
                    AlternateId = null
                });
                db.Guid.InsertOnSubmit(new Core.Data.Guid
                {
                    Id = _guid2Id,
                    AlternateId = _guid2Alt
                });
                db.Guid.InsertOnSubmit(new Core.Data.Guid
                {
                    Id = _guid3Id,
                    AlternateId = _guid3Alt
                });

                db.SubmitChanges();
            }
        }
        public void Test_Entity_Detach()
        {
            Task task = null;
            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                task = db.Task.GetByKey(TaskId);
                task.Detach();
            }

            task.Status = Status.Done;

            using (var context2 = new TrackerDataContext())
            {
                context2.Log = Console.Out;

                context2.Task.Attach(task, true);
                context2.SubmitChanges();
            }
        }
        public ActionResult AvatarPost(int id)
        {
            if (Request.Files.Count != 1)
            {
                using (var db = new TrackerDataContext())
                {
                    var user = db.User.GetByKey(id);
                    ModelState.AddModelError("file", "Must select a file to upload.");
                    return View("Edit", GetData(user));
                }
            }

            var file = Request.Files[0];
            var buffer = new byte[file.ContentLength];
            file.InputStream.Read(buffer, 0, buffer.Length);

            using (var db = new TrackerDataContext())
            {
                var user = db.User.GetByKey(id);
                user.Avatar = new Binary(buffer);
                user.AvatarType = file.ContentType;
                db.SubmitChanges();

                var audit = new Audit(db.LastAudit);
                audit.User = user;
                db.Audit.InsertOnSubmit(audit);
                db.SubmitChanges();
            }

            return RedirectToAction("Edit", new { id = id });
        }
 public ActionResult RemoveAvatar(int id)
 {
     using (var db = new TrackerDataContext())
     {
         var user = db.User.GetByKey(id);
         user.AvatarType = null;
         user.Avatar = null;
         db.SubmitChanges();
     }
     return RedirectToAction("Edit", new { id = id });
 }
        public ActionResult UserEdit(int id)
        {
            User user = null;
            var userViewData = new UserViewData();
            try
            {
                using (var db = new TrackerDataContext())
                {
                    var options = new DataLoadOptions();
                    options.LoadWith<Data.User>(u => u.UserRoleList);
                    options.LoadWith<Data.UserRole>(u => u.Role);
                    db.LoadOptions = options;

                    user = db.User.GetByKey(id);
                    UpdateModel(user);

                    if (!db.GetChangeSet().Updates.Contains(user))
                    {
                        var ruleManager = new RuleManager();
                        ruleManager.Run(user);

                        if (ruleManager.BrokenRules.Count > 0)
                            throw new BrokenRuleException(ruleManager.BrokenRules);
                    }

                    db.SubmitChanges();

                    var audit = new Audit(db.LastAudit);
                    audit.User = user;
                    db.Audit.InsertOnSubmit(audit);
                    db.SubmitChanges();
                }
                return RedirectToAction("Edit", new { id = id });
            }
            catch (BrokenRuleException e)
            {
                if (user != null)
                    user.Detach();

                foreach (BrokenRule rule in e.BrokenRules)
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                return View(GetData(user));
            }
        }
        public ActionResult Create(string emailAddress, string password, string confirmPassword)
        {
            try
            {
                if (confirmPassword == password)
                {
                    MembershipCreateStatus createStatus = MembershipService.CreateUser(emailAddress, password, emailAddress);
                    if (createStatus == MembershipCreateStatus.Success)
                    {
                        using (var db = new TrackerDataContext())
                        {
                            var user = db.User.GetByEmailAddress(emailAddress);
                            TryUpdateModel(user, null, null, new string[] { "FirstName, LastName" });
                            db.SubmitChanges();
                            return RedirectToAction("Edit", new { id = user.Id });
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("_FORM", UIHelper.ErrorCodeToString(createStatus));
                    }

                    return View();
                }
                else
                {
                    ModelState.AddModelError("Password", "Passwords must match");
                    return View();
                }
            }
            catch (BrokenRuleException e)
            {
                foreach (BrokenRule rule in e.BrokenRules)
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                return View();
            }
        }
        //[Ignore]
        public void ManyToMany()
        {
            var db = new TrackerDataContext { Log = Console.Out };

            var user = db.User.GetByKey(1);
            user.RoleList.Add(db.Role.GetByKey(1));
            user.RoleList.Add(db.Role.GetByKey(2));

            db.SubmitChanges();

            var userRole = user.UserRoleList.FirstOrDefault(u => u.RoleId == 1);
            db.UserRole.DeleteOnSubmit(userRole);

            user.RoleList.Remove(db.Role.GetByKey(1));
            user.RoleList.Remove(db.Role.GetByKey(2));

            var changes = db.GetChangeSet();

            db.SubmitChanges();
        }
        private void CreateUsers()
        {
            var user = new User()
            {
                FirstName = "Spock",
                LastName = "Sarekson",
                PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                PasswordSalt = "=Unc%",
                EmailAddress = "*****@*****.**",
                IsApproved = true
            };

            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                db.User.InsertOnSubmit(user);
                db.SubmitChanges();
                SpockId = user.Id;
            }

            var users = new List<User>();

            users.Add(new User()
            {
                FirstName = "James",
                LastName = "Kirk",
                PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                PasswordSalt = "=Unc%",
                EmailAddress = "*****@*****.**",
                IsApproved = true
            });

            users.Add(new User()
            {
                FirstName = "Bones",
                LastName = "McCoy",
                PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                PasswordSalt = "=Unc%",
                EmailAddress = "*****@*****.**",
                IsApproved = false
            });

            users.Add(new User()
            {
                FirstName = "Nyota",
                LastName = "Uhura",
                PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                PasswordSalt = "=Unc%",
                EmailAddress = "*****@*****.**",
                IsApproved = false
            });

            users.Add(new User()
            {
                FirstName = "Ellen",
                LastName = "Tigh",
                PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                PasswordSalt = "=Unc%",
                EmailAddress = "*****@*****.**",
                IsApproved = false
            });

            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                db.User.InsertAllOnSubmit(users);
                db.SubmitChanges();
                JamesId = db.User.ByFirstName("James").ByLastName("Kirk").First().Id;
            }
        }
        public void AuditLog()
        {
            var db = new TrackerDataContext { Log = Console.Out };
            db.AuditingEnabled = true;

            var user = new User();
            user.EmailAddress = string.Format("test.{0}@test.com", DateTime.Now.Ticks);
            user.FirstName = "Test";
            user.IsApproved = true;
            user.LastName = "User";
            user.PasswordHash = "asdf";
            user.PasswordSalt = "asdf";

            db.User.InsertOnSubmit(user);
            db.SubmitChanges();

            var auditLog = db.LastAudit;
            Assert.IsNotNull(auditLog);
        }
 public void Test_Entity_Clone()
 {
     using (var db = new TrackerDataContext { Log = Console.Out })
     {
         var u = db.Task.GetByKey(TaskId);
         Task taskCopy = u.Clone();
         taskCopy.Id = 0;
         db.Task.InsertOnSubmit(taskCopy);
         db.SubmitChanges();
     }
 }
        public void Test_Entity_Detach_Update()
        {
            Task task = null;
            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                task = db.Task.GetByKey(TaskId);
                task.Detach();
            }

            using (var context2 = new TrackerDataContext())
            {
                context2.Log = Console.Out;
                // attach, then update properties
                context2.Task.Attach(task);
                task.Status = Status.Done;

                context2.SubmitChanges();
            }
        }
Esempio n. 19
0
        public void TestFixtureSetUp()
        {
            using (var db = new TrackerDataContext {Log = Console.Out})
            {
                var users = new List<User>
                {
                    new User
                    {
                        FirstName = "Testie McTester",
                        LastName = "The First",
                        PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                        PasswordSalt = "=Unc%",
                        EmailAddress = "*****@*****.**",
                        IsApproved = false
                    }, new User
                    {
                        FirstName = "Testie McTester",
                        LastName = "The Second",
                        PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                        PasswordSalt = "=Unc%",
                        EmailAddress = "*****@*****.**",
                        IsApproved = false
                    }, new User
                    {
                        FirstName = "Testie McTester",
                        LastName = "The Third",
                        PasswordHash = "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                        PasswordSalt = "=Unc%",
                        EmailAddress = "*****@*****.**",
                        IsApproved = false
                    }
                };

                var emails = users.Select(u => u.EmailAddress).ToArray();

                var existing = from u in db.User
                               where emails.Contains(u.EmailAddress)
                               select u;

                var existingUsers = existing.Select(u => u.Id).ToList();

                var testTasks = from t in db.Task
                                where existingUsers.Contains(t.CreatedId) 
                                    || existingUsers.Contains(t.AssignedId.Value)
                                select t;

                db.Task.Delete(testTasks);
                db.User.Delete(existing);

                db.User.InsertAllOnSubmit(users);
                db.SubmitChanges();
                
                UserIds = users.Select(u => u.Id).ToList();
                DueDates.Add(DateTime.Today.AddDays(1));
                DueDates.Add(DateTime.Today.AddDays(2));

                var tasks = new List<Task>();
                tasks.Add(new Task
                {
                    CreatedId = UserIds[0],
                    Priority = Priority.Normal,
                    Status = Status.NotStarted,
                    Summary = "Test",
                    AssignedId = null,
                    DueDate = null,
                    Details = null
                });
                tasks.Add(new Task
                {
                    CreatedId = UserIds[1],
                    Priority = Priority.Normal,
                    Status = Status.InProgress,
                    Summary = "Test",
                    AssignedId = UserIds[0],
                    DueDate = DueDates[0],
                    Details = String.Empty
                });
                tasks.Add(new Task
                {
                    CreatedId = UserIds[2],
                    Priority = Priority.High,
                    Status = Status.Completed,
                    Summary = "Test",
                    AssignedId = UserIds[1],
                    DueDate = DueDates[1],
                    Details = "Hello world!"
                });
                tasks.Add(new Task
                {
                    CreatedId = UserIds[2],
                    Priority = Priority.High,
                    Status = Status.Completed,
                    Summary = "Test",
                    AssignedId = UserIds[1],
                    DueDate = null,
                    Details = "Goodnight moon!"
                });

                db.Task.InsertAllOnSubmit(tasks);
                db.SubmitChanges();

                TaskIds = tasks.Select(t => t.Id).ToList();
                CreateDates = tasks.Select(t => t.CreatedDate).ToList();
            }
        }
 public void Test_Rules()
 {
     int brokenRules = 0;
     try
     {
         using (var db = new TrackerDataContext { Log = Console.Out })
         {
             User user = new User();
             user.EmailAddress = "*****@*****.**";
             db.User.InsertOnSubmit(user);
             db.SubmitChanges();
         }
     }
     catch (BrokenRuleException e)
     {
         brokenRules = e.BrokenRules.Count;
         Console.Write(e.ToString());
     }
     Assert.AreEqual(brokenRules, 5);
 }
        public void Test_Auditing()
        {
            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                var user = db.User.GetByKey(SpockId);
                user.Comment = "I love my mom, but I hate Winona Ryder.";

                var task = new Task()
                {
                    AssignedId = SpockId,
                    CreatedId = SpockId,
                    Status = Status.NotStarted,
                    Priority = Priority.High,
                    Summary = "Punch Kirk in the face!"
                };
                db.Task.InsertOnSubmit(task);
                db.SubmitChanges();
                Console.Write(db.LastAudit.ToXml());
            }
        }
 public void Test_Enum()
 {
     using (var db = new TrackerDataContext { Log = Console.Out })
     {
         var task = db.Task.GetByKey(TaskId);
         task.Priority = Priority.High;
         db.SubmitChanges();
     }
 }
 public void Test_Many_To_Many()
 {
     using (var db = new TrackerDataContext { Log = Console.Out })
     {
         User u = db.User.GetByKey(SpockId);
         Role r = db.Role.ByName("Manager").First();
         u.RoleList.Add(r);
         db.SubmitChanges();
     }
 }
        public void Test_Entity_Dirty_Attach()
        {
            Task task = null;
            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                task = db.Task.GetByKey(TaskId);
                task.Detach();
            }
            task.Status = Status.Done;
            Assert.IsFalse(task.IsAttached());

            // Let's update the task in a seperate DataContext.
            using (var db = new TrackerDataContext())
            {
                db.Log = Console.Out;

                var task2 = db.Task.GetByKey(TaskId);
                task2.Status = Status.InProgress;
                db.SubmitChanges();
            }

            // Attach the original task and send it to the database.
            using (var db = new TrackerDataContext())
            {
                db.Log = Console.Out;

                Assert.IsFalse(task.IsAttached());
                db.Task.Attach(task, true);
                db.Refresh(RefreshMode.KeepCurrentValues, task);
                Assert.IsTrue(task.IsAttached());
                db.SubmitChanges();
            }
        }
        public ActionResult EditPost(int id)
        {
            Task task = null;
            try
            {
                using (var db = new TrackerDataContext())
                {
                    var options = new DataLoadOptions();
                    options.LoadWith<Task>(t => t.CreatedUser);
                    db.LoadOptions = options;

                    task = db.Task.GetByKey(id);
                    UpdateModel(task);
                    db.SubmitChanges();

                    var audit = new Audit(db.LastAudit);
                    audit.Task = task;
                    db.Audit.InsertOnSubmit(audit);
                    db.SubmitChanges();
                }

                return RedirectToAction("Edit", new { id = task.Id });
            }
            catch (BrokenRuleException e)
            {
                foreach (BrokenRule rule in e.BrokenRules)
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                task.Detach();
                return View(GetData(task));
            }
        }