File tree Expand file tree Collapse file tree 6 files changed +27
-7
lines changed Expand file tree Collapse file tree 6 files changed +27
-7
lines changed Original file line number Diff line number Diff line change @@ -23,7 +23,6 @@ export default Factory.extend({
23
23
updated_at : '2017-02-24T12:34:56Z' ,
24
24
25
25
badges : ( ) => [ ] ,
26
- categories : ( ) => [ ] ,
27
26
keywords : ( ) => [ ] ,
28
27
versions : ( ) => [ ] ,
29
28
_extra_downloads : ( ) => [ ] ,
Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ export default [
32
32
} ,
33
33
} ,
34
34
] ,
35
- categories : [ ] ,
35
+ categoryIds : [ ] ,
36
36
created_at : '2014-12-08T02:08:06Z' ,
37
37
description : 'A high-level, Rust idiomatic wrapper around nanomsg.' ,
38
38
documentation : 'https://github.com/thehydroimpulse/nanomsg.rs' ,
Original file line number Diff line number Diff line change 1
- import { Model } from 'ember-cli-mirage' ;
1
+ import { Model , hasMany } from 'ember-cli-mirage' ;
2
2
3
- export default Model . extend ( { } ) ;
3
+ export default Model . extend ( {
4
+ categories : hasMany ( ) ,
5
+ } ) ;
Original file line number Diff line number Diff line change @@ -38,15 +38,14 @@ export function register(server) {
38
38
let crate = schema . crates . find ( crateId ) ;
39
39
if ( ! crate ) return notFound ( ) ;
40
40
41
- let categories = schema . categories . all ( ) . filter ( category => ( crate . categories || [ ] ) . indexOf ( category . id ) !== - 1 ) ;
42
41
let keywords = schema . keywords . all ( ) . filter ( keyword => ( crate . keywords || [ ] ) . indexOf ( keyword . id ) !== - 1 ) ;
43
42
let versions = schema . versions
44
43
. all ( )
45
44
. filter ( version => ( crate . versions || [ ] ) . indexOf ( parseInt ( version . id , 10 ) ) !== - 1 ) ;
46
45
47
46
return {
48
47
...this . serialize ( crate ) ,
49
- ...this . serialize ( categories ) ,
48
+ ...this . serialize ( crate . categories ) ,
50
49
...this . serialize ( keywords ) ,
51
50
...this . serialize ( versions ) ,
52
51
} ;
Original file line number Diff line number Diff line change @@ -30,4 +30,23 @@ export default BaseSerializer.extend({
30
30
versions : `/api/v1/crates/${ crate . id } /versions` ,
31
31
} ;
32
32
} ,
33
+
34
+ getHashForResource ( ) {
35
+ let [ hash , addToIncludes ] = BaseSerializer . prototype . getHashForResource . apply ( this , arguments ) ;
36
+
37
+ if ( Array . isArray ( hash ) ) {
38
+ for ( let resource of hash ) {
39
+ this . _adjust ( resource ) ;
40
+ }
41
+ } else {
42
+ this . _adjust ( hash ) ;
43
+ }
44
+
45
+ return [ hash , addToIncludes ] ;
46
+ } ,
47
+
48
+ _adjust ( hash ) {
49
+ hash . categories = hash . category_ids ;
50
+ delete hash . category_ids ;
51
+ } ,
33
52
} ) ;
Original file line number Diff line number Diff line change @@ -282,12 +282,13 @@ module('Mirage | Keywords', function(hooks) {
282
282
test ( 'includes related categories' , async function ( assert ) {
283
283
this . server . create ( 'category' , { category : 'no-std' } ) ;
284
284
this . server . create ( 'category' , { category : 'cli' } ) ;
285
- this . server . create ( 'crate' , { name : 'rand' , categories : [ 'no-std' ] } ) ;
285
+ this . server . create ( 'crate' , { name : 'rand' , categoryIds : [ 'no-std' ] } ) ;
286
286
287
287
let response = await fetch ( '/api/v1/crates/rand' ) ;
288
288
assert . equal ( response . status , 200 ) ;
289
289
290
290
let responsePayload = await response . json ( ) ;
291
+ assert . deepEqual ( responsePayload . crate . categories , [ 'no-std' ] ) ;
291
292
assert . deepEqual ( responsePayload . categories , [
292
293
{
293
294
id : 'no-std' ,
You can’t perform that action at this time.
0 commit comments