tag:github.com,2008:https://github.com/nuwave/laravel-graphql-relay/releases Release notes from laravel-graphql-relay 2016-11-17T13:57:28Z tag:github.com,2008:Repository/46281174/v0.3.4 2016-11-17T13:58:15Z v0.3.4: Merge pull request #25 from hosmelq/master <p>Merge pull request <a class="issue-link js-issue-link" href="https://github.com/nuwave/laravel-graphql-relay/pull/25">#25</a> from hosmelq/master</p> <p>Use getKey method instead of id</p> chrissm79 tag:github.com,2008:Repository/46281174/v0.3.3 2016-04-27T23:08:36Z v0.3.3: Merge pull request #21 from davidstoker/add-root-value <p>Merge pull request <a class="issue-link js-issue-link" href="https://github.com/nuwave/laravel-graphql-relay/pull/21">#21</a> from davidstoker/add-root-value</p> <p>Allow for passing rootValue</p> chrissm79 tag:github.com,2008:Repository/46281174/v0.3.2 2016-04-25T14:35:31Z v0.3.2 No content. chrissm79 tag:github.com,2008:Repository/46281174/v0.3.1 2016-04-22T20:27:54Z v0.3.1 No content. chrissm79 tag:github.com,2008:Repository/46281174/v0.3.0 2016-03-12T15:17:43Z v0.3.0: Merge pull request #10 from nuwave/develop <p>Merge pull request <a class="issue-link js-issue-link" href="https://github.com/nuwave/laravel-graphql-relay/pull/10">#10</a> from nuwave/develop</p> <p>Merge develop branch</p> chrissm79 tag:github.com,2008:Repository/46281174/v0.2.0 2016-01-27T13:57:13Z v0.2.0 No content. chrissm79 tag:github.com,2008:Repository/46281174/v0.1.6 2016-01-25T02:13:24Z v0.1.6 No content. chrissm79 tag:github.com,2008:Repository/46281174/v0.1.5 2016-01-08T17:47:42Z Dependency version bump No content. chrissm79 tag:github.com,2008:Repository/46281174/v0.1.4 2015-11-23T21:33:16Z Default resolver for connections <p>If no resolve method is set on a connection, the following function will be used:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="function ($collection, array $args, ResolveInfo $info) use ($name) { $items = []; if ($collection instanceof Model) { $items = $collection-&gt;getAttribute($name); } else if (is_object($collection) &amp;&amp; method_exists($collection, 'get')) { $items = $collection-&gt;get($name); } else if (is_array($collection) &amp;&amp; isset($collection[$name])) { $items = new Collection($collection[$name]); } if (isset($args['first'])) { $total = $items-&gt;count(); $first = $args['first']; $after = $this-&gt;decodeCursor($args); $currentPage = $first &amp;&amp; $after ? floor(($first + $after) / $first) : 1; return new Paginator( $items-&gt;slice($after)-&gt;take($first), $total, $first, $currentPage ); } return new Paginator( $items, count($items), count($items) ); }"><pre><span class="pl-k">function</span> (<span class="pl-s1"><span class="pl-c1">$</span>collection</span>, <span class="pl-smi">array</span> <span class="pl-s1"><span class="pl-c1">$</span>args</span>, <span class="pl-smi"><span class="pl-smi">ResolveInfo</span></span> <span class="pl-s1"><span class="pl-c1">$</span>info</span>) <span class="pl-k">use</span> (<span class="pl-s1"><span class="pl-c1">$</span>name</span>) { <span class="pl-s1"><span class="pl-c1">$</span>items</span> = []; <span class="pl-k">if</span> (<span class="pl-s1"><span class="pl-c1">$</span>collection</span> <span class="pl-k">instanceof</span> Model) { <span class="pl-s1"><span class="pl-c1">$</span>items</span> = <span class="pl-s1"><span class="pl-c1">$</span>collection</span>-&gt;<span class="pl-en">getAttribute</span>(<span class="pl-s1"><span class="pl-c1">$</span>name</span>); } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-en">is_object</span>(<span class="pl-s1"><span class="pl-c1">$</span>collection</span>) &amp;&amp; <span class="pl-en">method_exists</span>(<span class="pl-s1"><span class="pl-c1">$</span>collection</span>, <span class="pl-s">'<span class="pl-s">get</span>'</span>)) { <span class="pl-s1"><span class="pl-c1">$</span>items</span> = <span class="pl-s1"><span class="pl-c1">$</span>collection</span>-&gt;<span class="pl-en">get</span>(<span class="pl-s1"><span class="pl-c1">$</span>name</span>); } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-en">is_array</span>(<span class="pl-s1"><span class="pl-c1">$</span>collection</span>) &amp;&amp; <span class="pl-en">isset</span>(<span class="pl-s1"><span class="pl-c1">$</span>collection</span>[<span class="pl-s1"><span class="pl-c1">$</span>name</span>])) { <span class="pl-s1"><span class="pl-c1">$</span>items</span> = <span class="pl-k">new</span> <span class="pl-v">Collection</span>(<span class="pl-s1"><span class="pl-c1">$</span>collection</span>[<span class="pl-s1"><span class="pl-c1">$</span>name</span>]); } <span class="pl-k">if</span> (<span class="pl-en">isset</span>(<span class="pl-s1"><span class="pl-c1">$</span>args</span>[<span class="pl-s">'<span class="pl-s">first</span>'</span>])) { <span class="pl-s1"><span class="pl-c1">$</span>total</span> = <span class="pl-s1"><span class="pl-c1">$</span>items</span>-&gt;<span class="pl-en">count</span>(); <span class="pl-s1"><span class="pl-c1">$</span>first</span> = <span class="pl-s1"><span class="pl-c1">$</span>args</span>[<span class="pl-s">'<span class="pl-s">first</span>'</span>]; <span class="pl-s1"><span class="pl-c1">$</span>after</span> = <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">decodeCursor</span>(<span class="pl-s1"><span class="pl-c1">$</span>args</span>); <span class="pl-s1"><span class="pl-c1">$</span>currentPage</span> = <span class="pl-s1"><span class="pl-c1">$</span>first</span> &amp;&amp; <span class="pl-s1"><span class="pl-c1">$</span>after</span> ? <span class="pl-en">floor</span>((<span class="pl-s1"><span class="pl-c1">$</span>first</span> + <span class="pl-s1"><span class="pl-c1">$</span>after</span>) / <span class="pl-s1"><span class="pl-c1">$</span>first</span>) : <span class="pl-c1">1</span>; <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-v">Paginator</span>( <span class="pl-s1"><span class="pl-c1">$</span>items</span>-&gt;<span class="pl-en">slice</span>(<span class="pl-s1"><span class="pl-c1">$</span>after</span>)-&gt;<span class="pl-en">take</span>(<span class="pl-s1"><span class="pl-c1">$</span>first</span>), <span class="pl-s1"><span class="pl-c1">$</span>total</span>, <span class="pl-s1"><span class="pl-c1">$</span>first</span>, <span class="pl-s1"><span class="pl-c1">$</span>currentPage</span> ); } <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-v">Paginator</span>( <span class="pl-s1"><span class="pl-c1">$</span>items</span>, <span class="pl-en">count</span>(<span class="pl-s1"><span class="pl-c1">$</span>items</span>), <span class="pl-en">count</span>(<span class="pl-s1"><span class="pl-c1">$</span>items</span>) ); }</pre></div> chrissm79 tag:github.com,2008:Repository/46281174/v0.1.3 2015-11-22T14:58:36Z Added mutation test helper <p>Helper trait that allows you to easily test mutations:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;?php use Nuwave\Relay\Traits\MutationTestTrait; use Illuminate\Foundation\Testing\DatabaseTransactions; class CreateUserMutationTest extends TestCase { use DatabaseTransactions, MutationTestTrait; /** * @test */ public function itCanCreateANewUser() { $this-&gt;mutate('createUser', [ 'firstName' =&gt; 'John', 'lastName' =&gt; 'Doe', 'email' =&gt; 'john.doe@example.com', 'password' =&gt; 'foobar', 'password_confirmation' =&gt; 'foobar' ])-&gt;seeJson([ 'firstName' =&gt; 'John', 'lastName' =&gt; 'Doe' ]); } } "><pre><span class="pl-ent">&lt;?php</span> <span class="pl-k">use</span> <span class="pl-v">Nuwave</span>\<span class="pl-v">Relay</span>\<span class="pl-v">Traits</span>\<span class="pl-smi">MutationTestTrait</span>; <span class="pl-k">use</span> <span class="pl-v">Illuminate</span>\<span class="pl-v">Foundation</span>\<span class="pl-v">Testing</span>\<span class="pl-smi">DatabaseTransactions</span>; <span class="pl-k">class</span> CreateUserMutationTest <span class="pl-k">extends</span> TestCase { <span class="pl-k">use</span> DatabaseTransactions, MutationTestTrait; <span class="pl-c">/**</span> <span class="pl-c"> * @test</span> <span class="pl-c"> */</span> <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">itCanCreateANewUser</span>() { <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">mutate</span>(<span class="pl-s">'<span class="pl-s">createUser</span>'</span>, [ <span class="pl-s">'<span class="pl-s">firstName</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">John</span>'</span>, <span class="pl-s">'<span class="pl-s">lastName</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Doe</span>'</span>, <span class="pl-s">'<span class="pl-s">email</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">john.doe@example.com</span>'</span>, <span class="pl-s">'<span class="pl-s">password</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foobar</span>'</span>, <span class="pl-s">'<span class="pl-s">password_confirmation</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foobar</span>'</span> ])-&gt;<span class="pl-en">seeJson</span>([ <span class="pl-s">'<span class="pl-s">firstName</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">John</span>'</span>, <span class="pl-s">'<span class="pl-s">lastName</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Doe</span>'</span> ]); } }</pre></div> chrissm79