public void GetJsonStatement_CustomerIsProperlySerializedAndDeserialized() { const string customerName = "TestCustomer"; var customer = new Customer(customerName); var movies = new[] { new Movie("Inception"), new Movie("HarryPotter") }; var rentalList = new List<Rental> { new RentalForNewReleaseMovie(daysRented: 1) { Movie = movies[0] }, new RentalForChildrenMovie(daysRented: 4) { Movie = movies[1] } }; customer.Rentals = rentalList; var jsonString = customer.GetStatement(new JsonStatement()); var serializer = new DataContractJsonSerializer(typeof(Customer)); Customer deserializedCustomer; using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) { deserializedCustomer = (Customer)serializer.ReadObject(stream); } Assert.AreEqual(customerName, deserializedCustomer.Name); var firstMovieName = deserializedCustomer.Rentals[0].Movie.Title; var secondMovieName = deserializedCustomer.Rentals[1].Movie.Title; Assert.AreEqual(movies[0].Title, firstMovieName); Assert.AreEqual(movies[1].Title, secondMovieName); }
public void GetStatement_StringStatementIsProperlyGenerated_EmptyListOfMovies() { var result = _statementBuilder.GetStringOfCustomerName("TestCustomer"); result += _statementBuilder.GetStringOfTotalRental(0); result += _statementBuilder.GetStringOfFrequentRenterPoints(0); var customer = new Customer("TestCustomer"); Assert.IsTrue(result.Equals(customer.GetStatement(new StringStatement()))); }
public void GetStatement_StringStatementIsProperlyGenerated_OneDayRentalOfRegularMovie() { var result = _statementBuilder.GetStringOfCustomerName("TestCustomer"); result += _statementBuilder.GetStringOfRentalForCurrentMovie("Inception", 2); result += _statementBuilder.GetStringOfTotalRental(2); result += _statementBuilder.GetStringOfFrequentRenterPoints(1); var movie = new Movie("Inception"); var customer = new Customer("TestCustomer"); var rentalList = new List<Rental> { new RentalForRegularMovie(daysRented: 1) { Movie = movie } }; customer.Rentals = rentalList; Assert.IsTrue(result.Equals(customer.GetStatement(new StringStatement()))); }
public Statement(Customer customer) { Movies = new Dictionary<string, double>(); TotalAmount = 0; FrequentRenterPoints = 0; Name = customer.Name; foreach (var rental in customer.Rentals) { var priceOfMovie = rental.GetPrice(); FrequentRenterPoints += rental.GetFrequentPoints(); Movies[rental.Movie.Title] = priceOfMovie; TotalAmount += priceOfMovie; } }