public void ShouldSearchBySpecificationWithCreator()
        {
            new DatabaseTester().Clean();

            var creator1 = new Employee("1", "1", "1", "1");
            var creator2 = new Employee("2", "2", "2", "2");
            var order1   = new ExpenseReport();

            order1.Submitter = creator1;
            order1.Number    = "123";
            var order2 = new ExpenseReport();

            order2.Submitter = creator2;
            order2.Number    = "456";

            ISession session = DataContext.GetTransactedSession();

            session.SaveOrUpdate(creator1);
            session.SaveOrUpdate(creator2);
            session.SaveOrUpdate(order1);
            session.SaveOrUpdate(order2);
            session.Transaction.Commit();
            session.Dispose();

            var repository    = new ExpenseReportRepository();
            var specification = new SearchSpecification();

            specification.MatchSubmitter(creator1);
            ExpenseReport[] orders = repository.GetMany(specification);

            Assert.That(orders.Length, Is.EqualTo(1));
            Assert.That(orders[0].Id, Is.EqualTo(order1.Id));
        }
        public ActionResult Index(ExpenseReportSearchModel.SearchFilters filters)
        {
            var model = new ExpenseReportSearchModel();
            if (filters != null)
                model.Filters = filters;

            var accountManager = _employeeRepository.GetByUserName(model.Filters.Submitter);
            var practiceOwner = _employeeRepository.GetByUserName(model.Filters.Approver);
            var status = !string.IsNullOrWhiteSpace(model.Filters.Status) ? ExpenseReportStatus.FromKey(model.Filters.Status) : null;

            var specification = new SearchSpecification();
            specification.MatchSubmitter(accountManager);
            specification.MatchApprover(practiceOwner);
            specification.MatchStatus(status);
            ExpenseReport[] orders = _expenseReportRepository.GetMany(specification);

            model.Results = orders;

            return View(model);
        }
Esempio n. 3
0
        public ActionResult Index(ExpenseReportSearchModel.SearchFilters filters)
        {
            var model = new ExpenseReportSearchModel();

            if (filters != null)
            {
                model.Filters = filters;
            }

            var accountManager = _employeeRepository.GetByUserName(model.Filters.Submitter);
            var practiceOwner  = _employeeRepository.GetByUserName(model.Filters.Approver);
            var status         = !string.IsNullOrWhiteSpace(model.Filters.Status) ? ExpenseReportStatus.FromKey(model.Filters.Status) : null;

            var specification = new SearchSpecification();

            specification.MatchSubmitter(accountManager);
            specification.MatchApprover(practiceOwner);
            specification.MatchStatus(status);
            ExpenseReport[] orders = _expenseReportRepository.GetMany(specification);

            model.Results = orders;

            return(View(model));
        }
        public void ShouldSearchBySpecificationWithFullSpecification()
        {
            new DatabaseTester().Clean();

            var employee1 = new Employee("1", "1", "1", "1");
            var employee2 = new Employee("2", "2", "2", "2");
            var order1 = new ExpenseReport();
            order1.Submitter = employee2;
            order1.Approver = employee1;
            order1.Number = "123";
            order1.Status = ExpenseReportStatus.Submitted;
            var order2 = new ExpenseReport();
            order2.Submitter = employee1;
            order2.Approver = employee2;
            order2.Number = "456";
            order2.Status = ExpenseReportStatus.Draft;

            ISession session = DataContext.GetTransactedSession();
            session.SaveOrUpdate(employee1);
            session.SaveOrUpdate(employee2);
            session.SaveOrUpdate(order1);
            session.SaveOrUpdate(order2);
            session.Transaction.Commit();
            session.Dispose();

            var repository = new ExpenseReportRepository();
            var specification = new SearchSpecification();
            specification.MatchStatus(ExpenseReportStatus.Submitted);
            specification.MatchSubmitter(employee2);
            specification.MatchApprover(employee1);
            ExpenseReport[] orders = repository.GetMany(specification);

            Assert.That(orders.Length, Is.EqualTo(1));
            Assert.That(orders[0].Id, Is.EqualTo(order1.Id));
        }