Exemplo n.º 1
0
 /**
  * @param array           $array
  * @param \Closure|string $callback
  * @return Source
  */
 public static function build(array $array, $callback) : Source
 {
     $source = new Source();
     $source->setParts($array);
     if (is_string($callback)) {
         $source->setDataProviderClassName($callback);
     } else {
         $source->setCallback($callback);
     }
     return $source;
 }
Exemplo n.º 2
0
 public static function matches(Source $source, array $request)
 {
     $definition = $source->getParts();
     if (count($definition) != count($request)) {
         return false;
     }
     foreach ($definition as $key => $definitionOfPart) {
         $part = $request[$key];
         if (!self::partMatches('' . $definitionOfPart, !is_array($part) ? [$part] : $part)) {
             return false;
         }
     }
     return true;
 }
Exemplo n.º 3
0
 public function testRegexNotValid()
 {
     /* Given */
     $source = Source::build(['tracks', '/[0-9]+/'], function () {
     });
     /* When */
     $result = RouteMatcher::matches($source, ['tracks', 'length']);
     /* Then */
     assertThat($result, is(false));
 }
Exemplo n.º 4
0
 public function testClassInitializer()
 {
     /* Given */
     $dug = new Dug();
     $classInitializer = new ClassInitializerSpy();
     $dug->setClassInitializer($classInitializer);
     $source = Source::build(['users', '/[0-9]+/'], UserProvider::class);
     $dug->register($source);
     /* When */
     $dug->fetch(['users', 1]);
     /* Then */
     assertThat($classInitializer->initializedClass, is(UserProvider::class));
 }
Exemplo n.º 5
0
 public function testMultipleReferencesShouldCallOnce()
 {
     /* Given */
     $dug = \Mockery::mock(Dug::class);
     $source = Source::build(['users', '/[0-9]+/'], function () {
     });
     $dug->shouldReceive('sourceForPath')->once()->andReturn($source);
     $user1 = Data::build(['users', 1], ['id' => 1, 'name' => 'Joris']);
     $user2 = Data::build(['users', 2], ['id' => 2, 'name' => 'Jisca']);
     $dug->shouldReceive('data')->once()->andReturn([$user1, $user2]);
     $input = [Data::build(['foo', 1], ['user' => new Reference(['users', 1])]), Data::build(['foo', 2], ['user' => new Reference(['users', 2])])];
     /* When */
     $referenceResolver = new ReferenceResolver($dug);
     $result = $referenceResolver->process($input);
     /* Then */
     assertThat(count($result), is(2));
     assertThat($result[0]->getValue()['user'], is([$user1]));
     assertThat($result[1]->getValue()['user'], is([$user2]));
 }
Exemplo n.º 6
0
 public function testInjectCallbackClass()
 {
     /* Given */
     $dug = new Dug();
     $source = Source::build(['users', '/[0-9]+/'], UserProvider::class);
     $dug->register($source);
     /* When */
     $result = $dug->fetch(['users', 1]);
     /* Then */
     assertThat($result[0]['source'], 'UserProvider');
 }