client_settings = new ClientSettings(ClientSettings::defaults()); $this->company_settings = new CompanySettings(CompanySettings::defaults()); } public function buildClientSettings() { foreach($this->client_settings as $key => $value) { if(!isset($this->client_settings->{$key}) && property_exists($this->company_settings, $key)) $this->client_settings->{$key} = $this->company_settings->{$key}; } return $this->client_settings; } public function testProperties() { $build_client_settings = $this->buildClientSettings(); $this->assertEquals($build_client_settings->timezone_id, 15); $this->assertEquals($build_client_settings->currency_id, 1); $this->assertEquals($build_client_settings->language_id, 1); $this->assertEquals($build_client_settings->payment_terms, 7); } public function testDirectClientSettingsBuild() { $settings = ClientSettings::buildClientSettings(new CompanySettings(CompanySettings::defaults()), new ClientSettings(ClientSettings::defaults())); $this->assertEquals($settings->timezone_id, 15); $this->assertEquals($settings->currency_id, 1); $this->assertEquals($settings->language_id, 1); $this->assertEquals($settings->payment_terms, 7); $this->assertTrue(property_exists($settings, 'invoice_email_list')); $this->assertEquals($settings->custom_taxes1, 'FALSE'); } }