public void GetDatabase_DatabaseServiceThrowsExceptions_ReturnsValidResults()
        {
            // Arrange
            string dbName = "testDatabase";

            Dictionary <Exception, Type> resultsDictionary = new Dictionary <Exception, Type>
            {
                { new ArgumentException(), typeof(BadRequestResult) },
                { new DbServiceException(), typeof(InternalServerErrorResult) }
            };

            foreach (KeyValuePair <Exception, Type> result in resultsDictionary)
            {
                // Arrange - mock dbService
                this._dbServiceMock.Setup(s => s.GetDatabase(dbName))
                .Throws(result.Key);

                // Arrange - create target
                DatabaseApiController target = new DatabaseApiController(this._dbServiceMock.Object);

                // Act
                IHttpActionResult actionResult = target.GetDatabase(dbName);

                // Assert
                Assert.IsInstanceOf(result.Value, actionResult);
            }
        }
        public void GetDatabase_DatabaseServiceReturnsDatabase_ReturnsDatabaseDto()
        {
            // Arrange
            Database database = new Database
            {
                Name = "someDatabase", Tables = { { "firstTable", new Table() }, { "secondTable", new Table() } }
            };

            DatabaseDto dbDto = new DatabaseDto {
                Name = database.Name, TableNames = database.Tables.Keys
            };

            // Arrange - mock dbService
            this._dbServiceMock.Setup(s => s.GetDatabase(database.Name))
            .Returns(database);

            // Arrange - create target
            DatabaseApiController target = new DatabaseApiController(this._dbServiceMock.Object);

            // Act
            IHttpActionResult actionResult = target.GetDatabase(database.Name);
            OkNegotiatedContentResult <DatabaseDto> contentResult = actionResult as OkNegotiatedContentResult <DatabaseDto>;

            // Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);

            Assert.AreEqual(dbDto.Name, contentResult.Content.Name);
            Assert.AreEqual(dbDto.TableNames, contentResult.Content.TableNames);
        }
        public void GetDatabase_DatabaseServiceReturnsNull_ReturnsNotFoundResult()
        {
            // Arrange
            string dbName = "testDatabase";

            // Arrange - mock dbService
            this._dbServiceMock.Setup(s => s.GetDatabase(dbName))
            .Returns((Database)null);

            // Arrange - create target
            DatabaseApiController target = new DatabaseApiController(this._dbServiceMock.Object);

            // Act
            IHttpActionResult actionResult = target.GetDatabase(dbName);

            // Assert
            Assert.IsInstanceOf <NotFoundResult>(actionResult);
        }