Example #1
0
        public void GetRecommendations_ReturnOnlyFiveMatchingBeers_5()
        {
            //Arrange
            User newUser = new User("Bob");

            newUser.Save();
            Beer beer1 = new Beer("Beer One", 5.0, 5.0);

            beer1.Save();
            Beer beer2 = new Beer("Beer Two", 5.0, 5.0);

            beer2.Save();
            Beer beer3 = new Beer("Beer Three", 5.0, 5.0);

            beer3.Save();
            Beer beer4 = new Beer("Beer Four", 5.0, 5.0);

            beer4.Save();
            Beer beer5 = new Beer("Beer Five", 5.0, 5.0);

            beer5.Save();
            Beer beer6 = new Beer("Beer Six", 5.0, 5.0);

            beer6.Save();
            Beer beer7 = new Beer("Beer Seven", 5.0, 5.0);

            beer7.Save();

            //Act
            List <Beer> recommendedBeers = newUser.GetRecommendations(beer1.GetId());

            //Assert
            Assert.Equal(5, recommendedBeers.Count);
        }
Example #2
0
        public void RateBeer_ChangeRating_4()
        {
            //Arrange
            User newUser = new User("Bob");
            Beer newBeer = new Beer("Alpha IPA", 6.8, 70.0);

            newUser.Save();
            newBeer.Save();

            //Act
            newUser.RateBeer(newBeer.GetId(), 5);
            newUser.RateBeer(newBeer.GetId(), 4);
            float testRating = newBeer.GetRating();

            //Assert
            Assert.Equal(4.0, testRating);
        }
Example #3
0
        public void GetRating_GetAverageRatingForBeer_3()
        {
            //Arrange
            Beer newBeer = new Beer("Alpha IPA", 6.8, 70.0);
            User user1   = new User("Bob");
            User user2   = new User("Fred");

            newBeer.Save();
            user1.Save();
            user2.Save();

            //Act
            user1.RateBeer(newBeer.GetId(), 4);
            user2.RateBeer(newBeer.GetId(), 2);

            //Assert
            Assert.Equal(3.00F, newBeer.GetRating());
        }
Example #4
0
        public void DeleteBeer_RemoveSingleBeerFromDB_0()
        {
            //Arrange
            Beer newBeer = new Beer("Alpha IPA", 6.8, 70.0);

            //Act
            newBeer.Save();
            Beer.DeleteBeer(newBeer.GetId());
            List <Beer> allBeers = Beer.GetAll();

            //Assert
            Assert.Equal(0, allBeers.Count);
        }
Example #5
0
        public void ChangeName_UpdateSingleBeerDetails_EquivalentBeer()
        {
            //Arrange
            Beer expectedBeer = new Beer("Alpha IPA", 6.8, 70.0);

            //Act
            expectedBeer.Save();
            expectedBeer.Update("Beta IPA", 7.0, 70.0);
            Beer foundBeer = Beer.Find(expectedBeer.GetId());

            //Assert
            Assert.Equal(expectedBeer, foundBeer);
        }
Example #6
0
        public void GetRecommendations_ReturnOnlytenMatchingBeers_10()
        {
            //Arrange
            User newUser = new User("Bob");

            newUser.Save();
            Beer beer1 = new Beer("Beer One", 5.0, 5.0);

            beer1.Save();
            Beer beer2 = new Beer("Beer Two", 5.0, 5.0);

            beer2.Save();
            Beer beer3 = new Beer("Beer Three", 5.0, 5.0);

            beer3.Save();
            Beer beer4 = new Beer("Beer Four", 5.0, 5.0);

            beer4.Save();
            Beer beer5 = new Beer("Beer Five", 5.0, 5.0);

            beer5.Save();
            Beer beer6 = new Beer("Beer Six", 5.0, 5.0);

            beer6.Save();
            Beer beer7 = new Beer("Beer Seven", 5.0, 5.0);

            beer7.Save();
            Beer beer8 = new Beer("Beer Eight", 5.0, 5.0);

            beer8.Save();
            Beer beer9 = new Beer("Beer Nine", 5.0, 5.0);

            beer9.Save();
            Beer beer10 = new Beer("Beer Ten", 5.0, 5.0);

            beer10.Save();
            Beer beer11 = new Beer("Beer Eleven", 5.0, 5.0);

            beer11.Save();
            Beer beer12 = new Beer("Beer Twelve", 5.0, 5.0);

            beer12.Save();

            //Act
            List <Beer> recommendedBeers = newUser.GetRecommendations(beer1.GetId(), 10);

            //Assert
            Assert.Equal(10, recommendedBeers.Count);
        }
Example #7
0
        public void Find_GetSingleBeerFromDB_EquivalentBeer()
        {
            //Arrange
            Beer beer1 = new Beer("Alpha IPA", 6.8, 70.0);
            Beer beer2 = new Beer("Beta IPA", 6.8, 70.0);

            beer1.Save();
            beer2.Save();

            //Act
            Beer testBeer = Beer.Find(beer1.GetId());

            //Assert
            Assert.Equal(beer1, testBeer);
        }
Example #8
0
 //Overrides
 public override bool Equals(Object otherBeer)
 {
     if (!(otherBeer is Beer))
     {
         return(false);
     }
     else
     {
         Beer newBeer      = (Beer)otherBeer;
         bool idEquality   = (_id == newBeer.GetId());
         bool nameEquality = (_name == newBeer.GetName());
         bool abvEquality  = (_abv == newBeer.GetAbv());
         bool ibuEquality  = (_ibu == newBeer.GetIbu());
         return(idEquality && nameEquality && abvEquality && ibuEquality);
     }
 }
Example #9
0
        public void RateBeer_AddSingleBeerRating_1()
        {
            //Arrange
            User newUser = new User("Bob");
            Beer newBeer = new Beer("Alpha IPA", 6.8, 70.0);

            newUser.Save();
            newBeer.Save();

            //Act
            newUser.RateBeer(newBeer.GetId(), 5);
            List <Beer> ratedBeers = newUser.GetRated();
            Beer        testBeer   = (Beer)ratedBeers[0];

            //Assert
            Assert.Equal(newBeer, testBeer);
        }
Example #10
0
        public void AddBeer_SaveAssociationBetweenBeerAndBrewery()
        {
            //Arrange
            Brewery testBrewery = new Brewery("Widmer", "Portland, OR");

            testBrewery.Save();

            Beer testBeer1 = new Beer("Alpha IPA", 6.8, 70.0);

            testBeer1.Save();
            List <Beer> testList = new List <Beer> {
                testBeer1
            };

            //Act
            testBrewery.AddBeer(testBeer1.GetId());

            var result = testBrewery.GetBeers();

            //Assert
            Assert.Equal(testList, result);
        }
Example #11
0
        public void GetBeers_GetAllBeersAssociatedWithBrewery()
        {
            //Arrange
            Brewery testBrewery = new Brewery("Widmer", "Portland, OR");

            testBrewery.Save();
            Beer testBeer1 = new Beer("Alpha IPA", 6.8, 70.0);
            Beer testBeer2 = new Beer("Beta IPA", 6.8, 70.0);

            testBeer1.Save();
            testBeer2.Save();
            List <Beer> testList = new List <Beer> {
                testBeer1
            };

            testBrewery.AddBeer(testBeer1.GetId());
            //Act
            var result = testBrewery.GetBeers();

            //Assert
            Assert.Equal(testList, result);
        }
Example #12
0
        public List <Beer> GetRecommendations(int baseBeerId, int listSize = 5, double ibuModifierIncrement = 2.0, double abvModifierIncrement = 0.1)
        {
            List <Beer> chosenBeers = new List <Beer> {
            };
            Beer   baseBeer         = Beer.Find(baseBeerId);
            double abvModifier      = 0.0;
            double ibuModifier      = 0.0;

            SqlConnection conn = DB.Connection();

            conn.Open();
            while (chosenBeers.Count < listSize)
            {
                double baseAbv     = baseBeer.GetAbv();
                double baseIbu     = baseBeer.GetIbu();
                double abvNegative = baseAbv - abvModifier;
                double abvPositive = baseAbv + abvModifier;
                double ibuNegative = baseIbu - ibuModifier;
                double ibuPositive = baseIbu + ibuModifier;

                //Get all beers within range for ibu and abv, and where the beer isn't given and hasn't been rated by the user
                SqlCommand cmd = new SqlCommand("SELECT * FROM beers WHERE (beers.abv BETWEEN @AbvNegative AND @AbvPositive) AND (beers.ibu BETWEEN @IbuNegative AND @IbuPositive) AND(beers.id != @BeerId) AND(beers.id NOT IN (SELECT favorites.beer_id FROM favorites WHERE(favorites.user_id = @UserId))) ORDER BY beers.name ASC;", conn);
                cmd.Parameters.AddWithValue("@AbvNegative", abvNegative);
                cmd.Parameters.AddWithValue("@AbvPositive", abvPositive);
                cmd.Parameters.AddWithValue("@IbuNegative", ibuNegative);
                cmd.Parameters.AddWithValue("@IbuPositive", ibuPositive);
                cmd.Parameters.AddWithValue("@BeerId", baseBeer.GetId());
                cmd.Parameters.AddWithValue("@UserId", _id);
                SqlDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    int    beerId    = rdr.GetInt32(0);
                    string beerName  = rdr.GetString(1);
                    double beerAbv   = (rdr.IsDBNull(2))? 0.0 : rdr.GetDouble(2);
                    double beerIbu   = (rdr.IsDBNull(3))? 0.0 : rdr.GetDouble(3);
                    Beer   foundBeer = new Beer(beerName, beerAbv, beerIbu, beerId);
                    if (!(chosenBeers.Contains(foundBeer)))
                    {
                        chosenBeers.Add(foundBeer);
                    }
                }
                if (rdr != null)
                {
                    rdr.Close();
                }

                abvModifier += abvModifierIncrement;
                ibuModifier += ibuModifierIncrement;
            }

            if (chosenBeers.Count > listSize)
            {
                chosenBeers.RemoveRange(listSize, (chosenBeers.Count - listSize));
            }

            //lambda expression sorts list in descending order of aggregate user rating
            chosenBeers.Sort((beer1, beer2) => beer2.GetRating().CompareTo(beer1.GetRating()));

            if (conn != null)
            {
                conn.Close();
            }
            return(chosenBeers);
        }