public function testCreatorShouldBeGivenRights() { User::setCurrentUser(null); $calendar1 = new Calendar(); $this->assertEmpty($calendar1->getUsers(), 'new calendar without current user should have no users'); $user = new User(); User::setCurrentUser($user); $calendar2 = new Calendar(); $this->assertCount(1, $calendar2->getUsers(), 'new calendar with current user should have a user'); $this->assertSame($user, $calendar2->getUsers()[0], 'new calendar with current user should have a user'); }
public function testUserRelation() { $userCalendar = new UserCalendar(); $user = new User(); $calendar = new Calendar(); $this->assertCount(0, $user->getUserCalendars(), 'collection is initialized on creation'); $this->assertCount(0, $calendar->getUserCalendars(), 'collection is initialized on creation'); $this->assertCount(0, $calendar->getUsers(), 'collection is initialized on creation'); $userCalendar->setUser($user); $userCalendar->setCalendar($calendar); $this->assertCount(1, $user->getUserCalendars(), 'user must be notified when userCalendar is added'); $this->assertSame($userCalendar, $user->getUserCalendars()->first(), 'original userCalendar can be retrieved from user'); $this->assertCount(1, $calendar->getUserCalendars(), 'calendar must be notified when userCalendar is added'); $this->assertSame($userCalendar, $calendar->getUserCalendars()->first(), 'original userCalendar can be retrieved from calendar'); $this->assertCount(1, $calendar->getUsers(), 'the user must now be the only one directly accessible'); $this->assertSame($user, $calendar->getUsers()->first(), 'the user must be directly accessible'); }