public void CanSearchMateWithCategoriesAddressAndRankTest()
        {
            IMateDAO <Mate> MateDAO = new MateDAO(_connection);

            Mate firstMate = new Mate();

            firstMate.FirstName   = "Marcelo";
            firstMate.LastName    = "Carvalho";
            firstMate.UserName    = "******";
            firstMate.Password    = "******";
            firstMate.Email       = "*****@*****.**";
            firstMate.Description = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
            firstMate.Address     = "Sra. Aparecida, Lousada";
            firstMate.Categories  = new[] { Categories.CLEANING, Categories.ELECTRICITY };
            firstMate.Rank        = Ranks.MATE;
            firstMate.Range       = 50;

            Mate returnedFirst = MateDAO.Create(firstMate);

            Mate secondMate = new Mate();

            secondMate.FirstName   = "Samuel";
            secondMate.LastName    = "Cunha";
            secondMate.UserName    = "******";
            secondMate.Password    = "******";
            secondMate.Email       = "*****@*****.**";
            secondMate.Description = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
            secondMate.Address     = "Rua de Salgueiros, Penafiel";
            secondMate.Categories  = new[] { Categories.GARDENING, Categories.FURNITURE_ASSEMBLE };
            secondMate.Range       = 20;

            Mate returnedSecond = MateDAO.Create(secondMate);

            MateDAO.UpdateRank(Ranks.SUPER_MATE, returnedSecond.Id);

            Categories[] categories = { Categories.CLEANING, Categories.GARDENING };
            string       myAddress  = "Rua de Salgueiros, Penafiel";

            List <Mate> mates = MateDAO.GetMates(categories, myAddress, Ranks.SUPER_MATE, null, null);

            Mate[] matesArray = mates.ToArray();

            Assert.Equal(returnedSecond.FirstName, matesArray[0].FirstName);
            Assert.Equal(returnedSecond.LastName, matesArray[0].LastName);
            Assert.Equal(returnedSecond.UserName, matesArray[0].UserName);
            Assert.Equal(returnedSecond.Email, matesArray[0].Email);
            Assert.Equal(returnedSecond.Description, matesArray[0].Description);
            Assert.Equal(returnedSecond.Address, matesArray[0].Address);
            Assert.Equal(returnedSecond.Categories, matesArray[0].Categories);
            Assert.Equal(Ranks.SUPER_MATE, matesArray[0].Rank);
            Assert.Equal(returnedSecond.Range, matesArray[0].Range);

            Assert.Single(matesArray);

            _fixture.Dispose();
        }