@@ -11,6 +11,87 @@ module('Model | Version', function (hooks) {
11
11
this . store = this . owner . lookup ( 'service:store' ) ;
12
12
} ) ;
13
13
14
+ module ( 'featuresList' , function ( ) {
15
+ async function prepare ( context , { features } ) {
16
+ let { server, store } = context ;
17
+
18
+ let crate = server . create ( 'crate' ) ;
19
+ server . create ( 'version' , { crate, features } ) ;
20
+
21
+ let crateRecord = await store . findRecord ( 'crate' , crate . id ) ;
22
+ let versions = ( await crateRecord . versions ) . toArray ( ) ;
23
+ return versions [ 0 ] ;
24
+ }
25
+
26
+ test ( '`features: {}` results in empty list' , async function ( assert ) {
27
+ let version = await prepare ( this , { features : { } } ) ;
28
+ assert . deepEqual ( version . featureList , [ ] ) ;
29
+ } ) ;
30
+
31
+ test ( '`features: null` results in empty list' , async function ( assert ) {
32
+ let version = await prepare ( this , { features : null } ) ;
33
+ assert . deepEqual ( version . featureList , [ ] ) ;
34
+ } ) ;
35
+
36
+ test ( 'real world case' , async function ( assert ) {
37
+ let features = {
38
+ alloc : [ 'rand_core/alloc' ] ,
39
+ default : [ 'std' , 'std_rng' ] ,
40
+ getrandom : [ 'rand_core/getrandom' ] ,
41
+ nightly : [ ] ,
42
+ serde1 : [ 'serde' ] ,
43
+ simd_support : [ 'packed_simd' ] ,
44
+ small_rng : [ ] ,
45
+ std : [ 'rand_core/std' , 'rand_chacha/std' , 'alloc' , 'getrandom' , 'libc' ] ,
46
+ std_rng : [ 'rand_chacha' , 'rand_hc' ] ,
47
+ } ;
48
+
49
+ let version = await prepare ( this , { features } ) ;
50
+ assert . deepEqual ( version . featureList , [
51
+ {
52
+ dependencies : [ 'rand_core/alloc' ] ,
53
+ isDefault : false ,
54
+ name : 'alloc' ,
55
+ } ,
56
+ {
57
+ dependencies : [ 'rand_core/getrandom' ] ,
58
+ isDefault : false ,
59
+ name : 'getrandom' ,
60
+ } ,
61
+ {
62
+ dependencies : [ ] ,
63
+ isDefault : false ,
64
+ name : 'nightly' ,
65
+ } ,
66
+ {
67
+ dependencies : [ 'serde' ] ,
68
+ isDefault : false ,
69
+ name : 'serde1' ,
70
+ } ,
71
+ {
72
+ dependencies : [ 'packed_simd' ] ,
73
+ isDefault : false ,
74
+ name : 'simd_support' ,
75
+ } ,
76
+ {
77
+ dependencies : [ ] ,
78
+ isDefault : false ,
79
+ name : 'small_rng' ,
80
+ } ,
81
+ {
82
+ dependencies : [ 'rand_core/std' , 'rand_chacha/std' , 'alloc' , 'getrandom' , 'libc' ] ,
83
+ isDefault : true ,
84
+ name : 'std' ,
85
+ } ,
86
+ {
87
+ dependencies : [ 'rand_chacha' , 'rand_hc' ] ,
88
+ isDefault : true ,
89
+ name : 'std_rng' ,
90
+ } ,
91
+ ] ) ;
92
+ } ) ;
93
+ } ) ;
94
+
14
95
test ( '`published_by` relationship is assigned correctly' , async function ( assert ) {
15
96
let user = this . server . create ( 'user' , { name : 'JD' } ) ;
16
97
0 commit comments