App-Test-Generator

 view release on metacpan or  search on metacpan

t/default_value_extraction.t  view on Meta::CPAN


	$to = $to || $ENV{DEFAULT_EMAIL} || 'admin@example.com';
	$subject //= 'No subject';
	$body = defined $body ? $body : '';
	$options ||= { from => 'noreply@example.com', cc => [] };

	# ... email sending logic ...

	return 1;
}
END_MODULE

	my $extractor = create_extractor($module);

	# Extract all schemas
	my $schemas = $extractor->extract_all();

	# Test database connection method
	my $db_schema = $schemas->{connect_to_database};
	my $db_input = $db_schema->{input};

	is(
		$db_input->{host}{_default},
		'localhost',
		'Real-world: Database host default'
	);

	is(
		$db_input->{port}{_default},
		3306,
		'Real-world: Database port default'
	);

	is(
		$db_input->{user}{_default},
		'app_user',
		'Real-world: Database user default'
	);

	is(
		$db_input->{password}{_default},
		undef,
		'Real-world: Database password defaults to undef'
	);

	is(
		$db_input->{database}{optional},
		0,
		'Real-world: Database name is required (no default)'
	);

	is(
		$db_input->{ssl}{_default},
		0,
		'Real-world: SSL defaults to false'
	);

	is(
		$db_input->{timeout}{_default},
		10,
		'Real-world: Timeout default'
	);

	# Test email method
	my $email_schema = $schemas->{send_email};
	my $email_input = $email_schema->{input};

	is(
		$email_input->{subject}{_default},
		'No subject',
		'Real-world: Email subject default'
	);

	is(
		$email_input->{body}{_default},
		'',
		'Real-world: Email body defaults to empty string'
	);

	# Note: $options default is a hashref with from and cc keys
	my $options_default = $email_input->{options}{_default};
	ok(ref $options_default eq 'HASH', 'Real-world: Options defaults to hashref');

	done_testing();
};

# Final summary
done_testing();



( run in 2.598 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )