RedUNIT\Base\Via::testIssue378 PHP Method

testIssue378() public method

Via property does not get cleared properly.
public testIssue378 ( ) : void
return void
    public function testIssue378()
    {
        R::nuke();
        $mediaBean = R::dispense('media');
        $fooPerson = R::dispense('person');
        $mediaBean->sharedPersonList[] = $fooPerson;
        R::store($mediaBean);
        asrt(count($mediaBean->sharedPersonList), 1);
        $person = R::findOne('person');
        $person->via('relation')->sharedMarriageList[] = R::dispense('marriage');
        //this second one caused the via property to not get cleared
        $person->via('relation')->sharedMarriageList;
        asrt(count($person->sharedMediaList), 1);
        //also found this scenario, non-existing property
        $book = R::dispense('book');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->nothing;
        asrt(count($book->sharedPageList), 1);
        //yet another
        $book = R::dispense('magazine');
        $book->ownAdList[] = R::dispense('ad');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->ownAdList;
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('folder');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->sharedItemList[] = R::dispense('item');
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('folder2');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->sharedItemList[] = R::dispense('item');
        $book->via('garbage')->sharedItemList[] = R::dispense('item');
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('folder3');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->item = R::dispense('item');
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('folder3');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->item = 'test';
        asrt(count($book->sharedPageList), 1);
        //yet another
        $book = R::dispense('leaflet');
        $book->title = 'leaflet';
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->title;
        asrt(count($book->sharedPageList), 1);
        //yet another
        $book = R::dispense('paper');
        $book->author = R::dispense('author');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->author;
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('paper2');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('garbage')->author;
        asrt(count($book->sharedPageList), 1);
        //yet another one
        $book = R::dispense('archive');
        $book->sharedItem[] = R::dispense('item');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        unset($book->via('garbage')->sharedItem);
        asrt(count($book->sharedPageList), 1);
        //theoretic cases
        $book = R::dispense('guide');
        $book->sharedItem[] = R::dispense('item');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('relation')->countShared('item');
        $book->via('relation')->countShared('item');
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('catalogue');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('relation')->countShared('item');
        $book->via('relation')->countShared('item');
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('tabloid');
        $book->ownItemList[] = R::dispense('item');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('relation')->countOwn('item');
        $book->via('relation')->countOwn('item');
        asrt(count($book->sharedPageList), 1);
        $book = R::dispense('booklet');
        $book->ownItemList[] = R::dispense('item');
        $book->sharedPage[] = R::dispense('page');
        R::store($book);
        $book = $book->fresh();
        $book->via('relation')->countOwn('item');
        $book->via('relation')->countOwn('item');
        asrt(count($book->sharedPageList), 1);
        AQueryWriter::clearRenames();
    }