gw2e-account-statistics 3.8.0 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,908 +0,0 @@
1
- /* eslint-env node, mocha */
2
- import { expect } from 'chai'
3
- import itemsStatistics from '../src/statistics/items'
4
-
5
- const generateAccount = (items) => {
6
- return {
7
- bank: items.slice(0, 1),
8
- characters: [{
9
- name: 'Holds items',
10
- equipment: [],
11
- bags: [
12
- {inventory: items.slice(1)}
13
- ]
14
- }]
15
- }
16
- }
17
-
18
- describe('statistics > items', () => {
19
- it('exits out when one of the permissions is missing', () => {
20
- const emptyObject = {
21
- baubleInfusions: null,
22
- brokenSpoons: null,
23
- shinyBaubles: null,
24
- chakEggSacks: null,
25
- fractalTonics: null,
26
- ghostlyInfusions: null,
27
- legendaryItems: null,
28
- legendaryItemsWeapon: null,
29
- legendaryItemsArmor: null,
30
- legendaryItemsBack: null,
31
- legendaryItemsTrinket: null,
32
- luminescentRefractors: null,
33
- preservedQueenBees: null,
34
- permanentTools: null,
35
- whiteMantlePortalDevices: null,
36
- blackLionClaimTickets: null,
37
- instruments: null,
38
- musicBoxes: null,
39
- chakEggs: null,
40
- fossilizedInsects: null,
41
- reclaimedMetalPlates: null,
42
- championBags: null,
43
- tripleTroubleChests: null,
44
- tequatlChests: null,
45
- vbHerosChoice: null,
46
- tdHerosChoice: null,
47
- abHerosChoice: null,
48
- dsHerosChoice: null,
49
- crystalOasisHerosChoice: null,
50
- elonRiverlandsHerosChoice: null,
51
- theDesolationHerosChoice: null,
52
- domainOfVabbiHerosChoice: null,
53
- uniqueTonics: null,
54
- bloodRubies: null,
55
- petrifiedWood: null,
56
- tomesOfKnowledge: null,
57
- permanentContracts: null,
58
- freshWinterberries: null,
59
- wintersHeartInfusions: null,
60
- kodasWarmthEnrichment: null,
61
- phospholuminescentInfusions: null,
62
- gemstoreToys: null,
63
- blackLionMiniatureClaimTickets: null,
64
- jadeShards: null,
65
- giftsOfExploration: null,
66
- giftsOfBattle: null,
67
- dragoniteOre: null,
68
- bloodstoneDust: null,
69
- empyrealFragments: null,
70
- crystallineOre: null,
71
- airshipOil: null,
72
- auricDust: null,
73
- leyLineSparks: null,
74
- _luckFromItems: null,
75
- legendarySpikes: null,
76
- fireOrchidBlossoms: null,
77
- orrianPearls: null,
78
- liquidAurillium: null,
79
- celestialInfusion: null,
80
- celestialInfusionRed: null,
81
- celestialInfusionBlue: null,
82
- frostLegionInfusion: null,
83
- abyssalInfusion: null,
84
- ottersBlessingEnrichment: null,
85
- celebratoryBirthdayEnrichment: null,
86
- festiveConfettiInfusions: null,
87
- emberInfusions: null,
88
- mysticInfusions: null,
89
- peerlessInfusions: null,
90
- toyShellInfusions: null,
91
- kralkatiteOre: null,
92
- potionOfPvpRewards: null,
93
- potionOfWvwRewards: null,
94
- skirmishChests: null,
95
- difluoriteCrystals: null,
96
- eitriteIngots: null,
97
- kites: null,
98
- snowDiamondInfusions: null,
99
- inscribedShards: null,
100
- lumpsOfMistonium: null,
101
- brandedMass: null,
102
- mistbornMote: null,
103
- hatchedChili: null,
104
- eternalIceShard: null,
105
- crystalInfusions: null,
106
- polysaturatingInfusions: null,
107
- silverwastesShovels: null,
108
- thirtyTwoSlotBags: null,
109
- flyingCowTokens: null,
110
- heartOfTheKhanUr: null,
111
- brokenTwig: null,
112
- warmStone: null,
113
- crumblingBone: null,
114
- mangledTalon: null,
115
- clumpOfResin: null,
116
- emblemOfTheAvenger: null,
117
- emblemOfTheConqueror: null,
118
- emblemOfTournamentVictory: null,
119
- emblemOfVictory: null,
120
- _unstableFractalEssenceFromItems: null,
121
- chestOfDungeoneering: null,
122
- deldrimorStoneskinInfusions: null,
123
- jormagEyeInfusions: null,
124
- primordusEyeInfusions: null,
125
- _legendaryInsightsFromItems: null,
126
- _legendaryDivinationsFromItems: null
127
- }
128
-
129
- const bothPermissions = {bank: null, characters: null}
130
- expect(itemsStatistics(bothPermissions)).to.deep.equal(emptyObject)
131
-
132
- const inventoriesPermission = {bank: null, characters: [{name: 'Yo'}]}
133
- expect(itemsStatistics(inventoriesPermission)).to.deep.equal(emptyObject)
134
-
135
- const charactersPermission = {bank: [{id: 30687}], characters: null}
136
- expect(itemsStatistics(charactersPermission)).to.deep.equal(emptyObject)
137
- })
138
-
139
- it('can calculate legendary count', () => {
140
- const account = generateAccount([
141
- {id: 123, count: 1},
142
- {id: 30687, count: 1}, // 1
143
- {id: 71383, count: 1}, // 2
144
- {id: 1, count: 1},
145
- {id: 80205, count: 1}, // 3
146
- {id: 77474, count: 1} // 4
147
- ])
148
-
149
- account.characters[0].last_modified = new Date('2021-07-24T12:00:00.000Z')
150
- account.characters[0].equipment = [
151
- {id: 80205},
152
- {id: 71383, location: 'EquippedFromLegendaryArmory'}
153
- ] // Ignored
154
-
155
- account.legendaryarmory = [{id: 80205, count: 2}] // 5 + 6
156
-
157
- expect(itemsStatistics(account).legendaryItems).to.equal(6)
158
- })
159
-
160
- it('can calculate legendary weapon count', () => {
161
- expect(itemsStatistics(generateAccount([
162
- {id: 123, count: 1},
163
- {id: 30687, count: 1},
164
- {id: 71383, count: 1},
165
- {id: 1, count: 1},
166
- {id: 7, count: 1},
167
- {id: 77474, count: 1}
168
- ])).legendaryItemsWeapon).to.equal(2)
169
- })
170
-
171
- it('can calculate legendary armor count', () => {
172
- expect(itemsStatistics(generateAccount([
173
- {id: 123, count: 1},
174
- {id: 80254, count: 1},
175
- {id: 80277, count: 1},
176
- {id: 1, count: 1},
177
- {id: 7, count: 1},
178
- {id: 77474, count: 1}
179
- ])).legendaryItemsArmor).to.equal(2)
180
- })
181
-
182
- it('can calculate legendary back count', () => {
183
- expect(itemsStatistics(generateAccount([
184
- {id: 123, count: 1},
185
- {id: 74155, count: 1},
186
- {id: 80277, count: 1},
187
- {id: 1, count: 1},
188
- {id: 30704, count: 1},
189
- {id: 77474, count: 1}
190
- ])).legendaryItemsBack).to.equal(2)
191
- })
192
-
193
- it('can calculate legendary trinket count', () => {
194
- expect(itemsStatistics(generateAccount([
195
- {id: 123, count: 1},
196
- {id: 74155, count: 1},
197
- {id: 80277, count: 1},
198
- {id: 1, count: 1},
199
- {id: 81908, count: 1},
200
- {id: 77474, count: 1}
201
- ])).legendaryItemsTrinket).to.equal(1)
202
- })
203
-
204
- it('can calculate fractal tonic count', () => {
205
- expect(itemsStatistics(generateAccount([
206
- {id: 49277, count: 1},
207
- {id: 30687, count: 1},
208
- {id: 71383, count: 1},
209
- {id: 49277, count: 1},
210
- {id: 49277, count: 1}
211
- ])).fractalTonics).to.equal(3)
212
- })
213
-
214
- it('can calculate legendary insight count', () => {
215
- const items = {
216
- // Heavy Ascended
217
- RefinedEnvoyHelmet: 80387,
218
- RefinedEnvoyPauldrons: 80236,
219
- RefinedEnvoyBreastplate: 80648,
220
- RefinedEnvoyGauntlets: 80673,
221
- RefinedEnvoyTassets: 80427,
222
- RefinedEnvoyGreaves: 80127,
223
-
224
- // Medium Ascended
225
- RefinedEnvoyMask: 80634,
226
- RefinedEnvoyShoulderpads: 80366,
227
- RefinedEnvoyJerkin: 80607,
228
- RefinedEnvoyVambraces: 80658,
229
- RefinedEnvoyLeggings: 80675,
230
- RefinedEnvoyBoots: 80177,
231
-
232
- // Light Ascended
233
- RefinedEnvoyCowl: 80441,
234
- RefinedEnvoyMantle: 80264,
235
- RefinedEnvoyVestments: 80120,
236
- RefinedEnvoyGloves: 80460,
237
- RefinedEnvoyPants: 80275,
238
- RefinedEnvoyShoes: 80583,
239
-
240
- // Heavy Legendary
241
- PerfectedEnvoyHelmet: 80384,
242
- PerfectedEnvoyPauldrons: 80435,
243
- PerfectedEnvoyBreastplate: 80254,
244
- PerfectedEnvoyGauntlets: 80205,
245
- PerfectedEnvoyTassets: 80277,
246
- PerfectedEnvoyGreaves: 80557,
247
-
248
- // Medium Legendary
249
- PerfectedEnvoyMask: 80296,
250
- PerfectedEnvoyShoulderpads: 80145,
251
- PerfectedEnvoyJerkin: 80578,
252
- PerfectedEnvoyVambraces: 80161,
253
- PerfectedEnvoyLeggings: 80252,
254
- PerfectedEnvoyBoots: 80281,
255
-
256
- // Light Legendary
257
- PerfectedEnvoyCowl: 80248,
258
- PerfectedEnvoyMantle: 80131,
259
- PerfectedEnvoyVestments: 80190,
260
- PerfectedEnvoyGloves: 80111,
261
- PerfectedEnvoyPants: 80356,
262
- PerfectedEnvoyShoes: 80399
263
- }
264
-
265
- function countFromList (itemList) {
266
- const account = generateAccount(itemList.map(id => ({id, count: 1})))
267
- return itemsStatistics(account)._legendaryInsightsFromItems
268
- }
269
-
270
- // Count the basic items
271
- expect(itemsStatistics(generateAccount([
272
- {id: 80516, count: 3}, // Envoy Insignia => 25 each
273
- {id: 78989, count: 1}, // Gift of Prowess => 25 each
274
- {id: 77302, count: 7} // Legendary Insight => 1 each
275
- ]))._legendaryInsightsFromItems, 'basic items').to.equal(3 * 25 + 25 + 7)
276
-
277
- // Count the full first ascended set (from the achievement, so no LI spent)
278
- const oneWeightAscendedSet = [
279
- items.RefinedEnvoyHelmet, items.RefinedEnvoyPauldrons, items.RefinedEnvoyBreastplate,
280
- items.RefinedEnvoyGauntlets, items.RefinedEnvoyTassets, items.RefinedEnvoyGreaves
281
- ]
282
- expect(countFromList(oneWeightAscendedSet), 'oneWeightAscendedSet')
283
- .to.equal(0)
284
-
285
- // Count the full first ascended set (from the achievement, so no LI spent)
286
- // and some extra ascended items that got crafted via 25 LI insignias
287
- const oneWeightAscendedSetPlusExtra = [
288
- items.RefinedEnvoyHelmet, items.RefinedEnvoyPauldrons, items.RefinedEnvoyBreastplate,
289
- items.RefinedEnvoyGauntlets, items.RefinedEnvoyTassets, items.RefinedEnvoyGreaves,
290
- items.RefinedEnvoyHelmet, items.RefinedEnvoyCowl // one of the same weight, one in a different one
291
- ]
292
- expect(countFromList(oneWeightAscendedSetPlusExtra), 'oneWeightAscendedSetPlusExtra')
293
- .to.equal(25 + 25)
294
-
295
- // Count all first ascended sets (one from the achievement, so no LI spent and two for 25/each)
296
- const allAscendedSets = [
297
- items.RefinedEnvoyHelmet, items.RefinedEnvoyPauldrons, items.RefinedEnvoyBreastplate,
298
- items.RefinedEnvoyGauntlets, items.RefinedEnvoyTassets, items.RefinedEnvoyGreaves,
299
-
300
- items.RefinedEnvoyMask, items.RefinedEnvoyShoulderpads, items.RefinedEnvoyJerkin,
301
- items.RefinedEnvoyVambraces, items.RefinedEnvoyLeggings, items.RefinedEnvoyBoots,
302
-
303
- items.RefinedEnvoyCowl, items.RefinedEnvoyMantle, items.RefinedEnvoyVestments,
304
- items.RefinedEnvoyGloves, items.RefinedEnvoyPants, items.RefinedEnvoyShoes
305
- ]
306
- expect(countFromList(allAscendedSets), 'allAscendedSets')
307
- .to.equal(2 * 6 * 25)
308
-
309
- // Count the full first legendary set (the precursor was from the achievement, so no LI spent)
310
- // but the ascended -> legendary conversion costs 25
311
- const oneWeightLegendarySet = [
312
- items.PerfectedEnvoyHelmet, items.PerfectedEnvoyPauldrons, items.PerfectedEnvoyBreastplate,
313
- items.PerfectedEnvoyGauntlets, items.PerfectedEnvoyTassets, items.PerfectedEnvoyGreaves
314
- ]
315
- expect(countFromList(oneWeightLegendarySet), 'oneWeightLegendarySet')
316
- .to.equal(6 * 25)
317
-
318
- // Count the full first legendary set (the precursor was from the achievement, so no LI spent)
319
- // but the ascended -> legendary conversion costs 25 and some extra ascended items that got crafted via 25 LI insignias
320
- const oneWeightLegendarySetSetPlusExtraAscended = [
321
- items.PerfectedEnvoyHelmet, items.PerfectedEnvoyPauldrons, items.PerfectedEnvoyBreastplate,
322
- items.PerfectedEnvoyGauntlets, items.PerfectedEnvoyTassets, items.PerfectedEnvoyGreaves,
323
- items.RefinedEnvoyHelmet, items.RefinedEnvoyCowl // one of the same weight, one in a different one
324
- ]
325
- expect(countFromList(oneWeightLegendarySetSetPlusExtraAscended), 'oneWeightLegendarySetSetPlusExtraAscended')
326
- .to.equal(6 * 25 + 25 + 25)
327
-
328
- // Count the full first legendary set (the precursor was from the achievement, so no LI spent)
329
- // but the ascended -> legendary conversion costs 25 and some extra ascended items that got crafted via 25 LI insignias
330
- // and some extra legendary items that got crafted (25 for the precursor and 25 for the conversion)
331
- const oneWeightLegendarySetPlusExtraLegendary = [
332
- items.PerfectedEnvoyHelmet, items.PerfectedEnvoyPauldrons, items.PerfectedEnvoyBreastplate,
333
- items.PerfectedEnvoyGauntlets, items.PerfectedEnvoyTassets, items.PerfectedEnvoyGreaves,
334
- items.RefinedEnvoyHelmet, items.RefinedEnvoyCowl, // one of the same weight, one in a different one
335
- items.PerfectedEnvoyHelmet, items.PerfectedEnvoyCowl // one of the same weight, one in a different one
336
- ]
337
- expect(countFromList(oneWeightLegendarySetPlusExtraLegendary), 'oneWeightLegendarySetPlusExtraLegendary').to.equal(
338
- 6 * 25 + // First set, where the precursor was free
339
- 25 + 25 + // Extra refined items, 25 each
340
- 50 + 50 // Extra perfected items, 50 each
341
- )
342
-
343
- // Count the full first legendary set (one of the precursor sets was from the achievement, so no LI spent)
344
- // but the ascended -> legendary conversion costs 25 and the second set costs 25 extra for the precursor
345
- const allLegendarySets = [
346
- items.PerfectedEnvoyHelmet, items.PerfectedEnvoyPauldrons, items.PerfectedEnvoyBreastplate,
347
- items.PerfectedEnvoyGauntlets, items.PerfectedEnvoyTassets, items.PerfectedEnvoyGreaves,
348
-
349
- items.PerfectedEnvoyMask, items.PerfectedEnvoyShoulderpads, items.PerfectedEnvoyJerkin,
350
- items.PerfectedEnvoyVambraces, items.PerfectedEnvoyLeggings, items.PerfectedEnvoyBoots,
351
-
352
- items.PerfectedEnvoyCowl, items.PerfectedEnvoyMantle, items.PerfectedEnvoyVestments,
353
- items.PerfectedEnvoyGloves, items.PerfectedEnvoyPants, items.PerfectedEnvoyShoes,
354
-
355
- items.RefinedEnvoyHelmet, items.RefinedEnvoyCowl, // extra refined items
356
- items.PerfectedEnvoyHelmet, items.PerfectedEnvoyCowl // extra perfected items
357
- ]
358
- expect(countFromList(allLegendarySets), 'allLegendarySets').to.equal(
359
- 6 * 25 + // First set, where the precursor was free
360
- 2 * 6 * (25 + 25) + // Second and third set, where the precursor was 25 LI
361
- 25 + 25 + // Extra refined items, 25 each
362
- 50 + 50 // Extra perfected items, 50 each
363
- )
364
- })
365
-
366
- it('can calculate white mantle portal device count', () => {
367
- expect(itemsStatistics(generateAccount([
368
- {id: 78978, count: 1},
369
- {id: 30687, count: 1},
370
- {id: 71383, count: 1},
371
- {id: 78978, count: 1},
372
- {id: 78978, count: 1}
373
- ])).whiteMantlePortalDevices).to.equal(3)
374
- })
375
-
376
- it('can calculate chak egg sack count', () => {
377
- expect(itemsStatistics(generateAccount([
378
- {id: 72021, count: 1},
379
- {id: 30687, count: 1},
380
- {id: 71383, count: 1},
381
- {id: 72021, count: 1},
382
- {id: 72021, count: 1}
383
- ])).chakEggSacks).to.equal(3)
384
- })
385
-
386
- it('can calculate preserved queen bee count', () => {
387
- expect(itemsStatistics(generateAccount([
388
- {id: 68440, count: 1},
389
- {id: 30687, count: 1},
390
- {id: 71383, count: 1},
391
- {id: 68440, count: 1},
392
- {id: 68440, count: 1}
393
- ])).preservedQueenBees).to.equal(3)
394
- })
395
-
396
- it('can calculate ghostly infusion count', () => {
397
- expect(itemsStatistics(generateAccount([
398
- {id: 77303, count: 1},
399
- {id: 30687, count: 1},
400
- {id: 71383, count: 1},
401
- {id: 77316, count: 1},
402
- {id: 77394, count: 1}
403
- ])).ghostlyInfusions).to.equal(3)
404
- })
405
-
406
- it('can calculate bauble infusion count', () => {
407
- expect(itemsStatistics(generateAccount([
408
- {id: 78079, count: 1},
409
- {id: 30687, count: 1},
410
- {id: 71383, count: 1},
411
- {id: 78028, count: 1},
412
- {id: 78097, count: 1}
413
- ])).baubleInfusions).to.equal(3)
414
- })
415
-
416
- it('can calculate luminescent refractor count', () => {
417
- expect(itemsStatistics(generateAccount([
418
- {id: 67375, count: 1},
419
- {id: 30687, count: 1},
420
- {id: 71383, count: 1},
421
- {id: 67370, count: 1},
422
- {id: 67372, count: 1}
423
- ])).luminescentRefractors).to.equal(3)
424
- })
425
-
426
- it('can calculate broken spoon count', () => {
427
- expect(itemsStatistics(generateAccount([
428
- {id: 74996, count: 1},
429
- {id: 30687, count: 1},
430
- {id: 71383, count: 1},
431
- {id: 74996, count: 1},
432
- {id: 74996, count: 1}
433
- ])).brokenSpoons).to.equal(3)
434
- })
435
-
436
- it('can calculate black lion claim ticket count', () => {
437
- expect(itemsStatistics(generateAccount([
438
- {id: 43992, count: 1},
439
- {id: 30687, count: 1},
440
- {id: 71383, count: 1},
441
- {id: 43998, count: 3},
442
- {id: 43998, count: 1}
443
- ])).blackLionClaimTickets).to.equal(1.4)
444
-
445
- expect(itemsStatistics(generateAccount([
446
- {id: 43992, count: 3},
447
- {id: 30687, count: 1},
448
- {id: 43998, count: 164}
449
- ])).blackLionClaimTickets).to.equal(19.4)
450
- })
451
-
452
- it('can calculate instrument count', () => {
453
- expect(itemsStatistics(generateAccount([
454
- {id: 66323, count: 1},
455
- {id: 30687, count: 1},
456
- {id: 71383, count: 1},
457
- {id: 38129, count: 1}, // This is a container and does not count
458
- {id: 43526, count: 1}
459
- ])).instruments).to.equal(2)
460
- })
461
-
462
- it('can calculate music box count', () => {
463
- expect(itemsStatistics(generateAccount([
464
- {id: 66323, count: 1},
465
- {id: 30687, count: 1},
466
- {id: 82432, count: 1},
467
- {id: 38129, count: 1},
468
- {id: 83826, count: 1}
469
- ])).musicBoxes).to.equal(2)
470
- })
471
-
472
- it('can calculate permanent tool count', () => {
473
- expect(itemsStatistics(generateAccount([
474
- {id: 78806, count: 1},
475
- {id: 30687, count: 1},
476
- {id: 71383, count: 1},
477
- {id: 38129, count: 1},
478
- {id: 47897, count: 1}
479
- ])).permanentTools).to.equal(2)
480
- })
481
-
482
- it('can calculate chak egg count', () => {
483
- expect(itemsStatistics(generateAccount([
484
- {id: 72205, count: 1},
485
- {id: 30687, count: 1},
486
- {id: 71383, count: 1},
487
- {id: 72205, count: 1},
488
- {id: 72205, count: 1}
489
- ])).chakEggs).to.equal(3)
490
- })
491
-
492
- it('can calculate reclaimed metal plate count', () => {
493
- expect(itemsStatistics(generateAccount([
494
- {id: 74356, count: 1},
495
- {id: 30687, count: 1},
496
- {id: 71383, count: 1},
497
- {id: 74356, count: 1},
498
- {id: 74356, count: 1}
499
- ])).reclaimedMetalPlates).to.equal(3)
500
- })
501
-
502
- it('can calculate fossilized insects count', () => {
503
- expect(itemsStatistics(generateAccount([
504
- {id: 66655, count: 1},
505
- {id: 30687, count: 1},
506
- {id: 71383, count: 1},
507
- {id: 66646, count: 1},
508
- {id: 66642, count: 1}
509
- ])).fossilizedInsects).to.equal(3)
510
- })
511
-
512
- it('can calculate champion bag count', () => {
513
- expect(itemsStatistics(generateAccount([
514
- {id: 44216, count: 1},
515
- {id: 30687, count: 1},
516
- {id: 71383, count: 1},
517
- {id: 44226, count: 1},
518
- {id: 44199, count: 250}
519
- ])).championBags).to.equal(252)
520
- })
521
-
522
- it('can calculate triple trouble chest count', () => {
523
- expect(itemsStatistics(generateAccount([
524
- {id: 49664, count: 1},
525
- {id: 30687, count: 1},
526
- {id: 71383, count: 1},
527
- {id: 49664, count: 1},
528
- {id: 49664, count: 250}
529
- ])).tripleTroubleChests).to.equal(252)
530
- })
531
-
532
- it('can calculate tequatl chest count', () => {
533
- expect(itemsStatistics(generateAccount([
534
- {id: 47836, count: 1},
535
- {id: 30687, count: 1},
536
- {id: 71383, count: 1},
537
- {id: 47836, count: 1},
538
- {id: 47836, count: 250}
539
- ])).tequatlChests).to.equal(252)
540
- })
541
-
542
- it('can calculate unique tonic count', () => {
543
- expect(itemsStatistics(generateAccount([
544
- {id: 68046, count: 3},
545
- {id: 2, count: 1},
546
- {id: 66768, count: 1},
547
- {id: 66926, count: 1},
548
- {id: 5, count: 250},
549
- {id: 68046, count: 100}
550
- ])).uniqueTonics).to.equal(2)
551
- })
552
-
553
- it('can calculate blood ruby count', () => {
554
- expect(itemsStatistics(generateAccount([
555
- {id: 79280, count: 1},
556
- {id: 30687, count: 1},
557
- {id: 71383, count: 1},
558
- {id: 79280, count: 1},
559
- {id: 79280, count: 250}
560
- ])).bloodRubies).to.equal(252)
561
- })
562
-
563
- it('can calculate petrified wood count', () => {
564
- expect(itemsStatistics(generateAccount([
565
- {id: 79469, count: 1},
566
- {id: 30687, count: 1},
567
- {id: 71383, count: 1},
568
- {id: 79469, count: 1},
569
- {id: 79469, count: 250}
570
- ])).petrifiedWood).to.equal(252)
571
- })
572
-
573
- it('can calculate tomes of knowledge count', () => {
574
- expect(itemsStatistics(generateAccount([
575
- {id: 43741, count: 1},
576
- {id: 30687, count: 1},
577
- {id: 71383, count: 1},
578
- {id: 43741, count: 1},
579
- {id: 43766, count: 250}
580
- ])).tomesOfKnowledge).to.equal(252)
581
- })
582
-
583
- it('can calculate permanent contract count', () => {
584
- expect(itemsStatistics(generateAccount([
585
- {id: 35985, count: 1},
586
- {id: 30687, count: 1},
587
- {id: 71383, count: 1},
588
- {id: 35984, count: 1},
589
- {id: 49501, count: 1}
590
- ])).permanentContracts).to.equal(3)
591
- })
592
-
593
- it('can calculate fresh winterberry count', () => {
594
- expect(itemsStatistics(generateAccount([
595
- {id: 79899, count: 2},
596
- {id: 30687, count: 1},
597
- {id: 79899, count: 1},
598
- {id: 79899, count: 1},
599
- {id: 49501, count: 1}
600
- ])).freshWinterberries).to.equal(4)
601
- })
602
-
603
- it('can calculate winter\' heart infusion count', () => {
604
- expect(itemsStatistics(generateAccount([
605
- {id: 79899, count: 2},
606
- {id: 79994, count: 1},
607
- {id: 79959, count: 1},
608
- {id: 79899, count: 1},
609
- {id: 49501, count: 1}
610
- ])).wintersHeartInfusions).to.equal(2)
611
- })
612
-
613
- it('can calculate kodas warmth enrichment count', () => {
614
- expect(itemsStatistics(generateAccount([
615
- {id: 79899, count: 2},
616
- {id: 30687, count: 1},
617
- {id: 79926, count: 1},
618
- {id: 79899, count: 1},
619
- {id: 49501, count: 1}
620
- ])).kodasWarmthEnrichment).to.equal(1)
621
- })
622
-
623
- it('can calculate phospholuminescent infusions count', () => {
624
- expect(itemsStatistics(generateAccount([
625
- {id: 79899, count: 2},
626
- {id: 30687, count: 1},
627
- {id: 79653, count: 1},
628
- {id: 79899, count: 1},
629
- {id: 49501, count: 1}
630
- ])).phospholuminescentInfusions).to.equal(1)
631
- })
632
-
633
- it('can calculate liquid aurillium count', () => {
634
- expect(itemsStatistics(generateAccount([
635
- {id: 76063, count: 2},
636
- {id: 81715, count: 1},
637
- {id: 79653, count: 1},
638
- {id: 79899, count: 1},
639
- {id: 49501, count: 1}
640
- ])).liquidAurillium).to.equal(3)
641
- })
642
-
643
- it('can calculate celestial infusion count', () => {
644
- expect(itemsStatistics(generateAccount([
645
- {id: 81811, count: 2},
646
- {id: 81927, count: 1},
647
- {id: 79653, count: 1},
648
- {id: 79899, count: 1},
649
- {id: 49501, count: 1}
650
- ])).celestialInfusion).to.equal(3)
651
- })
652
-
653
- it('can calculate gemstore toys count', () => {
654
- expect(itemsStatistics(generateAccount([
655
- {id: 79899, count: 2},
656
- {id: 30687, count: 1},
657
- {id: 49939, count: 1},
658
- {id: 79899, count: 1},
659
- {id: 49501, count: 1}
660
- ])).gemstoreToys).to.equal(1)
661
- })
662
-
663
- it('can calculate black lion miniature claim tickets count', () => {
664
- expect(itemsStatistics(generateAccount([
665
- {id: 78474, count: 2},
666
- {id: 30687, count: 1},
667
- {id: 78474, count: 1},
668
- {id: 79899, count: 1},
669
- {id: 49501, count: 1}
670
- ])).blackLionMiniatureClaimTickets).to.equal(3)
671
- })
672
-
673
- it('can calculate jade shards count', () => {
674
- expect(itemsStatistics(generateAccount([
675
- {id: 80332, count: 2},
676
- {id: 78474, count: 2},
677
- {id: 78474, count: 1},
678
- {id: 80332, count: 1},
679
- {id: 49501, count: 1}
680
- ])).jadeShards).to.equal(3)
681
- })
682
-
683
- it('can calculate gifts of exploration count', () => {
684
- expect(itemsStatistics(generateAccount([
685
- {id: 19677, count: 2},
686
- {id: 78474, count: 2},
687
- {id: 78474, count: 1},
688
- {id: 19677, count: 1},
689
- {id: 49501, count: 1}
690
- ])).giftsOfExploration).to.equal(3)
691
- })
692
-
693
- it('can calculate gifts of battle count', () => {
694
- expect(itemsStatistics(generateAccount([
695
- {id: 19678, count: 2},
696
- {id: 78474, count: 2},
697
- {id: 78474, count: 1},
698
- {id: 19678, count: 1},
699
- {id: 49501, count: 1}
700
- ])).giftsOfBattle).to.equal(3)
701
- })
702
-
703
- it('can calculate dragonite ore count', () => {
704
- expect(itemsStatistics(generateAccount([
705
- {id: 78474, count: 1},
706
- {id: 46733, count: 22},
707
- {id: 78474, count: 1},
708
- {id: 19677, count: 1},
709
- {id: 46732, count: 4}
710
- ])).dragoniteOre).to.equal(422)
711
- })
712
-
713
- it('can calculate bloodstone dust count', () => {
714
- expect(itemsStatistics(generateAccount([
715
- {id: 78474, count: 1},
716
- {id: 46731, count: 22},
717
- {id: 78474, count: 1},
718
- {id: 19677, count: 1},
719
- {id: 46730, count: 4}
720
- ])).bloodstoneDust).to.equal(422)
721
- })
722
-
723
- it('can calculate empyreal fragments count', () => {
724
- expect(itemsStatistics(generateAccount([
725
- {id: 78474, count: 1},
726
- {id: 46735, count: 22},
727
- {id: 78474, count: 1},
728
- {id: 19677, count: 1},
729
- {id: 46734, count: 4}
730
- ])).empyrealFragments).to.equal(422)
731
- })
732
-
733
- it('can calculate crystalline ore count', () => {
734
- expect(itemsStatistics(generateAccount([
735
- {id: 78474, count: 1},
736
- {id: 46682, count: 22},
737
- {id: 78474, count: 1},
738
- {id: 19677, count: 1},
739
- {id: 46683, count: 4}
740
- ])).crystallineOre).to.equal(26)
741
- })
742
-
743
- it('can calculate airship oil count', () => {
744
- expect(itemsStatistics(generateAccount([
745
- {id: 78474, count: 1},
746
- {id: 46682, count: 22},
747
- {id: 78474, count: 1},
748
- {id: 76933, count: 1},
749
- {id: 69434, count: 4}
750
- ])).airshipOil).to.equal(5)
751
- })
752
-
753
- it('can calculate auric dust count', () => {
754
- expect(itemsStatistics(generateAccount([
755
- {id: 78474, count: 1},
756
- {id: 69432, count: 22},
757
- {id: 73537, count: 1},
758
- {id: 76933, count: 1},
759
- {id: 69434, count: 4}
760
- ])).auricDust).to.equal(53)
761
- })
762
-
763
- it('can calculate ley line sparks count', () => {
764
- expect(itemsStatistics(generateAccount([
765
- {id: 78474, count: 1},
766
- {id: 69392, count: 22},
767
- {id: 76933, count: 1},
768
- {id: 74042, count: 1},
769
- {id: 69434, count: 4}
770
- ])).leyLineSparks).to.equal(24)
771
- })
772
-
773
- it('can calculate legendary spikes count', () => {
774
- expect(itemsStatistics(generateAccount([
775
- {id: 78474, count: 1},
776
- {id: 81296, count: 22},
777
- {id: 76933, count: 1},
778
- {id: 74042, count: 1},
779
- {id: 69434, count: 4}
780
- ])).legendarySpikes).to.equal(22)
781
- })
782
-
783
- it('can calculate fire orchid blossoms count', () => {
784
- expect(itemsStatistics(generateAccount([
785
- {id: 78474, count: 1},
786
- {id: 81296, count: 22},
787
- {id: 81127, count: 1},
788
- {id: 74042, count: 1},
789
- {id: 81127, count: 4}
790
- ])).fireOrchidBlossoms).to.equal(5)
791
- })
792
-
793
- it('can calculate orrian peal count', () => {
794
- expect(itemsStatistics(generateAccount([
795
- {id: 78474, count: 1},
796
- {id: 81296, count: 22},
797
- {id: 81706, count: 1},
798
- {id: 74042, count: 1},
799
- {id: 81706, count: 4}
800
- ])).orrianPearls).to.equal(5)
801
- })
802
-
803
- it('can calculate luck', () => {
804
- expect(itemsStatistics(generateAccount([
805
- {id: 45175, count: 1}, // 10
806
- {id: 45175, count: 5}, // 50
807
- {id: 45176, count: 1}, // 50
808
- {id: 45176, count: 8}, // 400
809
- {id: 45177, count: 1}, // 100
810
- {id: 45177, count: 4}, // 400
811
- {id: 45178, count: 1}, // 200
812
- {id: 45178, count: 3}, // 600
813
- {id: 45179, count: 1}, // 500
814
- {id: 45179, count: 7} // 3500
815
- ]))._luckFromItems).to.equal(5810)
816
- })
817
-
818
- it('can calculate kralkatite ore', () => {
819
- expect(itemsStatistics(generateAccount([
820
- {id: 45175, count: 1},
821
- {id: 45175, count: 5},
822
- {id: 81743, count: 3},
823
- {id: 45176, count: 8},
824
- {id: 45177, count: 1},
825
- {id: 86069, count: 4},
826
- {id: 81743, count: 9},
827
- {id: 45178, count: 3},
828
- {id: 86069, count: 1},
829
- {id: 45179, count: 7}
830
- ])).kralkatiteOre).to.equal(5)
831
- })
832
-
833
- it('can calculate festive confetti infusions', () => {
834
- expect(itemsStatistics(generateAccount([
835
- {id: 45175, count: 1},
836
- {id: 45175, count: 1},
837
- {id: 84970, count: 1},
838
- {id: 45176, count: 1},
839
- {id: 45177, count: 1},
840
- {id: 84871, count: 1},
841
- {id: 81743, count: 1},
842
- {id: 45178, count: 1},
843
- {id: 84882, count: 1},
844
- {id: 84882, count: 1}
845
- ])).festiveConfettiInfusions).to.equal(4)
846
- })
847
-
848
- it('can calculate potions of pvp reward', () => {
849
- expect(itemsStatistics(generateAccount([
850
- {id: 45175, count: 1},
851
- {id: 45175, count: 1},
852
- {id: 68110, count: 1},
853
- {id: 45176, count: 1},
854
- {id: 45177, count: 1},
855
- {id: 68110, count: 1},
856
- {id: 81743, count: 1},
857
- {id: 45178, count: 1},
858
- {id: 84882, count: 1},
859
- {id: 84882, count: 1}
860
- ])).potionOfPvpRewards).to.equal(2)
861
- })
862
-
863
- it('can calculate potions of wvw reward', () => {
864
- expect(itemsStatistics(generateAccount([
865
- {id: 45175, count: 1},
866
- {id: 45175, count: 1},
867
- {id: 68110, count: 1},
868
- {id: 78600, count: 1},
869
- {id: 45177, count: 1},
870
- {id: 68110, count: 1},
871
- {id: 81743, count: 1},
872
- {id: 78600, count: 1},
873
- {id: 84882, count: 1},
874
- {id: 84882, count: 1}
875
- ])).potionOfWvwRewards).to.equal(2)
876
- })
877
-
878
- it('can calculate skirmish chests', () => {
879
- expect(itemsStatistics(generateAccount([
880
- {id: 45175, count: 1},
881
- {id: 84966, count: 1},
882
- {id: 68110, count: 1},
883
- {id: 78600, count: 1},
884
- {id: 45177, count: 1},
885
- {id: 68110, count: 1},
886
- {id: 81743, count: 1},
887
- {id: 81324, count: 1},
888
- {id: 84882, count: 1},
889
- {id: 84882, count: 1}
890
- ])).skirmishChests).to.equal(2)
891
- })
892
-
893
- it('can calculate unstable fractal essence', () => {
894
- expect(itemsStatistics(generateAccount([
895
- {id: 81743, count: 12}, // Unstable Cosmic Essence
896
- {id: 94036, count: 1}, // Abyssal Fractal Weapon Box
897
- {id: 94042, count: 1}, // Abyssal Fractal Axe Skin
898
- {id: 94017, count: 1}, // Abyssal Infusion Chest
899
- {id: 94024, count: 1}, // Abyssal Infusion
900
- {id: 81790, count: 1}, // Celestial Infusion Chest
901
- {id: 82070, count: 1}, // Celestial Infusion (Red)
902
- {id: 81632, count: 1}, // Endless Chaos Combat Tonic
903
- {id: 94055, count: 1}, // Endless Inner Demon Combat Tonic
904
-
905
- {id: 81761, count: 9999999} // Celestial Infusion (Blue) -- (!) Does not count
906
- ]))._unstableFractalEssenceFromItems).to.equal(7410)
907
- })
908
- })