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); } }
private void ValidateTransaction(UserProfile buyer) { if (!this.item.CanBuy) throw new InvalidOperationException(); if (this.item.OwnerId == buyer.UserId) throw new InvalidOperationException(); }
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; } }
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; }
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); } }
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 }; }