| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- <?php
- namespace Illuminate\Tests\Support;
- use Illuminate\Support\Collection;
- use Illuminate\Support\MessageBag;
- use PHPUnit\Framework\TestCase;
- class SupportMessageBagTest extends TestCase
- {
- public function testUniqueness()
- {
- $container = new MessageBag;
- $container->add('foo', 'bar');
- $container->add('foo', 'bar');
- $messages = $container->getMessages();
- $this->assertEquals(['bar'], $messages['foo']);
- }
- public function testMessagesAreAdded()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('foo', 'baz');
- $container->add('boom', 'bust');
- $messages = $container->getMessages();
- $this->assertEquals(['bar', 'baz'], $messages['foo']);
- $this->assertEquals(['bust'], $messages['boom']);
- }
- public function testKeys()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('foo', 'baz');
- $container->add('boom', 'bust');
- $this->assertEquals(['foo', 'boom'], $container->keys());
- }
- public function testMessagesMayBeMerged()
- {
- $container = new MessageBag(['username' => ['foo']]);
- $container->merge(['username' => ['bar']]);
- $this->assertEquals(['username' => ['foo', 'bar']], $container->getMessages());
- }
- public function testMessageBagsCanBeMerged()
- {
- $container = new MessageBag(['foo' => ['bar']]);
- $otherContainer = new MessageBag(['foo' => ['baz'], 'bar' => ['foo']]);
- $container->merge($otherContainer);
- $this->assertEquals(['foo' => ['bar', 'baz'], 'bar' => ['foo']], $container->getMessages());
- }
- public function testMessageBagsCanConvertToArrays()
- {
- $container = new MessageBag([
- Collection::make(['foo', 'bar']),
- Collection::make(['baz', 'qux']),
- ]);
- $this->assertSame([['foo', 'bar'], ['baz', 'qux']], $container->getMessages());
- }
- public function testGetReturnsArrayOfMessagesByKey()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('foo', 'baz');
- $this->assertEquals(['bar', 'baz'], $container->get('foo'));
- }
- public function testGetReturnsArrayOfMessagesByImplicitKey()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo.1', 'bar');
- $container->add('foo.2', 'baz');
- $this->assertEquals(['foo.1' => ['bar'], 'foo.2' => ['baz']], $container->get('foo.*'));
- }
- public function testFirstReturnsSingleMessage()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('foo', 'baz');
- $this->assertSame('bar', $container->first('foo'));
- }
- public function testFirstReturnsEmptyStringIfNoMessagesFound()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $this->assertSame('', $container->first('foo'));
- }
- public function testFirstReturnsSingleMessageFromDotKeys()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('name.first', 'jon');
- $container->add('name.last', 'snow');
- $this->assertSame('jon', $container->first('name.*'));
- }
- public function testHasIndicatesExistence()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $this->assertTrue($container->has('foo'));
- $this->assertFalse($container->has('bar'));
- }
- public function testHasWithKeyNull()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $this->assertTrue($container->has(null));
- }
- public function testHasAnyIndicatesExistence()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $this->assertFalse($container->hasAny());
- $container->add('foo', 'bar');
- $container->add('bar', 'foo');
- $container->add('boom', 'baz');
- $this->assertTrue($container->hasAny(['foo', 'bar']));
- $this->assertTrue($container->hasAny('foo', 'bar'));
- $this->assertTrue($container->hasAny(['boom', 'baz']));
- $this->assertTrue($container->hasAny('boom', 'baz'));
- $this->assertFalse($container->hasAny(['baz']));
- $this->assertFalse($container->hasAny('baz'));
- $this->assertFalse($container->hasAny('baz', 'biz'));
- }
- public function testHasIndicatesExistenceOfAllKeys()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('bar', 'foo');
- $container->add('boom', 'baz');
- $this->assertTrue($container->has(['foo', 'bar', 'boom']));
- $this->assertFalse($container->has(['foo', 'bar', 'boom', 'baz']));
- $this->assertFalse($container->has(['foo', 'baz']));
- }
- public function testHasIndicatesNoneExistence()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $this->assertFalse($container->has('foo'));
- }
- public function testAllReturnsAllMessages()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('boom', 'baz');
- $this->assertEquals(['bar', 'baz'], $container->all());
- }
- public function testFormatIsRespected()
- {
- $container = new MessageBag;
- $container->setFormat('<p>:message</p>');
- $container->add('foo', 'bar');
- $container->add('boom', 'baz');
- $this->assertSame('<p>bar</p>', $container->first('foo'));
- $this->assertEquals(['<p>bar</p>'], $container->get('foo'));
- $this->assertEquals(['<p>bar</p>', '<p>baz</p>'], $container->all());
- $this->assertSame('bar', $container->first('foo', ':message'));
- $this->assertEquals(['bar'], $container->get('foo', ':message'));
- $this->assertEquals(['bar', 'baz'], $container->all(':message'));
- $container->setFormat(':key :message');
- $this->assertSame('foo bar', $container->first('foo'));
- }
- public function testUnique()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('foo2', 'bar');
- $container->add('boom', 'baz');
- $this->assertEquals([0 => 'bar', 2 => 'baz'], $container->unique());
- }
- public function testMessageBagReturnsCorrectArray()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('boom', 'baz');
- $this->assertEquals(['foo' => ['bar'], 'boom' => ['baz']], $container->toArray());
- }
- public function testMessageBagReturnsExpectedJson()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo', 'bar');
- $container->add('boom', 'baz');
- $this->assertSame('{"foo":["bar"],"boom":["baz"]}', $container->toJson());
- }
- public function testCountReturnsCorrectValue()
- {
- $container = new MessageBag;
- $this->assertCount(0, $container);
- $container->add('foo', 'bar');
- $container->add('foo', 'baz');
- $container->add('boom', 'baz');
- $this->assertCount(3, $container);
- }
- public function testCountable()
- {
- $container = new MessageBag;
- $container->add('foo', 'bar');
- $container->add('boom', 'baz');
- $this->assertCount(2, $container);
- }
- public function testConstructor()
- {
- $messageBag = new MessageBag(['country' => 'Azerbaijan', 'capital' => 'Baku']);
- $this->assertEquals(['country' => ['Azerbaijan'], 'capital' => ['Baku']], $messageBag->getMessages());
- }
- public function testFirstFindsMessageForWildcardKey()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $container->add('foo.bar', 'baz');
- $this->assertSame('baz', $container->first('foo.*'));
- }
- public function testIsEmptyTrue()
- {
- $container = new MessageBag;
- $this->assertTrue($container->isEmpty());
- }
- public function testIsEmptyFalse()
- {
- $container = new MessageBag;
- $container->add('foo.bar', 'baz');
- $this->assertFalse($container->isEmpty());
- }
- public function testIsNotEmptyTrue()
- {
- $container = new MessageBag;
- $container->add('foo.bar', 'baz');
- $this->assertTrue($container->isNotEmpty());
- }
- public function testIsNotEmptyFalse()
- {
- $container = new MessageBag;
- $this->assertFalse($container->isNotEmpty());
- }
- public function testToString()
- {
- $container = new MessageBag;
- $container->add('foo.bar', 'baz');
- $this->assertSame('{"foo.bar":["baz"]}', (string) $container);
- }
- public function testGetFormat()
- {
- $container = new MessageBag;
- $container->setFormat(':message');
- $this->assertSame(':message', $container->getFormat());
- }
- public function testConstructorUniquenessConsistency()
- {
- $messageBag = new MessageBag(['messages' => ['first', 'second', 'third', 'third']]);
- $messages = $messageBag->getMessages();
- $this->assertEquals(['first', 'second', 'third'], $messages['messages']);
- $messageBag = new MessageBag;
- $messageBag->add('messages', 'first');
- $messageBag->add('messages', 'second');
- $messageBag->add('messages', 'third');
- $messageBag->add('messages', 'third');
- $messages = $messageBag->getMessages();
- $this->assertEquals(['first', 'second', 'third'], $messages['messages']);
- }
- }
|