Ejemplo n.º 1
0
        public async Task DeckDoesNotExist()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            using var dbContext = new MemCheckDbContext(db);
            var request = new UpdateDeck.Request(user, Guid.NewGuid(), RandomHelper.String(), 0);
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request));
        }
Ejemplo n.º 2
0
        async public Task <IActionResult> Update([FromBody] UpdateRequest request)
        {
            CheckBodyParameter(request);
            var userId = await UserServices.UserIdFromContextAsync(HttpContext, userManager);

            var appRequest = new UpdateDeck.Request(userId, request.DeckId, request.Description.Trim(), request.HeapingAlgorithmId);

            return(Ok(await new UpdateDeck(callContext).RunAsync(appRequest)));
        }
Ejemplo n.º 3
0
        public async Task NameTooLong()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            var deck = await DeckHelper.CreateAsync(db, user);

            using var dbContext = new MemCheckDbContext(db);
            var request = new UpdateDeck.Request(user, deck, RandomHelper.String(QueryValidationHelper.DeckMaxNameLength + 1), 0);
            await Assert.ThrowsExceptionAsync <RequestInputException>(async() => await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request));
        }
Ejemplo n.º 4
0
        public async Task NameNotTrimmed()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            var deck = await DeckHelper.CreateAsync(db, user);

            using var dbContext = new MemCheckDbContext(db);
            var request = new UpdateDeck.Request(user, deck, RandomHelper.String() + '\t', 0);
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request));
        }
Ejemplo n.º 5
0
        public async Task InexistentAlgorithm()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            var deck = await DeckHelper.CreateAsync(db, user);

            using var dbContext = new MemCheckDbContext(db);
            var request = new UpdateDeck.Request(user, deck, RandomHelper.String(), RandomHelper.ValueNotInSet(HeapingAlgorithms.Instance.Ids));
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request));
        }
Ejemplo n.º 6
0
        public async Task UserNotOwner()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            var deck = await DeckHelper.CreateAsync(db, user);

            var otherUser = await UserHelper.CreateInDbAsync(db);

            using var dbContext = new MemCheckDbContext(db);
            var request = new UpdateDeck.Request(otherUser, deck, RandomHelper.String(), RandomHelper.HeapingAlgorithm());
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request));
        }
Ejemplo n.º 7
0
        public async Task DeckWithThisNameExists()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            var deck = await DeckHelper.CreateAsync(db, user);

            var otherDeckName = RandomHelper.String();
            await DeckHelper.CreateAsync(db, user, otherDeckName);

            using var dbContext = new MemCheckDbContext(db);
            var request = new UpdateDeck.Request(user, deck, otherDeckName, RandomHelper.HeapingAlgorithm());
            await Assert.ThrowsExceptionAsync <RequestInputException>(async() => await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request));
        }
Ejemplo n.º 8
0
        public async Task FieldsCorrectlyUpdated()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            var deck = await DeckHelper.CreateAsync(db, user);

            var newName = RandomHelper.String();
            int newAlgo = RandomHelper.HeapingAlgorithm();
            var request = new UpdateDeck.Request(user, deck, newName, newAlgo);

            using (var dbContext = new MemCheckDbContext(db))
                await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request);

            using (var dbContext = new MemCheckDbContext(db))
            {
                var deckFromDb = await dbContext.Decks.SingleAsync(d => d.Id == deck);

                Assert.AreEqual(newName, deckFromDb.Description);
                Assert.AreEqual(newAlgo, deckFromDb.HeapingAlgorithmId);
            }
        }
Ejemplo n.º 9
0
        public async Task FieldsNotAltered()
        {
            var db   = DbHelper.GetEmptyTestDB();
            var user = await UserHelper.CreateInDbAsync(db);

            var deck = await DeckHelper.CreateAsync(db, user);

            var card = await CardHelper.CreateAsync(db, user);

            await DeckHelper.AddCardAsync(db, deck, card.Id);

            var request = new UpdateDeck.Request(user, deck, RandomHelper.String(), RandomHelper.HeapingAlgorithm());

            using (var dbContext = new MemCheckDbContext(db))
                await new UpdateDeck(dbContext.AsCallContext()).RunAsync(request);

            using (var dbContext = new MemCheckDbContext(db))
            {
                var deckFromDb = await dbContext.Decks.Include(d => d.Owner).Include(d => d.CardInDecks).SingleAsync(d => d.Id == deck);

                Assert.AreEqual(user, deckFromDb.Owner.Id);
                Assert.AreEqual(card.Id, deckFromDb.CardInDecks.Single().CardId);
            }
        }
Ejemplo n.º 10
0
 async public Task <IActionResult> Update([FromBody] UpdateDeck.Request deck)
 {
     return(Ok(await new UpdateDeck(dbContext).RunAsync(deck)));
 }