// Creates the specified category assignment in the database
        public async Task <FormsCategoryAssignments> Add(FormsCategoryAssignments categoryAssignment)
        {
            _context.FormsCategoryAssignments.Add(categoryAssignment);
            await _context.SaveChangesAsync();

            return(categoryAssignment);
        }
        // Deletes the specified category assignment from the database
        public async Task <FormsCategoryAssignments> Delete(FormsCategoryAssignments categoryAssignment)
        {
            var category = await _context.FormsCategoryAssignments.FindAsync(categoryAssignment.FormId);

            _context.FormsCategoryAssignments.Remove(category);
            await _context.SaveChangesAsync();

            return(category);
        }
        public async Task <FormsCategoryAssignments> Update(FormsCategoryAssignments editedCategoryAssignment)
        {
            var categoryAssignment = await _context.FormsCategoryAssignments
                                     .Where(ca => ca.FormId == editedCategoryAssignment.FormId)
                                     .FirstOrDefaultAsync();

            categoryAssignment.CategoryId            = editedCategoryAssignment.CategoryId;
            categoryAssignment.FormId                = editedCategoryAssignment.FormId;
            _context.Entry(categoryAssignment).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(categoryAssignment);
        }
        public async Task AddCategoryAssignmentAsync_CategoryAssignmentIsAdded()
        {
            // Arrange
            var catId  = 5;
            var formId = 1;
            var expectedFormsCategoryAssignment = new FormsCategoryAssignments()
            {
                CategoryId = catId, FormId = formId
            };

            // Act
            await service.Add(expectedFormsCategoryAssignment);

            // Assert
            var actualFormsCategoryAssignment = await db.FormsCategoryAssignments.FindAsync(formId);

            Assert.Equal(expectedFormsCategoryAssignment, actualFormsCategoryAssignment);
        }
        public async Task GetCategoryAssignmentAsync_CategoryAssignmentIsReturned()
        {
            // Arrange
            var catId  = 2;
            var formId = 1;
            var expectedCategoryAssignment = new FormsCategoryAssignments()
            {
                CategoryId = catId, FormId = formId
            };
            await db.AddRangeAsync(expectedCategoryAssignment);

            await db.SaveChangesAsync();

            // Act
            await service.Get(catId);

            // Assert
            var actualCategoryAssignment = await db.FormsCategoryAssignments.FindAsync(formId);

            Assert.Equal(expectedCategoryAssignment, actualCategoryAssignment);
        }
        public async Task DeleteCategoryAssignmentAsync_CategoryAssignmentIsDeleted()
        {
            // Arrange
            await db.AddRangeAsync(seedFormsCategoryAssignments);

            await db.SaveChangesAsync();

            var recId = 3;
            var deletedFormsCategoryAssignments = new FormsCategoryAssignments()
            {
                FormId = 3
            };
            var expectedFormsCategoryAssignments = seedFormsCategoryAssignments.Where(c => c.CategoryId != recId).ToList();

            // Act
            await service.Delete(deletedFormsCategoryAssignments);

            // Assert
            var actualFormsCategoryAssignments = await db.FormsCategoryAssignments.ToListAsync();

            Assert.Equal(
                expectedFormsCategoryAssignments.OrderBy(c => c.CategoryId).Select(c => c.CategoryId),
                actualFormsCategoryAssignments.OrderBy(c => c.CategoryId).Select(c => c.CategoryId));
        }