/**
* Valid conversion should complete with no
* exception thrown.
*
*
* @group validconversion
*/
public function testValidDataConversion()
{
$data = json_decode(json_encode($this->validSubmission));
$data->data->change_items = 'phptest.com,phptest2.com';
$data->data->change_type = 'dns_zone';
$data->data->op_type = 'move_to_storefront';
$data->data->apply_to_locked_domains = 'N';
$data->data->contact_email = '*****@*****.**';
$data->data->apply_to_all_reseller_items = 'N';
$data->data->apply_to_domains = 'N';
$data->data->dns_action = 'update';
$data->data->dns_template = 'my-template';
$data->data->only_if = 'N';
$data->data->force_dns_nameservers = 'N';
$data->data->dns_record_type = 'A';
$data->data->dns_record_data = long2ip(time());
$data->data->type = 'owner,admin,tech,billing';
$data->personal = (object) array('first_name' => 'Tikloot', 'last_name' => 'Php', 'country' => 'canada');
$data->data->add_ns = 'new-ns1.phptest.com,new-ns2.phptest.com';
$data->data->remove_ns = 'ns1.phptest.net,ns2.phptest.net';
$data->data->assign_ns = 'ns1.phptest.com,ns2.phptest.com';
$data->data->period = '5';
$data->data->let_expire = 'N';
$data->data->auto_renew = 'N';
$data->data->affiliate_id = time();
$data->data->gaining_reseller_username = '******';
$shouldMatchNewDataObject = new \stdClass();
$shouldMatchNewDataObject->attributes = new \stdClass();
$shouldMatchNewDataObject->attributes->change_items = explode(',', $data->data->change_items);
$shouldMatchNewDataObject->attributes->change_type = $data->data->change_type;
$shouldMatchNewDataObject->attributes->op_type = $data->data->op_type;
$shouldMatchNewDataObject->attributes->apply_to_locked_domains = $data->data->apply_to_locked_domains;
$shouldMatchNewDataObject->attributes->contact_email = $data->data->contact_email;
$shouldMatchNewDataObject->attributes->apply_to_all_reseller_items = $data->data->apply_to_all_reseller_items;
$shouldMatchNewDataObject->attributes->apply_to_domains = $data->data->apply_to_domains;
$shouldMatchNewDataObject->attributes->dns_action = $data->data->dns_action;
$shouldMatchNewDataObject->attributes->dns_template = $data->data->dns_template;
$shouldMatchNewDataObject->attributes->only_if = $data->data->only_if;
$shouldMatchNewDataObject->attributes->force_dns_nameservers = $data->data->force_dns_nameservers;
$shouldMatchNewDataObject->attributes->dns_record_type = $data->data->dns_record_type;
$shouldMatchNewDataObject->attributes->dns_record_data = $data->data->dns_record_data;
$shouldMatchNewDataObject->attributes->period = $data->data->period;
$shouldMatchNewDataObject->attributes->let_expire = $data->data->let_expire;
$shouldMatchNewDataObject->attributes->auto_renew = $data->data->auto_renew;
$shouldMatchNewDataObject->attributes->affiliate_id = $data->data->affiliate_id;
$shouldMatchNewDataObject->attributes->gaining_reseller_username = $data->data->gaining_reseller_username;
$shouldMatchNewDataObject->attributes->contacts = array();
$contact = new \stdClass();
$contact->set = $data->personal;
$contact->type = 'owner';
$shouldMatchNewDataObject->attributes->contacts[] = $contact;
unset($contact);
$contact = new \stdClass();
$contact->set = $data->personal;
$contact->type = 'admin';
$shouldMatchNewDataObject->attributes->contacts[] = $contact;
unset($contact);
$contact = new \stdClass();
$contact->set = $data->personal;
$contact->type = 'tech';
$shouldMatchNewDataObject->attributes->contacts[] = $contact;
unset($contact);
$contact = new \stdClass();
$contact->set = $data->personal;
$contact->type = 'billing';
$shouldMatchNewDataObject->attributes->contacts[] = $contact;
unset($contact);
$shouldMatchNewDataObject->attributes->add_ns = explode(',', $data->data->add_ns);
$shouldMatchNewDataObject->attributes->remove_ns = explode(',', $data->data->remove_ns);
$shouldMatchNewDataObject->attributes->assign_ns = explode(',', $data->data->assign_ns);
$ns = new BulkChange();
$newDataObject = $ns->convertDataObject($data);
$this->assertTrue($newDataObject == $shouldMatchNewDataObject);
}