public void Creates_new_Customer_record_as_expected_if_Customer_CompanyType_is_supplied()
            {
                //Arrange
                var parameters = new CreateCompanyParameters
                {
                    UserToken    = TestUser.UserName,
                    CompanyName  = "Bebe",
                    CompanyTypes = new List <CompanyType> {
                        CompanyType.Customer
                    },
                    Active = true
                };

                //Act
                var result = Service.CreateCompany(parameters);

                //Assert
                result.AssertSuccess();
                var customer = RVCUnitOfWork.CustomerRepository.Filter(c => true, c => c.Company, c => c.Broker, c => c.Company.CompanyTypes).Single(c => c.Company.Name == parameters.CompanyName);

                Assert.IsTrue(parameters.CompanyTypes.All(t => customer.Company.CompanyTypes.Any(r => r.CompanyTypeEnum == t)));
                Assert.AreEqual(parameters.Active, customer.Company.Active);
                Assert.AreEqual(StaticCompanies.RVCBroker.Id, customer.BrokerId);
                Assert.AreEqual(StaticCompanies.RVCBroker.Name, customer.Broker.Name);
            }
            public void Creates_new_Customer_record_with_Broker_as_expected()
            {
                //Arrange
                var broker     = TestHelper.CreateObjectGraphAndInsertIntoDatabase <Company>(c => c.SetCompanyTypes(CompanyType.Broker));
                var parameters = new CreateCompanyParameters
                {
                    UserToken    = TestUser.UserName,
                    CompanyName  = "Bebe",
                    CompanyTypes = new List <CompanyType> {
                        CompanyType.Customer
                    },
                    Active    = true,
                    BrokerKey = broker.ToCompanyKey()
                };

                //Act
                var result = Service.CreateCompany(parameters);

                //Assert
                result.AssertSuccess();
                var customer = RVCUnitOfWork.CustomerRepository.Filter(c => true, c => c.Company, c => c.Broker, c => c.Company.CompanyTypes).Single(c => c.Company.Name == parameters.CompanyName);

                Assert.IsTrue(parameters.CompanyTypes.All(t => customer.Company.CompanyTypes.Any(r => r.CompanyTypeEnum == t)));
                Assert.AreEqual(parameters.Active, customer.Company.Active);
                Assert.AreEqual(broker.Id, customer.BrokerId);
            }
            public void Creates_new_Company_record_without_a_parent_as_expected_on_success()
            {
                //Arrange
                var parameters = new CreateCompanyParameters
                {
                    UserToken    = TestUser.UserName,
                    CompanyName  = "Company Inc.",
                    CompanyTypes = new List <CompanyType> {
                        CompanyType.Broker
                    },
                    Active = false
                };

                //Act
                var result = Service.CreateCompany(parameters);

                //Assert
                result.AssertSuccess();
                var company = RVCUnitOfWork.CompanyRepository.All().Select(c => new { company = c, c.CompanyTypes }).Single(c => c.company.Name == parameters.CompanyName).company;

                Assert.IsTrue(parameters.CompanyTypes.All(t => company.CompanyTypes.Any(r => r.CompanyTypeEnum == t)));
                Assert.AreEqual(parameters.Active, company.Active);
            }
            public void Does_not_create_associated_Customer_record_if_Customer_CompanyType_is_not_supplied()
            {
                //Arrange
                const string companyName = "Bebe";
                var          parameters  = new CreateCompanyParameters
                {
                    UserToken    = TestUser.UserName,
                    CompanyName  = companyName,
                    CompanyTypes = new List <CompanyType> {
                        CompanyType.Broker
                    },
                    Active = true
                };

                //Act
                var result = Service.CreateCompany(parameters);

                //Assert
                result.AssertSuccess();
                var company = RVCUnitOfWork.CompanyRepository.All().SingleOrDefault(c => c.Name == companyName);

                Assert.NotNull(company);
                Assert.IsNull(RVCUnitOfWork.CustomerRepository.All().FirstOrDefault());
            }