@@ -11,6 +11,87 @@ module('Model | Version', function (hooks) {
1111 this . store = this . owner . lookup ( 'service:store' ) ;
1212 } ) ;
1313
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+
1495 test ( '`published_by` relationship is assigned correctly' , async function ( assert ) {
1596 let user = this . server . create ( 'user' , { name : 'JD' } ) ;
1697
0 commit comments