Yes, you should always test relationships in both directions, as it's feasible that you would require access to each model respectively from both ends.
As for enforcing, there is no programmatic way that I am aware of, you'd have to do it inline when you call the model, using the has() method:
$application = Application::find($id)->has('history', '>=', 1)->get();
Now the hasMany() relationship will return a collection, so you're actually trying to access the application_id property on an instance of Collection.
You have two choices to test this, the first would be to loop through and assertEquals like below:
foreach($application->history as $history) {
$this->assertEquals($application->id, $history->application_id);
}
Now, since you're testing, and the instances of the models created are for testing purposes, then it may be worth doing something like the following:
$history = $application->history->first();
$this->assertEquals($application->id, $history->application_id);
To reiterate, the problem is that the hasMany() relationship will always return an instance of Illuminate\Database\Eloquent\Collection if child relationships are found, even if there is only one, but the two above methods should suffice for your needs. Hope that helps.
P.S: My examples do not include validation to make sure variables aren't null and so on and so forth, may be worth adding that into your tests.
-- UPDATE --
I'm not familiar with FactoryMuff unfortunately, although if it works the way that I believe, you should be able to do the following in your tests:
$application = FactoryMuff::create('Application');
$history = FactoryMuff::create('History');
$application->history()->save($history);
If you're referring to your actual application code, you can just hook into the model events and add a new History object then and there.