public BillingCompany GetNewBillingCompany(BillingCompanyName billingCompanyName,BillingCompanyType billingCompanyType,BillingCompanyScrapingUrl billingCompanyScrapingUrl)
        {
            Guard.That(billingCompanyName).IsNotNull();
            Guard.That(billingCompanyType).IsNotNull();
            Guard.That(billingCompanyScrapingUrl).IsNotNull();

            return new BillingCompany(eventAggregator, billingCompanyName, billingCompanyType, billingCompanyScrapingUrl);
        }
        public BillingCompany(IEventAggregator eventAggregator, BillingCompanyName companyName, BillingCompanyType companyType, BillingCompanyScrapingUrl companyScrapingUrl)
        {
            this.billingCompanyName = companyName;
            this.billingCompanyType = companyType;
            this.billingCompanyScrapingUrl = companyScrapingUrl;

            this.eventAggregator = eventAggregator;
            this.eventAggregator.Subscribe(this);

            this.openClosedWindows = new List<OpenClosedWindow>();
            this.scrapingErrorRetryConfigurations = new List<ScrapingErrorRetryConfiguration>();
        }
        public void WhenConstructingGivenAnEmptyStringAnArgumentExceptionIsThrown()
        {
            //arrange
            name = "";

            //act

            BillingCompanyName companyName = new BillingCompanyName(name);

            //assert
            //Exception Expected
        }
        public void Setup()
        {
            companyName = new BillingCompanyName("Company A");
            companyType = new BillingCompanyType(1);
            companyUrl = new BillingCompanyScrapingUrl("https://www.google.com/");

            //arrange
            var builder = new ContainerBuilder();

            builder.RegisterType<EventAggregator>().As<IEventAggregator>();
            builder.RegisterType<BillingCompanyRepositoryFake>().As<BillingCompanyRepositoryFake>();

            container = builder.Build();
        }
        public void WhenConstructingANewBillingCompanyTheNameShouldNotNull()
        {
            // arrange ( repository and depenency injection done )
            companyName = null;

            // act
            BillingCompany billingCompany = container.Resolve<BillingCompanyRepositoryFake>().
                GetNewBillingCompany(companyName, companyType, companyUrl);

            // assert
            // expected exception
        }
        public void SetBillingCompanyName(BillingCompanyName companyName)
        {
            // validation of action

            this.billingCompanyName = companyName;
        }