public async Task <bool> CopyDeckAsync(Guid userId, Guid deckId)
        {
            var deck = await deckRepository.FindByIdAsync(deckId);

            if (deck == null)
            {
                return(false);
            }

            var newDeck = new DeckEntity(userId, deck.Title);
            var result  = await deckRepository.InsertAsync(newDeck);

            var cards = await cardRepository.GetCardsByDeckAsync(deck.Id);

            if (result == null || cards == null)
            {
                return(false);
            }

            var tasks = cards.Select(c => Task.Run(() =>
                                                   cardRepository.InsertAsync(new CardEntity(result.Id, c.Question, c.Answer))
                                                   ));
            var results = await Task.WhenAll(tasks);

            return(results.All(c => c != null));
        }
Exemplo n.º 2
0
        public void ToToEntity_WithValidObject_ShouldBeExecuteCorrectly()
        {
            // Arrange
            var deck = new Deck(
                deckId: Guid.NewGuid(),
                nPlayers: _fixture.Create <int>(),
                playerTurn: _fixture.Create <int>(),
                lastCardValue: _fixture.Create <int>(),
                deckCardJson: "{}",
                cards: GenerateRandomCards(52).ToList());

            var expected = new DeckEntity()
            {
                DeckId        = deck.DeckId,
                NPlayers      = deck.NPlayers,
                PlayerTurn    = deck.PlayerTurn,
                LastCardValue = deck.LastCardValue,
                LastCardJson  = deck.LastCardJson,
                Cards         = deck.Cards.Select(a => a.ToEntity()).ToList(),
            };

            // Act
            var result = deck.ToEntity();

            // Assert
            result
            .Should()
            .BeEquivalentTo(expected);
        }
Exemplo n.º 3
0
        public async Task InsertAsync_ReturnsTheSameObject()
        {
            var expected = new DeckEntity(Guid.Empty, "d");

            var actual = await _repository.InsertAsync(expected);

            actual.Should().Be(expected);
        }
Exemplo n.º 4
0
        public async Task InsertAsync_SetsNewId()
        {
            var deck = new DeckEntity(Guid.Empty, "d");

            await _repository.InsertAsync(deck);

            deck.Id.Should().NotBeEmpty();
        }
Exemplo n.º 5
0
 public DeckModel Map(DeckEntity entity)
 {
     return(new DeckModel
     {
         Id = entity.Id,
         Title = entity.Title
     });
 }
Exemplo n.º 6
0
        /// <summary>
        /// Создать колоду.
        /// </summary>
        /// <param name="name">Имя колоды.</param>
        public async Task <Guid> Create(string name)
        {
            var deck = DeckEntity.GenerateDeck(name, _settings.CurrentValue.Size);

            var dto = MapDeckToDTO(Guid.NewGuid(), deck);
            await _storage.Add(dto);

            return(dto.Id);
        }
Exemplo n.º 7
0
        public async Task InsertAsync_SavesDeck()
        {
            var expected = new DeckEntity(Guid.NewGuid(), "new deck");

            await _repository.InsertAsync(expected);

            var actual = await _collection.Find(d => d.Id == expected.Id).FirstOrDefaultAsync();

            actual.Should().BeEquivalentTo(expected);
        }
Exemplo n.º 8
0
        public async Task UpdateAsync_ChangesDeck()
        {
            var old      = Decks[0];
            var expected = new DeckEntity(old.Id, old.UserId, "updated deck");

            await _repository.UpdateAsync(expected);

            var actual = await _collection.Find(d => d.Id == expected.Id).FirstOrDefaultAsync();

            actual.Should().BeEquivalentTo(expected);
        }
Exemplo n.º 9
0
        public void Update(DeckEntity entity, SqliteDatabase mdb = null)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("UPDATE deck SET ")

            .Append("id = ")

            .Append(entity.Id)

            .Append(",")

            .Append("display_name = ")
            .Append("'")
            .Append(entity.DisplayName)
            .Append("'")
            .Append(",")

            .Append("character1 = ")

            .Append(entity.Character1)

            .Append(",")

            .Append("character2 = ")

            .Append(entity.Character2)

            .Append(",")

            .Append("character3 = ")

            .Append(entity.Character3)

            .Append(",")

            .Append("leader = ")

            .Append(entity.Leader)



            .Append(" WHERE id = ")
            .Append(entity.Id)
            .Append(";");
            if (mdb == null)
            {
                DbManager.Instance.ExecuteNonQuery(sb.ToString());
            }
            else
            {
                DbManager.Instance.ExecuteNonQuery(sb.ToString(), mdb);
            }
        }
        public async Task <bool> UpdateDeckTitleAsync(Guid deckId, string title)
        {
            var deck = await deckRepository.FindByIdAsync(deckId);

            if (deck == null)
            {
                return(false);
            }
            var updatedDeck = new DeckEntity(deck.Id, deck.UserId, title);
            var result      = await deckRepository.UpdateAsync(updatedDeck);

            return(result != null);
        }
        public async Task <Guid?> AddDeckAsync(Guid userId)
        {
            var emptyDeck = new DeckEntity(userId, "");
            var deck      = await deckRepository.InsertAsync(emptyDeck);

            if (deck == null)
            {
                return(null);
            }

            var cardId = await AddCardAsync(deck.Id);

            return(cardId != null ? deck?.Id : null);
        }
Exemplo n.º 12
0
        public async Task <AddDeckPayload> AddDeckAsync(
            AddDeckInput input,
            [Service] MtgDbContext context)
        {
            var deck = new DeckEntity
            {
                Id     = Guid.NewGuid(),
                UserId = input.UserId,
                Name   = input.Name,
            };

            await context.Decks.AddAsync(deck);

            await context.SaveChangesAsync();

            return(new AddDeckPayload(input.ClientMutationId, deck));
        }
Exemplo n.º 13
0
        public void Insert(DeckEntity entity, SqliteDatabase mdb = null)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("INSERT INTO deck VALUES (")


            .Append(entity.Id)

            .Append(",")

            .Append("'")
            .Append(entity.DisplayName)
            .Append("'")
            .Append(",")


            .Append(entity.Character1)

            .Append(",")


            .Append(entity.Character2)

            .Append(",")


            .Append(entity.Character3)

            .Append(",")


            .Append(entity.Leader)



            .Append(");");
            if (mdb == null)
            {
                DbManager.Instance.ExecuteNonQuery(sb.ToString());
            }
            else
            {
                DbManager.Instance.ExecuteNonQuery(sb.ToString(), mdb);
            }
        }
Exemplo n.º 14
0
        //[Property(DisplayName = "Submitting default FollowDeckCommand _ displays validation error", Arbitrary = new[] { typeof(FollowButtonTestsArb) })]
        public bool _1(UserClaims userClaims, DeckWithFollowMeta deckWithFollowMeta, DeckEntity usersDefaultDeck)
        {
            Setup(Services, db => new UserEntity {
                Id            = userClaims.Id,
                DefaultDeckId = usersDefaultDeck.Id,
                Decks         = new List <DeckEntity> {
                    usersDefaultDeck
                }
            }.Pipe(db.User.Add));
            var counter = RenderComponent <FollowButtons>(
                (nameof(FollowButtons.Deck), deckWithFollowMeta),
                CascadingValue(Task.FromResult(userClaims))
                );

            counter.Find("form").Submit();

            return("'New Deck Name' must not be empty." == counter.Find(".validation-message").TextContent);
        }
Exemplo n.º 15
0
        private DeckEntity CreateEntity(DataRow row)
        {
            DeckEntity entity = new DeckEntity();

            entity.Id = DaoSupport.GetIntValue(row, "id");

            entity.DisplayName = DaoSupport.GetStringValue(row, "display_name");

            entity.Character1 = DaoSupport.GetIntValue(row, "character1");

            entity.Character2 = DaoSupport.GetIntValue(row, "character2");

            entity.Character3 = DaoSupport.GetIntValue(row, "character3");

            entity.Leader = DaoSupport.GetIntValue(row, "leader");

            return(entity);
        }
        public async Task <DeckEntity> UpdateAsync(DeckEntity deck)
        {
            await _deckCollection.ReplaceOneAsync(d => d.Id == deck.Id, deck);

            return(deck);
        }
        public async Task <DeckEntity> InsertAsync(DeckEntity deck)
        {
            await _deckCollection.InsertOneAsync(deck);

            return(deck);
        }
Exemplo n.º 18
0
 public AddDeckPayload(IReadOnlyList <UserError> errors, string?clientMutationId, DeckEntity deck)
     : base(errors, clientMutationId)
 {
     Deck = deck;
 }
Exemplo n.º 19
0
 public AddDeckPayload(string?clientMutationId, DeckEntity deck)
     : base(clientMutationId)
 {
     Deck = deck;
 }