Example #1
0
        public void TestFindNotesByRegion()
        {
            INoteAccessor accessor     = this._provider.GetService <INoteAccessor>();
            IUserAccessor userAccessor = this._provider.GetService <IUserAccessor>();

            var ian  = userAccessor.FindUser("ian");
            var zach = userAccessor.FindUser("zach");

            Assert.Equal(3, accessor.FindNotes(_campus, ian).Count);
            Assert.Equal(0, accessor.FindNotes(_bottoms, ian).Count);
            Assert.Equal(5, accessor.FindNotes(_lincoln, ian).Count);
            Assert.Equal(0, accessor.FindNotes(_south, ian).Count);

            Assert.Equal(0, accessor.FindNotes(_campus, zach).Count);
            Assert.Equal(2, accessor.FindNotes(_bottoms, zach).Count);
            Assert.Equal(2, accessor.FindNotes(_lincoln, zach).Count);
            Assert.Equal(0, accessor.FindNotes(_south, zach).Count);

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.FindNotes(null, ian);
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.FindNotes(_campus, null);
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.FindNotes(null, null);
            });
        }
Example #2
0
        public void TestFindNotesByUser()
        {
            INoteAccessor accessor     = this._provider.GetService <INoteAccessor>();
            IUserAccessor userAccessor = this._provider.GetService <IUserAccessor>();

            var ian      = userAccessor.FindUser("ian");
            var ianNotes = accessor.FindNotes(ian);

            var zach      = userAccessor.FindUser("zach");
            var zachNotes = accessor.FindNotes(zach);

            Assert.Equal(5, ianNotes.Count);
            Assert.Equal(2, zachNotes.Count);

            Assert.Throws <ArgumentException>(() => { accessor.FindNotes((Contracts.DTO.User)null); });
        }
Example #3
0
        public void TestAddUser()
        {
            IUserAccessor      accessor = this._provider.GetService <IUserAccessor>();
            IUnitOfWork        uow      = this._provider.GetService <IUnitOfWork>();
            PersistenceContext context  = this._provider.GetService <PersistenceContext>();

            Assert.Equal(3, context.Users.Count());

            var user = new Contracts.DTO.User()
            {
                AvatarUrl = @"http://www.google.com",
                Email     = "*****@*****.**",
                FirstName = "Test",
                LastName  = "User",
                Location  = "Any Place, USA"
            };

            user = accessor.AddUser(user);
            uow.Commit();

            Assert.Equal(4, context.Users.Count());
            var users = context.Users.ToList();

            Assert.Equal("Any Place, USA", context.Users.Where(u => u.UserId == user.UserId)
                         .FirstOrDefault().Location);

            Assert.Equal(user, accessor.FindUser(user.UserId));

            /* Test some bad data */
            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddUser(null);
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddUser(new Contracts.DTO.User()
                {
                    FirstName = "Bad",
                    LastName  = "User"
                });
            });

            /* Test entry of a user with an already existing ID */
            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddUser(new Contracts.DTO.User()
                {
                    FirstName = "Bad",
                    LastName  = "User",
                    Location  = "Death Valley",
                    Email     = "*****@*****.**",
                    UserId    = "bill"
                });
            });
        }
Example #4
0
        public void TestFindPinsByBox()
        {
            INoteAccessor accessor     = this._provider.GetService <INoteAccessor>();
            IUserAccessor userAccessor = this._provider.GetService <IUserAccessor>();

            var ian  = userAccessor.FindUser("ian");
            var zach = userAccessor.FindUser("zach");

            var kauf         = accessor.FindPin("kauf");
            var destinations = accessor.FindPin("dest");
            var fuse         = accessor.FindPin("fuse");

            Assert.Equal(1, accessor.FindPins(_campus, ian).Count);
            Assert.Equal(0, accessor.FindPins(_bottoms, ian).Count);
            Assert.Equal(2, accessor.FindPins(_lincoln, ian).Count);
            Assert.Equal(0, accessor.FindPins(_south, ian).Count);

            Assert.Equal(0, accessor.FindPins(_campus, zach).Count);
            Assert.Equal(1, accessor.FindPins(_bottoms, zach).Count);
            Assert.Equal(1, accessor.FindPins(_lincoln, zach).Count);
            Assert.Equal(0, accessor.FindPins(_south, zach).Count);

            var ianPins = accessor.FindPins(_lincoln, ian);

            Assert.True(ianPins.Contains(kauf));
            Assert.True(ianPins.Contains(fuse));

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.FindPins(null, ian);
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.FindPins(_campus, null);
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.FindPins(null, null);
            });
        }
Example #5
0
        public void TestFindUser()
        {
            IUserAccessor accessor = this._provider.GetService <IUserAccessor>();

            var ian  = accessor.FindUser("ian");
            var bill = accessor.FindUser("bill");

            Assert.NotEqual(ian, bill);

            Assert.Equal("Ian", ian.FirstName);
            Assert.Equal("Cottingham", ian.LastName);
            Assert.Equal("Seattle, WA", bill.Location);
            Assert.Equal("Lincoln, NE", ian.Location);
            Assert.Equal("Gates", bill.LastName);

            var otherian = accessor.FindUserByEmail("*****@*****.**");

            Assert.NotNull(otherian);
            Assert.Equal(ian, otherian);
            Assert.NotEqual(bill, otherian);
        }
Example #6
0
        public void TestFindPinsByUser()
        {
            INoteAccessor accessor     = this._provider.GetService <INoteAccessor>();
            IUserAccessor userAccessor = this._provider.GetService <IUserAccessor>();

            var ian  = userAccessor.FindUser("ian");
            var zach = userAccessor.FindUser("zach");

            var kauf         = accessor.FindPin("kauf");
            var destinations = accessor.FindPin("dest");
            var fuse         = accessor.FindPin("fuse");

            var ianPins  = accessor.FindPins(ian);
            var zachPins = accessor.FindPins(zach);

            Assert.Equal(2, ianPins.Count);
            Assert.True(ianPins.Contains(kauf));
            Assert.True(ianPins.Contains(fuse));
            Assert.True(zachPins.Contains(destinations));

            Assert.Throws <ArgumentException>(() => { accessor.FindPins(null); });
        }
Example #7
0
        public void TestAddNote()
        {
            INoteAccessor      accessor     = this._provider.GetService <INoteAccessor>();
            IUserAccessor      userAccessor = this._provider.GetService <IUserAccessor>();
            PersistenceContext context      = this._provider.GetService <PersistenceContext>();
            IUnitOfWork        unit         = this._provider.GetService <IUnitOfWork>();

            var pin = accessor.FindPin("kauf");
            var ian = userAccessor.FindUser("ian");

            Assert.Equal(7, context.Notes.Count());
            Assert.Equal(5, accessor.FindNotes(ian).Count);

            accessor.AddNote(new Contracts.DTO.Note()
            {
                Added     = DateTime.Now,
                BelongsTo = pin.PinId,
                Content   = "Testing software late at night, stupid Raikes School curriculum"
            });

            unit.Commit();

            Assert.Equal(8, context.Notes.Count());

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddNote(null);
                unit.Commit();
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddNote(new Contracts.DTO.Note()
                {
                    NoteId    = "TN4",
                    Content   = "Bad note - duplicate ID",
                    BelongsTo = pin.PinId
                });
                unit.Commit();
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddNote(new Contracts.DTO.Note()
                {
                    Content = "Bad note - no pin"
                });
                unit.Commit();
            });
        }
Example #8
0
        public void TestRemovePin()
        {
            INoteAccessor      accessor     = this._provider.GetService <INoteAccessor>();
            IUserAccessor      userAccessor = this._provider.GetService <IUserAccessor>();
            PersistenceContext context      = this._provider.GetService <PersistenceContext>();
            IUnitOfWork        unit         = this._provider.GetService <IUnitOfWork>();

            var ian = userAccessor.FindUser("ian");

            var ianPins = accessor.FindPins(ian);

            Assert.Equal(2, ianPins.Count);
            Assert.Equal(3, context.Pins.Count());

            accessor.RemovePin(ianPins.First());
            unit.Commit();

            Assert.Equal(2, context.Pins.Count());
            ianPins = accessor.FindPins(ian);

            Assert.Equal(1, ianPins.Count);

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.RemovePin(null);
                unit.Commit();
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.RemovePin(new Contracts.DTO.Pin());
                unit.Commit();
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.RemovePin(new Contracts.DTO.Pin()
                {
                    PinId = "NOTAREALPIN"
                });
                unit.Commit();
            });
        }
Example #9
0
 public Models.User FindUser(string ID)
 {
     return(_acc.FindUser(ID));
 }
Example #10
0
        private void _UpdateUserAchievements(Activity activity, String uid)
        {
            var user        = _uAcc.FindUser(uid);
            var oldDistance = user.LifetimeDistance;
            var oldDuration = user.LifetimeDuration;
            var oldSteps    = user.LifetimeSteps;
            var newDistance = oldDistance + activity.Distance;
            var newDuration = oldDuration + activity.Duration;
            var newSteps    = oldSteps + activity.Steps;

            user.LifetimeDistance = newDistance;
            user.LifetimeDuration = newDuration;
            user.LifetimeSteps    = newSteps;
            _uAcc.UpdateUser(user);

            foreach (Badge b in _bAcc.GetBadges())
            {
                bool justEarned = false;
                switch (b.Field)
                {
                case Field.DISTANCE:
                    justEarned = (oldDistance < b.Threshold && newDistance >= b.Threshold);
                    break;

                case Field.DURATION:
                    justEarned = oldDuration < b.Threshold && newDuration >= b.Threshold;
                    break;

                case Field.STEPS:
                    justEarned = oldSteps < b.Threshold && newSteps >= b.Threshold;
                    break;
                }
                if (justEarned)
                {
                    _ubAcc.CreateUserBadge(new UserBadge()
                    {
                        BadgeID       = b.ID,
                        DateCompleted = DateTime.Now,
                        UserID        = user.Id,
                    });
                }
            }

            foreach (Goal b in _gAcc.GetGoals()) // TODO The duplication here feels bad; is there some clean way to give goals and badges the same interface/prevent this?
            {
                bool justEarned = false;
                switch (b.Field)
                {
                case Field.DISTANCE:
                    justEarned = (oldDistance < b.Threshold && newDistance >= b.Threshold);
                    break;

                case Field.DURATION:
                    justEarned = oldDuration < b.Threshold && newDuration >= b.Threshold;
                    break;

                case Field.STEPS:
                    justEarned = oldSteps < b.Threshold && newSteps >= b.Threshold;
                    break;
                }
                if (justEarned)
                {
                    var ug = _ugAcc.GetUserGoal(b.ID, uid);
                    if (ug != null)
                    {
                        ug.DateCompleted = DateTime.Now;
                        _ugAcc.UpdateUserGoal(ug);
                    }
                }
            }
        }
Example #11
0
        public void TestAddPin()
        {
            INoteAccessor      accessor     = this._provider.GetService <INoteAccessor>();
            IUserAccessor      userAccessor = this._provider.GetService <IUserAccessor>();
            PersistenceContext context      = this._provider.GetService <PersistenceContext>();
            IUnitOfWork        unit         = this._provider.GetService <IUnitOfWork>();

            Assert.Equal(3, context.Pins.Count());

            var zach = userAccessor.FindUser("zach");

            accessor.AddPin(new Contracts.DTO.Pin()
            {
                BelongsTo = zach.UserId,
                Latitude  = _lincoln.North,
                Longitude = _lincoln.East,
                Name      = "Lincoln NE"
            });
            unit.Commit();

            Assert.Equal(4, context.Pins.Count());

            var zachPins = accessor.FindPins(zach);

            Assert.Equal(2, zachPins.Count);

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddPin(null);
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddPin(new Contracts.DTO.Pin()
                {
                    PinId     = "kauf",
                    BelongsTo = zach.UserId,
                    Latitude  = 0,
                    Longitude = 0,
                    Name      = "Bad pin - duplicate"
                });
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddPin(new Contracts.DTO.Pin()
                {
                    Latitude  = 0,
                    Longitude = 0,
                    Name      = "Bad pin - no owner"
                });
            });

            Assert.Throws <ArgumentException>(() =>
            {
                accessor.AddPin(new Contracts.DTO.Pin()
                {
                    BelongsTo = zach.UserId,
                    Name      = "Bad pin - no coordinates"
                });
            });
        }