コード例 #1
0
        public void ReturnEarly_Confirmed()
        {
            //arrange
            _view.ConfirmReturnEarly().Returns(true); // юзер соглашается "Вернуть фильм"

            var testMovieCopy = new MovieCopy(9999, "TEST COMMENT", 50)
            {
                Available = false
            };                                                                               // копия у кого-то в аренде

            // взяли 20 января, договорились вернуть 25, но вернули 23
            var startDate       = new DateTime(2020, 01, 20);
            var expectedEndDate = new DateTime(2020, 01, 25);
            var returnDate      = new DateTime(2020, 01, 23);
            var testLeasing     = new Leasing(startDate, expectedEndDate, 0, 0, 50)
            {
                MovieCopy = testMovieCopy
            };

            _view.CurrentLeasing = testLeasing;

            testLeasing.ReturnEarly(returnDate);

            //act
            _presenter.ReturnEarly(returnDate);

            //assert
            Assert.AreEqual(testLeasing.TotalPrice, _view.CurrentLeasing.TotalPrice);
            Assert.AreEqual(testLeasing.MovieCopy.Available, _view.CurrentLeasing.MovieCopy.Available);
            Assert.AreEqual(testLeasing.ReturnDate, _view.CurrentLeasing.ReturnDate);

            _view.Received().Close();
        }
コード例 #2
0
        public void ReturnDelayed_NotConfirmed()
        {
            //arrange
            _view.ConfirmReturnDelayed().Returns(false); // юзер отказывается "Вернуть фильм"

            var testMovieCopy = new MovieCopy(9999, "TEST COMMENT", 50)
            {
                Available = false
            };                                                                               // копия у кого-то в аренде

            var startDate       = new DateTime(2020, 01, 20);
            var expectedEndDate = new DateTime(2020, 01, 25);
            var returnDate      = new DateTime(2020, 01, 28);
            var leasing         = new Leasing(startDate, expectedEndDate, 0, 0, 50)
            {
                MovieCopy = testMovieCopy
            };

            _view.CurrentLeasing = leasing;

            const decimal fineMultiplier = 2;

            //act
            _presenter.ReturnDelayed(returnDate, fineMultiplier);

            //assert
            Assert.AreEqual(false, _view.CurrentLeasing.MovieCopy.Available);

            _view.DidNotReceive().Close();
        }
コード例 #3
0
        public void Run(MovieOriginal currentMovie, MovieCopy currentMovieCopy)
        {
            _leasingView.CurrentMovie     = currentMovie;
            _leasingView.CurrentMovieCopy = currentMovieCopy;

            _leasingView.RedrawCustomers(_context.Customers);

            _leasingView.Show();
        }
コード例 #4
0
        public void AddMovieCopy(MovieCopy movieCopy)
        {
            if (!_movieCopyView.ConfirmNewMovieCopy())
            {
                return;
            }
            _context.MoviesCopies.Add(movieCopy);
            _context.SaveChanges();

            _movieCopyView.Close();
        }
コード例 #5
0
        public MovieCopyForm()
        {
            InitializeComponent();

            addMovieButton.Click += (sender, args) =>
            {
                var movieId     = CurrentMovie.Id;
                var commentary  = commentTextBox.Text.Trim();
                var pricePerDay = priceNumericUpDown.Value;
                var copy        = new MovieCopy(movieId, commentary, pricePerDay);
                OnAddMovieCopy?.Invoke(copy);
            };
        }
コード例 #6
0
        public void UpdateMovieCopy(int movieCopyId, MovieCopy updatedMovieCopy)
        {
            var copy = _context.MoviesCopies.Single(c => c.Id == movieCopyId);

            copy.Commentary  = updatedMovieCopy.Commentary;
            copy.PricePerDay = updatedMovieCopy.PricePerDay;

            _context.SaveChanges();

            var copies = _context.MoviesCopies.Where(c => c.MovieId == copy.MovieId);

            _mainView.RedrawCopies(copies);
        }
コード例 #7
0
        public void MovieCopyAdd_NotConfirmed()
        {
            //arrange
            _view.ConfirmNewMovieCopy().Returns(false); // юзер отказывается "Добавить новую копию фильма"
            var testMovieCopy = new MovieCopy(9999, "TEST", 9999);

            //act
            _presenter.AddMovieCopy(testMovieCopy);

            //asert
            Assert.AreEqual(false, _context.MoviesCopies.Any());

            _view.DidNotReceive().Close();
        }
コード例 #8
0
        public void UpdateMovieCopy()
        {
            //arrange
            var initialMovieCopy = new MovieCopy(9999, "Старый комментарий :(", 7777);

            _context.MoviesCopies.Add(initialMovieCopy);
            _context.SaveChanges();
            var updatedMovieCopy = new MovieCopy(9999, "НОВЫЙ КОММЕНТАРИЙ!!!", 8888);

            //act
            _presenter.UpdateMovieCopy(initialMovieCopy.Id, updatedMovieCopy);
            var actual = _context.MoviesCopies.Single(c => c.Id == initialMovieCopy.Id);

            //assert
            Assert.AreEqual(updatedMovieCopy.Commentary, actual.Commentary);
            Assert.AreEqual(updatedMovieCopy.PricePerDay, actual.PricePerDay);

            _view.Received().RedrawCopies(Arg.Any <IQueryable <MovieCopy> >());
        }
コード例 #9
0
        public void Run()
        {
            //arrange
            // добавляем и сразу же сохраняем по цепочке чтобы последующие элементы получили актуальное значение необходимого Id
            var testMovie = new MovieOriginal("TEST TITLE", "TEST DESCR", 9999);

            _context.MoviesOriginal.Add(testMovie);
            _context.SaveChanges();
            var testMovieCopy = new MovieCopy(testMovie.Id, "TEST COMMENT", 9999);

            _context.MoviesCopies.Add(testMovieCopy);
            _context.SaveChanges();
            var testCustomer = new Customer("TEST NAME");

            _context.Customers.Add(testCustomer);
            _context.SaveChanges();
            var testLeasing = new Leasing(DateTime.Now, DateTime.Now, testCustomer.Id, testMovieCopy.Id, 9999);

            _context.LeasedCopies.Add(testLeasing);
            _context.SaveChanges();

            //act
            _presenter.Run(testLeasing.Id);

            //assert
            Assert.AreEqual(testLeasing.StartDate, _view.CurrentLeasing.StartDate);
            Assert.AreEqual(testLeasing.ExpectedEndDate, _view.CurrentLeasing.ExpectedEndDate);
            Assert.AreEqual(testLeasing.CustomerId, _view.CurrentLeasing.CustomerId);
            Assert.AreEqual(testLeasing.MovieCopyId, _view.CurrentLeasing.MovieCopyId);
            Assert.AreEqual(testLeasing.TotalPrice, _view.CurrentLeasing.TotalPrice);

            Assert.AreEqual(testMovieCopy.MovieId, _view.CurrentMovieCopy.MovieId);
            Assert.AreEqual(testMovieCopy.Commentary, _view.CurrentMovieCopy.Commentary);
            Assert.AreEqual(testMovieCopy.PricePerDay, _view.CurrentMovieCopy.PricePerDay);

            Assert.AreEqual(testMovie.Title, _view.CurrentMovie.Title);
            Assert.AreEqual(testMovie.Description, _view.CurrentMovie.Description);
            Assert.AreEqual(testMovie.YearReleased, _view.CurrentMovie.YearReleased);

            Assert.AreEqual(testCustomer.Name, _view.CurrentCustomer.Name);

            _view.Received().Show();
        }
コード例 #10
0
        public MainForm()
        {
            InitializeComponent();

            Load += (sender, args) => OnLoad?.Invoke();

            newMovieButton.Click              += (sender, args) => OnOpenMovie?.Invoke();                                                           // Добавить новый фильм
            newMovieCopyButton.Click          += (sender, args) => OnOpenMovieCopy?.Invoke(CurrentMovieId);                                         // Добавить новую копию фильма
            mainMenu.Items[1].Click           += (sender, args) => OnOpenCustomers?.Invoke();                                                       // "Клиенты"
            mainMenu.Items[2].Click           += (sender, args) => OnOpenImportMovies?.Invoke();                                                    // "Импорт фильмов"
            copiesContextMenu.Items[0].Click  += (sender, args) => OnOpenLeasing?.Invoke(Convert.ToInt32(copiesDgv.CurrentRow.Cells["Id"].Value));  // "Прокат"
            leasingContextMenu.Items[0].Click += (sender, args) => OnOpenReturn?.Invoke(Convert.ToInt32(leasingsDgv.CurrentRow.Cells["Id"].Value)); // "Вернуть"

            mainMenu.Items[0].TextChanged += (sender, args) => OnFilterMovies?.Invoke(mainMenu.Items[0].Text.Trim());                               // Поиск фильма

            moviesDgv.CellEndEdit += (sender, args) =>
            {
                var movieId      = CurrentMovieId;
                var title        = moviesDgv.CurrentRow.Cells["Title"].Value.ToString();
                var description  = moviesDgv.CurrentRow.Cells["Description"].Value.ToString();
                var yearReleased = Convert.ToInt32(moviesDgv.CurrentRow.Cells["YearReleased"].Value);
                var updatedMovie = new MovieOriginal(title, description, yearReleased);
                OnUpdateMovie?.Invoke(movieId, updatedMovie);
            };
            copiesDgv.CellEndEdit += (sender, args) =>
            {
                var movieCopyId      = Convert.ToInt32(copiesDgv.CurrentRow.Cells["Id"].Value);
                var commentary       = copiesDgv.CurrentRow.Cells["Commentary"].Value.ToString();
                var pricePerDay      = Convert.ToInt32(copiesDgv.CurrentRow.Cells["PricePerDay"].Value);
                var updatedMovieCopy = new MovieCopy(Convert.ToInt32(moviesDgv.CurrentRow.Cells["Id"].Value),
                                                     commentary, pricePerDay);
                OnUpdateMovieCopy?.Invoke(movieCopyId, updatedMovieCopy);
            };

            moviesDgv.DataError += (sender, args) => ShowDataError();
            copiesDgv.DataError += (sender, args) => ShowDataError();

            moviesDgv.SelectionChanged += (sender, args) =>
                                          OnMovieSelectionChanged?.Invoke(CurrentMovieId);
            copiesDgv.SelectionChanged += (sender, args) =>
                                          OnMovieCopySelectionChanged?.Invoke(Convert.ToInt32(copiesDgv.CurrentRow.Cells["Id"].Value));
        }
コード例 #11
0
        public void OpenLeasing()
        {
            //arrange
            var testMovie = new MovieOriginal("TEST", "TEST", 9999);

            _context.MoviesOriginal.Add(testMovie);
            _context.SaveChanges(); // нужно чтобы testMovieCopy получил актуальный testMovie.Id после добавления в контекст. Иначе testMovie.Id будет 0
            var testMovieCopy = new MovieCopy(testMovie.Id, "TEST", 9999);

            _context.MoviesCopies.Add(testMovieCopy);
            _context.SaveChanges();

            //act
            _presenter.OpenLeasing(testMovieCopy.Id);

            //assert
            _leasingPresenter.Received().Run(Arg.Any <MovieOriginal>(), Arg.Any <MovieCopy>());
            _view.Received().RedrawCopies(Arg.Any <IQueryable <MovieCopy> >());
            _view.Received().RedrawLeasings(Arg.Any <IQueryable <Leasing> >(), Arg.Any <IQueryable <Customer> >());
        }
コード例 #12
0
        public void LeasingAdd_NotConfirmed()
        {
            //arrange
            _view.ConfirmNewLeasing().Returns(false);

            var testMovieCopy = new MovieCopy(9999, "TEST", 9999);

            _context.MoviesCopies.Add(testMovieCopy);
            _context.SaveChanges();

            var testLeasing = new Leasing(DateTime.Now, DateTime.Now, 9999, testMovieCopy.Id, 9999);

            //act
            _presenter.AddLeasing(testLeasing);

            //assert
            Assert.AreEqual(true, testMovieCopy.Available);
            Assert.AreEqual(false, _context.LeasedCopies.Any());
            _view.DidNotReceive().Close();
        }
コード例 #13
0
        public void LeasingAdd_Confirmed()
        {
            //arrange
            _view.ConfirmNewLeasing().Returns(true); // юзер соглашается "Подтвердить нового пользователя" (MessageBox)

            var testMovieCopy = new MovieCopy(9999, "TEST", 9999);

            _context.MoviesCopies.Add(testMovieCopy);
            _context.SaveChanges();

            var testLeasing = new Leasing(DateTime.Now, DateTime.Now, 9999, testMovieCopy.Id, 9999);

            //act
            _presenter.AddLeasing(testLeasing);

            //assert
            Assert.AreEqual(false, testMovieCopy.Available);
            Assert.AreEqual(true, _context.LeasedCopies.Any());
            _view.Received().Close();
        }
コード例 #14
0
        public void Run()
        {
            //arrange
            var movieTest     = new MovieOriginal("TEST MOVIE", "TEST MOVIE DESCR", 9999);
            var movieCopyTest = new MovieCopy(1111, "TEST COMMENT", 1111);

            //act
            _presenter.Run(movieTest, movieCopyTest);

            //assert
            Assert.AreEqual(movieTest.Title, _view.CurrentMovie.Title);
            Assert.AreEqual(movieTest.Description, _view.CurrentMovie.Description);
            Assert.AreEqual(movieTest.YearReleased, _view.CurrentMovie.YearReleased);

            Assert.AreEqual(movieCopyTest.MovieId, _view.CurrentMovieCopy.MovieId);
            Assert.AreEqual(movieCopyTest.Commentary, _view.CurrentMovieCopy.Commentary);
            Assert.AreEqual(movieCopyTest.PricePerDay, _view.CurrentMovieCopy.PricePerDay);

            _view.Received().RedrawCustomers(Arg.Any <IQueryable <Customer> >());
            _view.Received().Show();
        }