diff --git a/Tests/Observer/ObserverTest.php b/Tests/Observer/ObserverTest.php new file mode 100644 index 0000000..79bf61a --- /dev/null +++ b/Tests/Observer/ObserverTest.php @@ -0,0 +1,53 @@ +observer = new UserObserver(); + } + + public function testNotify() + { + $this->expectOutputString('DesignPatterns\Observer\User has been updated'); + $subject = new User(); + + $subject->attach($this->observer); + $subject->property = 123; + } + + public function testAttachDetach() + { + $subject = new User(); + $this->assertAttributeEmpty('_observers', $subject); + $subject->attach($this->observer); + $this->assertAttributeNotEmpty('_observers', $subject); + $subject->detach($this->observer); + $this->assertAttributeEmpty('_observers', $subject); + } + + public function testUpdateCalling() + { + $subject = new User(); + $observer = $this->getMock('SplObserver'); + $subject->attach($observer); + + $observer->expects($this->once()) + ->method('update') + ->with($subject); + + $subject->notify(); + } + +} \ No newline at end of file