public void ThrowErrorAndNotConvertIfObjIdIsNotValid()
        {
            var act = Assert.Throws <BadRequestException>(() => MongoEntity.ValidateAndParseObjId("AnyId"));

            var expect = new {
                statusCode = HttpStatusCode.BadRequest,
                message    = "BadRequest id: AnyId is not valid"
            };

            var obj1Str = JsonConvert.SerializeObject(expect);
            var obj2Str = JsonConvert.SerializeObject(act.HttpErrorResponse);

            Assert.Equal("BadRequest id: AnyId is not valid", act.Message);
            Assert.Equal(obj1Str, obj2Str);
        }
        public async Task <ActionResult <IEnumerable <Product> > > GetById(string id)
        {
            try
            {
                var objId   = MongoEntity.ValidateAndParseObjId(id);
                var product = await _repository.FindById(objId);

                return(Ok(product));
            }
            catch (BadRequestException e)
            {
                return(BadRequest(e.HttpErrorResponse));
            }
            catch (NotFoundException e)
            {
                return(NotFound(e.HttpErrorResponse));
            }
            catch (Exception)
            {
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
        }
        public async Task <ActionResult <Product> > Put(string id, [FromBody] ProductDTO dto)
        {
            try
            {
                var objId           = MongoEntity.ValidateAndParseObjId(id);
                var product         = new Product(objId, dto);
                var returnedProduct = await _repository.UpdateById(product);

                return(Ok(returnedProduct));
            }
            catch (BadRequestException e)
            {
                return(BadRequest(e.HttpErrorResponse));
            }
            catch (NotFoundException e)
            {
                return(NotFound(e.HttpErrorResponse));
            }
            catch (Exception)
            {
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
        }
        public void ConvertObjIdIfIsValid()
        {
            var act = MongoEntity.ValidateAndParseObjId(STR_ID);

            Assert.IsType <ObjectId>(act);
        }