public function testAddNewFile() { $expectedList = ['files://h.txt', 'files://a.jpg', 'files://b.txt', 'files://c.txt', 'files://d.doc', 'files://e.mp3', 'theme://f.txt']; $this->users->expects($this->once())->method('saveUser')->with(['stack' => $expectedList]); $file = $this->stack->add('h.txt', $removed); $this->assertTrue($file instanceof FileInterface, 'File object should be returned from add method'); $this->assertEquals('files://h.txt', $file->getFullPath(), 'File object should be returned from add method'); $this->assertTrue($removed instanceof FileInterface, 'Add method should set the removed parameter to the file object removed'); $this->assertEquals('theme://g.txt', $removed->getFullPath(), 'Removed file should be the last file on the stack before the new one was added'); $this->assertFiles($this->stack->getList(), $expectedList, 'Adding new file should prepend it to the stack and remove the oldest file'); $this->assertEquals($expectedList, $this->session->get('stack'), 'Adding a file to the stack should persist change to session'); }