public async Task GetProjectGroupsAsync_ProjectNotFound_NotFoundError()
        {
            // Arrange
            var cxn         = new SqlConnectionWrapperMock();
            var repository  = new SqlGroupRepository(cxn.Object);
            var projectId   = 1;
            var tabularData = new TabularData
            {
                Pagination = new Pagination {
                    Limit = 10, Offset = 0
                },
                Sorting = new Sorting {
                    Order = SortOrder.Asc, Sort = "name"
                }
            };
            int errorCode = 50016; // there are no project for this projectId

            Group[] projectGroups = { };

            cxn.SetupQueryAsync("GetAvailableGroupsForProject",
                                new Dictionary <string, object> {
                { "projectId", projectId }
            },
                                projectGroups,
                                new Dictionary <string, object> {
                { "ErrorCode", errorCode }
            });

            // Act
            await repository.GetProjectGroupsAsync(projectId, tabularData);
        }
        public async Task GetProjectGroupsAsync_GroupsFound_NoErrors()
        {
            // Arrange
            var cxn        = new SqlConnectionWrapperMock();
            var repository = new SqlGroupRepository(cxn.Object);
            var projectId  = 100;
            int errorCode  = 0;

            Group[] projectGroups =
            {
                new Group()
                {
                    Name = "Group1"
                },
                new Group()
                {
                    Name = "Group2"
                },
                new Group()
                {
                    Name = "Group3"
                }
            };

            var tabularData = new TabularData
            {
                Pagination = new Pagination {
                    Limit = 10, Offset = 0
                },
                Sorting = new Sorting {
                    Order = SortOrder.Asc, Sort = "name"
                }
            };

            cxn.SetupQueryAsync("GetAvailableGroupsForProject",
                                new Dictionary <string, object> {
                { "projectId", projectId }
            },
                                projectGroups,
                                new Dictionary <string, object> {
                { "ErrorCode", errorCode }
            });

            // Act
            await repository.GetProjectGroupsAsync(projectId, tabularData, SortingHelper.SortProjectGroups);

            // Assert
            cxn.Verify();
        }