コード例 #1
0
ファイル: ItemTests.cs プロジェクト: SamirHafez/RaffleIt
            public void ShouldCreateAnItem()
            {
                using (var context = new Context())
                {
                    var account = new UserProfile
                    {
                        UserName = "******",
                    };

                    context.UserProfiles.Add(account);

                    context.SaveChanges();

                    var item = new Item
                    {
                        Name = "p1",
                        Description = "p1 description",
                        Price = 100,
                        OwnerId = account.UserId
                    };

                    account.Items.Add(item);

                    context.SaveChanges();

                    Assert.True(item.Id > 0);
                    Assert.Equal(100, item.Price);
                    Assert.Equal(account.UserId, item.OwnerId);
                }
            }
コード例 #2
0
ファイル: ItemManager.cs プロジェクト: SamirHafez/RaffleIt
        private void ValidateTransaction(UserProfile buyer)
        {
            if (!this.item.CanBuy)
                throw new InvalidOperationException();

            if (this.item.OwnerId == buyer.UserId)
                throw new InvalidOperationException();
        }
コード例 #3
0
ファイル: ItemManager.cs プロジェクト: SamirHafez/RaffleIt
        public Raffle.Models.Raffle BuyRaffle(UserProfile buyer)
        {
            lock (this.item)
            {
                ValidateTransaction(buyer);

                Raffle.Models.Raffle raffle = ExecuteTransaction(buyer);

                if (!this.item.CanBuy)
                    SetWinner();

                return raffle;
            }
        }
コード例 #4
0
ファイル: ItemManager.cs プロジェクト: SamirHafez/RaffleIt
        private Raffle.Models.Raffle ExecuteTransaction(UserProfile buyer)
        {
            int mostRecentRaffleNumber = this.item.Raffles.OrderByDescending(r => r.RaffleNumber)
                                                              .Select(r => r.RaffleNumber)
                                                              .FirstOrDefault();

            var raffle = new Raffle.Models.Raffle
            {
                ItemId = this.item.Id,
                UserProfileId = buyer.UserId,
                RaffleNumber = mostRecentRaffleNumber + 1,
                PurchasedAt = DateTime.Now
            };

            this.item.Raffles.Add(raffle);

            return raffle;
        }
コード例 #5
0
            public void ShouldCreateAnAccount()
            {
                using (var context = new Context())
                {
                    var account = new UserProfile
                    {
                        UserName = "******",
                    };

                    context.UserProfiles.Add(account);

                    context.SaveChanges();

                    Assert.True(account.UserId > 0);

                    Assert.True(account.Items.Count == 0);
                    Assert.True(account.Raffles.Count == 0);

                    Assert.True(account.Reputation == 0);
                }
            }
コード例 #6
0
            private void Setup()
            {
                owner = new UserProfile
                {
                    UserId = 1,
                    UserName = "******",
                };

                buyer = new UserProfile
                {
                    UserId = 2,
                    UserName = "******",
                };

                item = new Item
                {
                    Id = 1,
                    Name = "p1",
                    Description = "p1 description",
                    Price = 100,
                    OwnerId = owner.UserId
                };
            }