3
3
const assert = require ( "assert" ) ;
4
4
const Pool = require ( "./pool" ) ;
5
5
const { range, times, constant} = require ( "lodash" ) ;
6
- const { getPlayableSets } = require ( "./data" ) ;
6
+ const { getPlayableSets} = require ( "./data" ) ;
7
+
8
+ const assertPackIsCorrect = ( got ) => {
9
+ const cardIds = new Set ( ) ;
10
+ let expectedCardsSize = 0 ;
11
+ got . forEach ( pool => pool . forEach ( card => {
12
+ assert ( card . name !== undefined ) ;
13
+ assert ( card . cardId !== undefined ) ;
14
+ cardIds . add ( card . cardId ) ;
15
+ expectedCardsSize ++ ;
16
+ } ) ) ;
17
+ assert . equal ( cardIds . size , expectedCardsSize , "cards should all have a unique ID" ) ;
18
+ } ;
7
19
8
20
describe ( "Acceptance tests for Pool class" , ( ) => {
9
21
describe ( "can make a cube pool" , ( ) => {
10
22
it ( "should return a sealed cube pool with length equal to player length" , ( ) => {
11
23
const cubeList = times ( 720 , constant ( "island" ) ) ;
12
24
const playersLength = 8 ;
13
- const got = Pool . SealedCube ( { cubeList, playersLength } ) ;
14
- assert . equal ( playersLength , got . length ) ;
15
- got . forEach ( pool => pool . forEach ( card => assert ( card . name != undefined ) ) ) ;
25
+ const playerPoolSize = 90 ;
26
+ const got = Pool . SealedCube ( { cubeList, playersLength, playerPoolSize} ) ;
27
+ assert . equal ( got . length , playersLength ) ;
28
+ assertPackIsCorrect ( got ) ;
16
29
} ) ;
17
30
18
31
it ( "should return a draft cube pool with length equal to player length per playersPack" , ( ) => {
19
32
const cubeList = times ( 720 , constant ( "island" ) ) ;
20
33
const playersLength = 8 ;
21
34
const packsNumber = 3 ;
22
- const got = Pool . DraftCube ( { cubeList, playersLength, packsNumber } ) ;
23
- assert . equal ( playersLength * packsNumber , got . length ) ;
24
- got . forEach ( pool => pool . forEach ( card => assert ( card . name != undefined ) ) ) ;
35
+ const playerPackSize = 15 ;
36
+ const got = Pool . DraftCube ( { cubeList, playersLength, packsNumber, playerPackSize} ) ;
37
+ assert . equal ( got . length , playersLength * packsNumber ) ;
38
+ assertPackIsCorrect ( got ) ;
25
39
} ) ;
26
40
} ) ;
27
41
28
42
describe ( "can make a normal pool" , ( ) => {
29
43
it ( "should return a sealed pool with length equal to player length" , ( ) => {
30
- const sets = times ( 6 , constant ( "M19" ) ) ;
44
+ const packsNumber = 6 ;
45
+ const sets = times ( packsNumber , constant ( "M19" ) ) ;
31
46
const playersLength = 8 ;
32
- const got = Pool . SealedNormal ( { sets, playersLength } ) ;
33
- assert . equal ( playersLength , got . length ) ;
34
- got . forEach ( pool => pool . forEach ( card => assert ( card . name != undefined ) ) ) ;
47
+ const got = Pool . SealedNormal ( { sets, playersLength} ) ;
48
+ assert . equal ( got . length , playersLength ) ;
49
+ assertPackIsCorrect ( got ) ;
35
50
} ) ;
36
51
37
52
it ( "should return a draft pool with length equal to player length per playersPack" , ( ) => {
38
- const sets = times ( 3 , constant ( "M19" ) ) ;
53
+ const packsNumber = 3 ;
54
+ const sets = times ( packsNumber , constant ( "M19" ) ) ;
39
55
const playersLength = 8 ;
40
- const got = Pool . DraftNormal ( { sets, playersLength } ) ;
41
- assert . equal ( playersLength * 3 , got . length ) ;
42
- got . forEach ( pool => pool . forEach ( card => assert ( card . name != undefined ) ) ) ;
56
+ const got = Pool . DraftNormal ( { sets, playersLength} ) ;
57
+ assert . equal ( got . length , playersLength * packsNumber ) ;
58
+ assertPackIsCorrect ( got ) ;
43
59
} ) ;
44
60
} ) ;
45
61
46
62
describe ( "can make a chaos pool" , ( ) => {
47
63
it ( "should return a sealed chaos pool with length equal to player length" , ( ) => {
48
64
const playersLength = 8 ;
49
65
const got = Pool . SealedChaos ( { modernOnly : true , totalChaos : true , playersLength } ) ;
50
- assert . equal ( playersLength , got . length ) ;
51
- got . forEach ( pool => pool . forEach ( card => assert ( card . name != undefined ) ) ) ;
66
+ assert . equal ( got . length , playersLength ) ;
67
+ assertPackIsCorrect ( got ) ;
52
68
} ) ;
53
69
54
70
it ( "should return a draft chaos pool with length equal to player length per playersPack" , ( ) => {
55
71
const playersLength = 8 ;
56
- const got = Pool . DraftChaos ( { modernOnly : true , totalChaos : true , playersLength } ) ;
57
- assert . equal ( playersLength * 3 , got . length ) ;
58
- got . forEach ( pool => pool . forEach ( card => assert ( card . name != undefined ) ) ) ;
72
+ const packsNumber = 3 ;
73
+ const got = Pool . DraftChaos ( { packsNumber, modernOnly : true , totalChaos : true , playersLength} ) ;
74
+ assert . equal ( got . length , playersLength * packsNumber ) ;
75
+ assertPackIsCorrect ( got ) ;
59
76
} ) ;
60
77
} ) ;
61
78
62
79
describe ( "can make a TimeSpiral pool" , ( ) => {
63
80
it ( "should return a timespiral pool" , ( ) => {
64
81
const [ got ] = Pool . DraftNormal ( { playersLength : 1 , sets : [ "TSP" ] } ) ;
65
82
assert . equal ( got . length , 15 ) ;
66
- got . forEach ( card => assert ( card . name != undefined ) ) ;
83
+ assertPackIsCorrect ( [ got ] ) ;
67
84
} ) ;
68
85
} ) ;
69
86
@@ -75,10 +92,8 @@ describe("Acceptance tests for Pool class", () => {
75
92
if ( code === "random" || Date . parse ( releaseDate ) > new Date ( ) || code === "UST" ) {
76
93
return ;
77
94
}
78
- const [ got ] = Pool . DraftNormal ( { playersLength : 1 , sets : [ code ] } ) ;
79
- got . forEach ( card => {
80
- assert ( card . name != undefined , `${ code } has an error: ${ card } ` ) ;
81
- } ) ;
95
+ const got = Pool . DraftNormal ( { playersLength : 1 , sets : [ code ] } ) ;
96
+ assertPackIsCorrect ( got ) ;
82
97
} ) ;
83
98
} ) ;
84
99
} ) ;
0 commit comments