public void SearchOrdersWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 1;
            ordersRowA.OrderName   = "Order A's";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId     = 2;
            ordersRowB.OrderName   = "Order B";
            ordersRowB.Description = "Description B";
            ordersRowB.Approver    = "User";
            ordersRowB.Creator     = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowB);
            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ICollection <Order> orders = ordersService.SearchOrders("'");

            Assert.AreEqual(1, orders.Count);
            IEnumerator <Order> enumerator = orders.GetEnumerator();

            enumerator.Reset();
            enumerator.MoveNext();
            Assert.AreEqual(1, enumerator.Current.OrderId);
        }
        public void SaveAsDraftWithExistingOrderUpdatesDetailsInRepository()
        {
            Order order = GetPopulatedOrder();

            order.OrderId = 0;
            order.Details.Add(new OrderDetail(0, 10, 1, 1.99m));

            OrdersManagementDataSet ds            = new OrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, GetPopulatedProductService());

            ordersService.SaveAsDraft(order);
            int orderID = order.OrderId;

            order         = GetPopulatedOrder();
            order.OrderId = orderID;
            order.Details.Add(new OrderDetail(0, 20, 3, 2.50m));
            int detailsCount = order.Details.Count;

            ordersService.SaveAsDraft(order);

            Assert.AreEqual(detailsCount, ds.OrderDetails.Count);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.FindByOrderIdProductId(order.OrderId, 20);
            Assert.IsNotNull(detailRow);
            Assert.AreEqual((short)3, detailRow.Quantity);

            OrdersManagementDataSet.OrderDetailsRow deletedDetailRow = ds.OrderDetails.FindByOrderIdProductId(order.OrderId, 10);
            Assert.IsNull(deletedDetailRow);
        }
        public void DeleteRemovesOnlyExpectedOrderFromRepository()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 3;
            ordersRowA.OrderName   = "Order A";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId     = 2;
            ordersRowB.OrderName   = "Order B";
            ordersRowB.Description = "Description B";
            ordersRowB.Approver    = "User";
            ordersRowB.Creator     = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Submitted;
            ds.Orders.AddOrdersRow(ordersRowB);

            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.DeleteOrder(3);

            Assert.AreEqual(1, ds.Orders.Count);
            Assert.AreEqual(2, ds.Orders[0].OrderId);
        }
        public void GetSavedDraftOrdersRetrievesOrdersWithDraftStatusAndForCurrentUser()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver    = "WhoCares";
            ordersRow.Creator     = "CurrentUser";
            ordersRow.OrderName   = "Test Order";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRow);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.NewOrderDetailsRow();
            detailRow.OrdersRow = ordersRow;
            detailRow.ProductId = 11;
            detailRow.Quantity  = 3;
            ds.OrderDetails.AddOrderDetailsRow(detailRow);
            ds.AcceptChanges();

            FakeProductService productService = new FakeProductService();

            productService.Products.Add(new Product(11, null, null, 2.99m, null));
            OrdersService ordersService = new OrdersService(ds, productService);

            IList <Order> orders = ordersService.GetSavedDraftOrders("CurrentUser");

            Assert.IsNotNull(orders);
            Assert.AreEqual(1, orders.Count);
            Order order = orders[0];

            Assert.AreEqual("Test Order", order.OrderName);
            Assert.IsNotNull(order);
            Assert.AreEqual(1, order.Details.Count);
            Assert.AreEqual((short)3, order.Details[0].Quantity);
            Assert.AreEqual(2.99m, order.Details[0].UnitPrice);
        }
        public void SearchOrderThrowsArgumentExceptionWhenStartOrderIndexIsTooLarge()
        {
            OrdersManagementDataSet ds            = InitOrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, new FakeProductService());

            int ordersTotalCount;
            ICollection <Order> foundOrders = ordersService.SearchOrders("Order", 4, int.MaxValue, out ordersTotalCount);
        }
        public void ShouldNotGetNotExistingEmployee()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            EmployeeService         employeeService = new EmployeeService(ds);

            Employee employee = employeeService.GetEmployeeById("11");

            Assert.IsNull(employee);
        }
        public void GetOrderWithDetailsReturnsNullWhenOrderNotExists()
        {
            OrdersManagementDataSet ds            = new OrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, new FakeProductService());

            Order order = ordersService.GetOrderWithDetails(0);

            Assert.IsNull(order);
        }
        public void GetCustomerByNameReturnsNullWithNoMatch()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            CustomerService         customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerByName("No Match");

            Assert.IsNull(customer);
        }
        public void GetCustomersByNamePrefixReturnsEmptyListWhenNoMatchesFound()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            CustomerService         customerService = new CustomerService(ds);

            ICollection <Customer> customers = customerService.GetCustomersByNamePrefix("No Match");

            Assert.IsNotNull(customers);
            Assert.AreEqual(0, customers.Count);
        }
        public void GetProductBySkuWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet _dataset = new OrdersManagementDataSet();
            ProductService          _service = new ProductService(_dataset);

            OrdersManagementDataSet.ProductsRow _product = _dataset.Products.AddProductsRow("Product A", "1234-56'89", "Description of Product A", 1.00m);
            _dataset.Products.AddProductsRow("Product B", "2222-33333", "Description of Product B", 1.00m);

            Product _foundProduct = _service.GetProductBySku("1234-56'89");

            Assert.AreEqual(_product.ProductId, _foundProduct.ProductId);
        }
        public void SaveAsDraftAssignsIDWhenNotAssignded()
        {
            Order order = GetPopulatedOrder();

            order.OrderId = 0;
            OrdersManagementDataSet ds            = new OrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.SaveAsDraft(order);

            Assert.AreNotEqual(0, order.OrderId);
        }
        public void ShouldReturnNullWhenSkuNotExists()
        {
            OrdersManagementDataSet _dataset = new OrdersManagementDataSet();
            ProductService          _service = new ProductService(_dataset);

            _dataset.Products.AddProductsRow("Product A", "1234-56789", "Description of Product A", 1.00m);
            _dataset.Products.AddProductsRow("Product B", "2222-33333", "Description of Product B", 1.00m);

            Product _foundProduct = _service.GetProductBySku("0000-00000");

            Assert.IsNull(_foundProduct);
        }
        public void ShouldGetProductBySku()
        {
            OrdersManagementDataSet _dataset = new OrdersManagementDataSet();
            ProductService          _service = new ProductService(_dataset);

            OrdersManagementDataSet.ProductsRow _product = _dataset.Products.AddProductsRow("Product A", "1234-56789", "Description of Product A", 1.00m);
            _dataset.Products.AddProductsRow("Product B", "2222-33333", "Description of Product B", 1.00m);

            Product _foundProduct = _service.GetProductBySku("1234-56789");

            Assert.AreEqual(_product.ProductId, _foundProduct.ProductId);
        }
 private void AddCustomer(OrdersManagementDataSet ds, string customerId, string companyName)
 {
     OrdersManagementDataSet.CustomersRow row = ds.Customers.NewCustomersRow();
     row.CustomerId  = customerId;
     row.CompanyName = companyName;
     row.City        = string.Empty;
     row.Region      = string.Empty;
     row.PostalCode  = string.Empty;
     row.Address     = string.Empty;
     ds.Customers.AddCustomersRow(row);
     ds.AcceptChanges();
 }
 private void AddCustomer(OrdersManagementDataSet ds, string customerId, string companyName, string city, string state, string zipCode, string address)
 {
     OrdersManagementDataSet.CustomersRow row = ds.Customers.NewCustomersRow();
     row.CustomerId  = customerId;
     row.CompanyName = companyName;
     row.City        = city;
     row.Region      = state;
     row.PostalCode  = zipCode;
     row.Address     = address;
     ds.Customers.AddCustomersRow(row);
     ds.AcceptChanges();
 }
        public void GetCustomersByIDWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "2'2", "These Cheeses");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerById("2'2");

            Assert.IsNotNull(customer);
            Assert.AreEqual("These Cheeses", customer.CompanyName);
        }
        public void GetCustomersByIDReturnsCustomer()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "22", "These Cheeses");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerById("22");

            Assert.IsNotNull(customer);
            Assert.AreEqual("These Cheeses", customer.CompanyName);
        }
        public void GetCustomerByNameWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "22", "These' Cheeses");
            AddCustomer(ds, "23", "These Cheeses International");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerByName("These' Cheeses");

            Assert.IsNotNull(customer);
            Assert.AreEqual("22", customer.CustomerId);
        }
        public void GetCustomerByNameMatchesExactName()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "22", "These Cheeses");
            AddCustomer(ds, "23", "These Cheeses International");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerByName("These Cheeses");

            Assert.IsNotNull(customer);
            Assert.AreEqual("22", customer.CustomerId);
        }
        public void SearchOrdersDoesALikeMatch()
        {
            OrdersManagementDataSet ds = InitOrdersManagementDataSet();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ICollection <Order> foundOrders = ordersService.SearchOrders("Description");

            List <Order> searchableList = new List <Order>(foundOrders);

            Assert.AreEqual(2, foundOrders.Count);
            Assert.IsTrue(searchableList.Exists(delegate(Order order) { return(order.OrderId == 1); }));
            Assert.IsTrue(searchableList.Exists(delegate(Order order) { return(order.OrderId == 2); }));
            Assert.IsFalse(searchableList.Exists(delegate(Order order) { return(order.OrderId == 3); }));
        }
        public void ShouldGetAllApprovers()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            ds.Employees.AddEmployeesRow("jblack", "Black", "Joe");
            ds.Employees.AddEmployeesRow("a-jdoe", "Doe", "John");
            ds.AcceptChanges();
            EmployeeService employeeService = new EmployeeService(ds);

            List<Employee> employees = new List<Employee>(employeeService.AllApprovers);

            Assert.IsNotNull(employees);
            Assert.AreEqual(1, employees.Count);
            Assert.AreEqual("a-jdoe", employees[0].EmployeeId);
            Assert.AreEqual("Doe", employees[0].LastName);
        }
        public void SearchCustomersReturnsEmptyListWhenNoMatches()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "10", "Company A");
            AddCustomer(ds, "11", "Company B");
            AddCustomer(ds, "12", "Company C");

            CustomerService customerService = new CustomerService(ds);

            IList <Customer> customers = customerService.SearchCustomers("None", string.Empty, string.Empty, string.Empty, string.Empty);

            Assert.IsNotNull(customers);
            Assert.AreEqual(0, customers.Count);
        }
        public void ShouldGetEmployeeById()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            ds.Employees.AddEmployeesRow("11", "Black", "Joe");
            ds.Employees.AddEmployeesRow("12", "Doe", "John");
            ds.AcceptChanges();
            EmployeeService employeeService = new EmployeeService(ds);

            Employee employee = employeeService.GetEmployeeById("11");

            Assert.IsNotNull(employee);
            Assert.AreEqual("11", employee.EmployeeId);
            Assert.AreEqual("Black", employee.LastName);
        }
        public void SearchCustomersMatchesPartialCompanyName()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "10", "Company A");
            AddCustomer(ds, "11", "Company B");
            AddCustomer(ds, "12", "Company C");

            CustomerService customerService = new CustomerService(ds);

            IList <Customer> customers = customerService.SearchCustomers("mp", string.Empty, string.Empty, string.Empty, string.Empty);

            Assert.IsNotNull(customers);
            Assert.AreEqual(3, customers.Count);
        }
        public void SearchCustomersWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "10", "Company' A", "City' A", "State' A", "ZipCode' A", "Address' A");
            AddCustomer(ds, "11", "Company B", "City B", "State B", "ZipCode B", "Address B");
            AddCustomer(ds, "12", "Company C", "City C", "State C", "ZipCode C", "Address C");

            CustomerService customerService = new CustomerService(ds);

            IList <Customer> customers = customerService.SearchCustomers("Company' A", "City' A", "State' A", "ZipCode' A", "Address' A");

            Assert.IsNotNull(customers);
            Assert.AreEqual(1, customers.Count);
            Assert.AreEqual("10", customers[0].CustomerId);
        }
        public void SearchCustomersMatchesExactZip()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "10", "Company A", string.Empty, string.Empty, "ZipCode A", string.Empty);
            AddCustomer(ds, "11", "Company B", string.Empty, string.Empty, "ZipCode B", string.Empty);
            AddCustomer(ds, "12", "Company C", string.Empty, string.Empty, "ZipCode A", string.Empty);

            CustomerService customerService = new CustomerService(ds);

            IList <Customer> customers = customerService.SearchCustomers(string.Empty, string.Empty, string.Empty, "ZipCode B", string.Empty);

            Assert.IsNotNull(customers);
            Assert.AreEqual(1, customers.Count);
            Assert.AreEqual("11", customers[0].CustomerId);
        }
        public void SearchCustomersMatchesAllParameters()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            AddCustomer(ds, "10", "Company A", "City A", "State A", "ZipCode A", "Address A");
            AddCustomer(ds, "11", "Company B", "City B", "State B", "ZipCode B", "Address B");
            AddCustomer(ds, "12", "Company C", "City C", "State C", "ZipCode C", "Address C");

            CustomerService customerService = new CustomerService(ds);

            IList <Customer> customers = customerService.SearchCustomers("Company A", "City A", "State A", "ZipCode A", "Address A");

            Assert.IsNotNull(customers);
            Assert.AreEqual(1, customers.Count);
            Assert.AreEqual("10", customers[0].CustomerId);
        }
        public void ShouldSearchProductsWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet _dataset = new OrdersManagementDataSet();
            ProductService          _service = new ProductService(_dataset);

            _dataset.Products.AddProductsRow("Product'A", "1234-56789", "Description of Product A", 1.00m);
            _dataset.Products.AddProductsRow("Product Another'A ", "9876-54321", "Description of the second Product A", 1.00m);
            _dataset.Products.AddProductsRow("Product Name'B", "2222-33333", "Description of Product B", 1.00m);

            ICollection <Product> _foundProducts = _service.SearchProducts("'A");
            List <Product>        searchableList = new List <Product>(_foundProducts);

            Assert.AreEqual(2, _foundProducts.Count);
            Assert.IsTrue(searchableList.Exists(delegate(Product product) { return(product.ProductSku == "1234-56789"); }));
            Assert.IsTrue(searchableList.Exists(delegate(Product product) { return(product.ProductSku == "9876-54321"); }));
        }
        public void ShouldGetAllApprovers()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            ds.Employees.AddEmployeesRow("jblack", "Black", "Joe");
            ds.Employees.AddEmployeesRow("a-jdoe", "Doe", "John");
            ds.AcceptChanges();
            EmployeeService employeeService = new EmployeeService(ds);

            List <Employee> employees = new List <Employee>(employeeService.AllApprovers);

            Assert.IsNotNull(employees);
            Assert.AreEqual(1, employees.Count);
            Assert.AreEqual("a-jdoe", employees[0].EmployeeId);
            Assert.AreEqual("Doe", employees[0].LastName);
        }
        public void SearchOrderNotExceedMaximumOrdersCount()
        {
            OrdersManagementDataSet ds            = InitOrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, new FakeProductService());

            int ordersTotalCount;
            ICollection <Order> foundOrders = ordersService.SearchOrders("Order", 0, 2, out ordersTotalCount);

            Assert.AreEqual(3, ordersTotalCount);
            Assert.AreEqual(2, foundOrders.Count);
            List <Order> searchableList = new List <Order>(foundOrders);

            Assert.IsTrue(searchableList.Exists(delegate(Order order) { return(order.OrderId == 1); }));
            Assert.IsTrue(searchableList.Exists(delegate(Order order) { return(order.OrderId == 2); }));
            Assert.IsFalse(searchableList.Exists(delegate(Order order) { return(order.OrderId == 3); }));
        }
        public void ShouldSearchProductsBySku()
        {
            OrdersManagementDataSet _dataset = new OrdersManagementDataSet();
            ProductService          _service = new ProductService(_dataset);

            _dataset.Products.AddProductsRow("Product NameA", "1234-56789", "Description of Product A", 1.00m);
            _dataset.Products.AddProductsRow("Product Another NameA ", "1234-11111", "Description of the second Product A", 1.00m);
            _dataset.Products.AddProductsRow("Product NameB", "2222-33333", "Description of Product B", 1.00m);

            ICollection <Product> _foundProducts = _service.SearchProducts("1234");
            List <Product>        searchableList = new List <Product>(_foundProducts);

            Assert.AreEqual(2, _foundProducts.Count);
            Assert.IsTrue(searchableList.Exists(delegate(Product product) { return(product.ProductSku == "1234-56789"); }));
            Assert.IsTrue(searchableList.Exists(delegate(Product product) { return(product.ProductSku == "1234-11111"); }));
        }
        public void CanReadAllCustomerProperties()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersManagementDataSet.CustomersRow row = ds.Customers.NewCustomersRow();
            row.CustomerId = "42";
            row.Address = "My Address";
            row.City = "My City";
            row.CompanyName = "My Company";
            row.PostalCode = "12345";
            row.Region = "My Region";
            ds.Customers.AddCustomersRow(row);
            ds.Customers.AcceptChanges();
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerById("42");

            Assert.IsNotNull(customer);
            Assert.AreEqual("My Address", customer.Address);
            Assert.AreEqual("My City", customer.City);
            Assert.AreEqual("My Company", customer.CompanyName);
            Assert.AreEqual("12345", customer.PostalCode);
            Assert.AreEqual("My Region", customer.Region);
        }
        public void GetCustomersByNamePrefixReturnsEmptyListWhenNoMatchesFound()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            CustomerService customerService = new CustomerService(ds);

            ICollection<Customer> customers = customerService.GetCustomersByNamePrefix("No Match");

            Assert.IsNotNull(customers);
            Assert.AreEqual(0, customers.Count);
        }
        public void SearchOrdersRetrievesOrdersByName()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId = 1;
            ordersRowA.OrderName = "OrderA";
            ordersRowA.Description = string.Empty;
            ordersRowA.Approver = "User";
            ordersRowA.Creator = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId = 2;
            ordersRowB.OrderName = "OrderB";
            ordersRowB.Description = string.Empty;
            ordersRowB.Approver = "User";
            ordersRowB.Creator = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowB);
            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ICollection<Order> foundOrders = ordersService.SearchOrders("OrderA");

            Assert.AreEqual(1, foundOrders.Count);
            IEnumerator<Order> enumerator = foundOrders.GetEnumerator();
            enumerator.Reset();
            enumerator.MoveNext();
            Assert.AreEqual(1, enumerator.Current.OrderId);
        }
        public void GetCustomersByIDWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "2'2", "These Cheeses");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerById("2'2");

            Assert.IsNotNull(customer);
            Assert.AreEqual("These Cheeses", customer.CompanyName);
        }
        public void SearchCustomersWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "10", "Company' A", "City' A", "State' A", "ZipCode' A", "Address' A");
            AddCustomer(ds, "11", "Company B", "City B", "State B", "ZipCode B", "Address B");
            AddCustomer(ds, "12", "Company C", "City C", "State C", "ZipCode C", "Address C");

            CustomerService customerService = new CustomerService(ds);

            IList<Customer> customers = customerService.SearchCustomers("Company' A", "City' A", "State' A", "ZipCode' A", "Address' A");

            Assert.IsNotNull(customers);
            Assert.AreEqual(1, customers.Count);
            Assert.AreEqual("10", customers[0].CustomerId);
        }
 private void AddCustomer(OrdersManagementDataSet ds, string customerId, string companyName, string city, string state, string zipCode, string address)
 {
     OrdersManagementDataSet.CustomersRow row = ds.Customers.NewCustomersRow();
     row.CustomerId = customerId;
     row.CompanyName = companyName;
     row.City = city;
     row.Region = state;
     row.PostalCode = zipCode;
     row.Address = address;
     ds.Customers.AddCustomersRow(row);
     ds.AcceptChanges();
 }
        public void SearchCustomersMatchesAllParameters()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "10", "Company A", "City A", "State A", "ZipCode A", "Address A");
            AddCustomer(ds, "11", "Company B", "City B", "State B", "ZipCode B", "Address B");
            AddCustomer(ds, "12", "Company C", "City C", "State C", "ZipCode C", "Address C");

            CustomerService customerService = new CustomerService(ds);

            IList<Customer> customers = customerService.SearchCustomers("Company A", "City A", "State A", "ZipCode A", "Address A");

            Assert.IsNotNull(customers);
            Assert.AreEqual(1, customers.Count);
            Assert.AreEqual("10", customers[0].CustomerId);
        }
        public void SearchCustomersMatchesPartialCompanyName()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "10", "Company A");
            AddCustomer(ds, "11", "Company B");
            AddCustomer(ds, "12", "Company C");

            CustomerService customerService = new CustomerService(ds);

            IList<Customer> customers = customerService.SearchCustomers("mp", string.Empty, string.Empty, string.Empty, string.Empty);

            Assert.IsNotNull(customers);
            Assert.AreEqual(3, customers.Count);
        }
        public void GetCustomerByIdReturnsNullWithNoMatch()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerById("12345");

            Assert.IsNull(customer);
        }
        private static OrdersManagementDataSet InitOrdersManagementDataSet()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId = 1;
            ordersRowA.OrderName = "Order A";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver = "User";
            ordersRowA.Creator = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId = 2;
            ordersRowB.OrderName = "Order B";
            ordersRowB.Description = "Description B";
            ordersRowB.Approver = "User";
            ordersRowB.Creator = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowB);

            OrdersManagementDataSet.OrdersRow ordersRowC = ds.Orders.NewOrdersRow();
            ordersRowC.OrderId = 3;
            ordersRowC.OrderName = "Order C";
            ordersRowC.Description = "C";
            ordersRowC.Approver = "User";
            ordersRowC.Creator = "User";
            ordersRowC.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowC);
            ds.AcceptChanges();
            return ds;
        }
        public void GetSavedDraftOrdersRetrievesOrdersWithDraftStatusAndForCurrentUser()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver = "WhoCares";
            ordersRow.Creator = "CurrentUser";
            ordersRow.OrderName = "Test Order";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRow);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.NewOrderDetailsRow();
            detailRow.OrdersRow = ordersRow;
            detailRow.ProductId = 11;
            detailRow.Quantity = 3;
            ds.OrderDetails.AddOrderDetailsRow(detailRow);
            ds.AcceptChanges();

            FakeProductService productService = new FakeProductService();
            productService.Products.Add(new Product(11, null, null, 2.99m, null));
            OrdersService ordersService = new OrdersService(ds, productService);

            IList<Order> orders = ordersService.GetSavedDraftOrders("CurrentUser");

            Assert.IsNotNull(orders);
            Assert.AreEqual(1, orders.Count);
            Order order = orders[0];
            Assert.AreEqual("Test Order", order.OrderName);
            Assert.IsNotNull(order);
            Assert.AreEqual(1, order.Details.Count);
            Assert.AreEqual((short)3, order.Details[0].Quantity);
            Assert.AreEqual(2.99m, order.Details[0].UnitPrice);
        }
        public void GetSavedDraftOrdersDoesNotRetrieveOrdersWithoutDraftStatus()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver = "WhoCares";
            ordersRow.Creator = "CurrentUser";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Submitted;
            ds.Orders.AddOrdersRow(ordersRow);
            ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver = "WhoCares";
            ordersRow.Creator = "CurrentUser";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Approved;
            ds.Orders.AddOrdersRow(ordersRow);
            ds.AcceptChanges();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            IList<Order> orders = ordersService.GetSavedDraftOrders("CurrentUser");

            Assert.IsNotNull(orders);
            Assert.AreEqual(0, orders.Count);
        }
        public void SaveAsDraftCanStoreOrderWithoutDetailsInRepository()
        {
            Order order = new Order();
            order.OrderId = 0;
            order.Approver = "11";
            order.Creator = "11";
            order.Details = null;

            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.SaveAsDraft(order);

            OrdersManagementDataSet.OrdersRow row = ds.Orders.FindByOrderId(order.OrderId);
            Assert.IsNotNull(row);
            Assert.AreEqual(1, ds.Orders.Count);
        }
        public void SaveAsDraftWithExistingOrderUpdatesDetailsInRepository()
        {
            Order order = GetPopulatedOrder();
            order.OrderId = 0;
            order.Details.Add(new OrderDetail(0, 10, 1, 1.99m));

            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersService ordersService = new OrdersService(ds, GetPopulatedProductService());
            ordersService.SaveAsDraft(order);
            int orderID = order.OrderId;

            order = GetPopulatedOrder();
            order.OrderId = orderID;
            order.Details.Add(new OrderDetail(0, 20, 3, 2.50m));
            int detailsCount = order.Details.Count;

            ordersService.SaveAsDraft(order);

            Assert.AreEqual(detailsCount, ds.OrderDetails.Count);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.FindByOrderIdProductId(order.OrderId, 20);
            Assert.IsNotNull(detailRow);
            Assert.AreEqual((short)3, detailRow.Quantity);

            OrdersManagementDataSet.OrderDetailsRow deletedDetailRow = ds.OrderDetails.FindByOrderIdProductId(order.OrderId, 10);
            Assert.IsNull(deletedDetailRow);
        }
        public void SearchOrdersWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId = 1;
            ordersRowA.OrderName = "Order A's";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver = "User";
            ordersRowA.Creator = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId = 2;
            ordersRowB.OrderName = "Order B";
            ordersRowB.Description = "Description B";
            ordersRowB.Approver = "User";
            ordersRowB.Creator = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowB);
            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ICollection<Order> orders = ordersService.SearchOrders("'");

            Assert.AreEqual(1, orders.Count);
            IEnumerator<Order> enumerator = orders.GetEnumerator();
            enumerator.Reset();
            enumerator.MoveNext();
            Assert.AreEqual(1, enumerator.Current.OrderId);
        }
        public void GetCustomersByNamePrefixWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "22", "The'se Cheeses");
            AddCustomer(ds, "23", "The'se Cheeses International");
            CustomerService customerService = new CustomerService(ds);

            ICollection<Customer> customers = customerService.GetCustomersByNamePrefix("THE'S");

            Assert.IsNotNull(customers);
            Assert.AreEqual(2, customers.Count);
            List<Customer> searchableList = new List<Customer>(customers);
            Assert.IsNotNull(searchableList.Exists(delegate(Customer customer) { return customer.CustomerId == "22"; }));
            Assert.IsNotNull(searchableList.Exists(delegate(Customer customer) { return customer.CustomerId == "23"; }));
        }
        public void SubmitOrderAddsOrderDetails()
        {
            Order order = GetPopulatedOrder();
            order.OrderId = 0;
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());
            order.Details.Add(new OrderDetail(0, 10, 1, 1.99m));
            int detailsCount = order.Details.Count;

            ordersService.SaveAsDraft(order);

            Assert.AreEqual(detailsCount, ds.OrderDetails.Count);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.FindByOrderIdProductId(order.OrderId, 10);
            Assert.IsNotNull(detailRow);
            Assert.AreEqual((short)1, detailRow.Quantity);
        }
        public void SearchCustomersMarchesExactStateAndPartialCompanyName()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "10", "Corp A", string.Empty, "State A", string.Empty, string.Empty);
            AddCustomer(ds, "11", "Company B", string.Empty, "State A", string.Empty, string.Empty);
            AddCustomer(ds, "12", "Corp B", string.Empty, "State A", string.Empty, string.Empty);

            CustomerService customerService = new CustomerService(ds);

            IList<Customer> customers = customerService.SearchCustomers("Corp", string.Empty, "State A", string.Empty, string.Empty);

            Assert.IsNotNull(customers);
            Assert.AreEqual(2, customers.Count);
            Assert.AreEqual("10", customers[0].CustomerId);
            Assert.AreEqual("12", customers[1].CustomerId);
        }
        public void GetOrderWithDetailsReturnsNullWhenOrderNotExists()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            Order order = ordersService.GetOrderWithDetails(0);

            Assert.IsNull(order);
        }
        public void SearchCustomersMatchesExactZip()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "10", "Company A", string.Empty, string.Empty, "ZipCode A", string.Empty);
            AddCustomer(ds, "11", "Company B", string.Empty, string.Empty, "ZipCode B", string.Empty);
            AddCustomer(ds, "12", "Company C", string.Empty, string.Empty, "ZipCode A", string.Empty);

            CustomerService customerService = new CustomerService(ds);

            IList<Customer> customers = customerService.SearchCustomers(string.Empty, string.Empty, string.Empty, "ZipCode B", string.Empty);

            Assert.IsNotNull(customers);
            Assert.AreEqual(1, customers.Count);
            Assert.AreEqual("11", customers[0].CustomerId);
        }
        public void SubmitOrderAssignsIDWhenNotAssignded()
        {
            Order order = GetPopulatedOrder();
            order.OrderId = 0;
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.SubmitOrder(order);

            Assert.AreNotEqual(0, order.OrderId);
        }
        public void SearchCustomersReturnsEmptyListWhenNoMatches()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "10", "Company A");
            AddCustomer(ds, "11", "Company B");
            AddCustomer(ds, "12", "Company C");

            CustomerService customerService = new CustomerService(ds);

            IList<Customer> customers = customerService.SearchCustomers("None", string.Empty, string.Empty, string.Empty, string.Empty);

            Assert.IsNotNull(customers);
            Assert.AreEqual(0, customers.Count);
        }
        public void GetCustomerByNameWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "22", "These' Cheeses");
            AddCustomer(ds, "23", "These Cheeses International");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerByName("These' Cheeses");

            Assert.IsNotNull(customer);
            Assert.AreEqual("22", customer.CustomerId);
        }
 private void AddCustomer(OrdersManagementDataSet ds, string customerId, string companyName)
 {
     OrdersManagementDataSet.CustomersRow row = ds.Customers.NewCustomersRow();
     row.CustomerId = customerId;
     row.CompanyName = companyName;
     row.City = string.Empty;
     row.Region = string.Empty;
     row.PostalCode = string.Empty;
     row.Address = string.Empty;
     ds.Customers.AddCustomersRow(row);
     ds.AcceptChanges();
 }
        public void GetCustomersByIDReturnsCustomer()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "22", "These Cheeses");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerById("22");

            Assert.IsNotNull(customer);
            Assert.AreEqual("These Cheeses", customer.CompanyName);
        }
        public void GetSavedDraftOrdersDoesNotRetrieveOrderForApproversWhoAreNotTheCurrentLoggedInOne()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver = "DifferentWhoCares";
            ordersRow.Creator = "DifferentUser";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRow);
            ds.AcceptChanges();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            IList<Order> orders = ordersService.GetOrdersForApprover("CurrentUser");

            Assert.IsNotNull(orders);
            Assert.AreEqual(0, orders.Count);
        }
        public void SaveAsDraftWithExistingOrderUpdatesRepository()
        {
            Order order = GetPopulatedOrder();
            order.OrderId = 0;
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersService ordersService = new OrdersService(ds, GetPopulatedProductService());
            ordersService.SaveAsDraft(order);
            int orderID = order.OrderId;

            order = GetPopulatedOrder();
            order.OrderId = orderID;
            order.OrderName = "MyNewName";

            ordersService.SaveAsDraft(order);

            OrdersManagementDataSet.OrdersRow row = ds.Orders.FindByOrderId(orderID);
            Assert.IsNotNull(row);
            Assert.AreEqual("MyNewName", row.OrderName);
            Assert.AreEqual(1, ds.Orders.Count);
        }
        public void GetCustomerByNameMatchesExactName()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            AddCustomer(ds, "21", "The Store");
            AddCustomer(ds, "22", "These Cheeses");
            AddCustomer(ds, "23", "These Cheeses International");
            CustomerService customerService = new CustomerService(ds);

            Customer customer = customerService.GetCustomerByName("These Cheeses");

            Assert.IsNotNull(customer);
            Assert.AreEqual("22", customer.CustomerId);
        }
        public void SubmitOrderStoresOrderInRepository()
        {
            Order order = GetPopulatedOrder();
            order.OrderId = 0;
            OrdersManagementDataSet ds = new OrdersManagementDataSet();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.SubmitOrder(order);

            OrdersManagementDataSet.OrdersRow row = ds.Orders.FindByOrderId(order.OrderId);
            Assert.IsNotNull(row);
            Assert.AreEqual(1, ds.Orders.Count);
            Assert.AreEqual(order.OrderName, row.OrderName);
            Assert.AreEqual(order.CustomerId, row.CustomerId);
            Assert.AreEqual(order.Description, row.Description);
            Assert.AreEqual(order.Approver, row.Approver);
            Assert.AreEqual(order.OrderStatus, row.OrderStatus);
            Assert.AreEqual(order.ShipAddress, row.ShipAddress);
            Assert.AreEqual(order.ShipCity, row.ShipCity);
            Assert.AreEqual(order.ShipPostalCode, row.ShipPostalCode);
            Assert.AreEqual(order.ShipRegion, row.ShipRegion);
        }