habitica/test/content/stable.test.js

170 lines
6.2 KiB
JavaScript
Raw Permalink Normal View History

import {
each,
} from 'lodash';
import {
expectValidTranslationString,
} from '../helpers/content.helper';
import t from '../../website/common/script/content/translation';
Squashed commit of the following: commit 28193f86fb7ed6647fb5e1c6469f71a9bb980c38 Author: Phillip Thelen <phillip@habitica.com> Date: Fri Jun 21 11:12:18 2024 +0200 Fix serving memoized content commit 877fe482252db78b69050b13274da147ede23769 Author: Phillip Thelen <phillip@habitica.com> Date: Thu Jun 20 12:23:24 2024 +0200 correctly memoize conent api commit e0f6f79c5b49d2b6eae7e5c02dd90ac7ad6ea397 Author: Phillip Thelen <phillip@habitica.com> Date: Thu Jun 20 10:11:27 2024 +0200 don’t build multiple times on heroku commit f62254d68e2859990a6e80cd5b64d3385a6dea60 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 19:40:20 2024 +0200 fix client command commit d054e6fc1650fbe6df14b62025f0470a15e91883 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 19:36:57 2024 +0200 correct build call commit 7231f699c1e9cc4fc873428863cff0c14a4b6b3f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 19:32:32 2024 +0200 try setting up with heroku buildpack commit 1dae0793fde402e15c9e2eba2b21df999933282f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:50:32 2024 +0200 call gulp build:prod commit f18fbe86b61fa282baf38196313fe07837b173cc Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:40:53 2024 +0200 build client commit 61a61724cae017aaaf912c037796bd2e5064ec87 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:33:18 2024 +0200 testing commit 93cf30eb184a74f85751750ab6e5033db3d2fafa Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:20:25 2024 +0200 integration fix commit cff08adcd0290907281e5db873b9087d7de83e26 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:13:20 2024 +0200 specify dev docker file commit 4da2ed4a1f8d017ad3b6ac4e869746e7beaea419 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:10:07 2024 +0200 initialize stub commit 11c5b26c594254083fa260a1d0920242d67e23b7 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:08:45 2024 +0200 test heroku file commit ac85bb2e2da846b069826a621e975a710038313d Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:03:15 2024 +0200 fix stub reference commit 74dfb2710ff1b246d788d729149062f6f0b77787 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:01:27 2024 +0200 test fixes commit 8dbd3c3db15aac5c3defd294b6c6613cf80136da Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:37:04 2024 +0200 fix canOwn test commit 74b3b348ff6901e889ef88fd7531d6800d12ab1a Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:32:31 2024 +0200 fix buy test commit 3386d61fdee32e79a6a53939f22e26d3942eaa7f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:30:37 2024 +0200 fix debug tests commit 19da14531ca64a18dd68cefe1ada3f2ed1066622 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:05:25 2024 +0200 add chameleon to featured quests commit 254dd80f2479086637c7cafa9522cf6155b3868f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:05:14 2024 +0200 fix import commit 0bc3f16b4b03f88cc5c78fad5aa8d38cfdb9324b Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:33:22 2024 +0200 add new content to new release file commit 5184973bd50fb1f4bf17ab054aa7a5836086a5e1 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:33:11 2024 +0200 fix release date tests commit b6accca5cae1bbb33c450e4462095113cfebe480 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:33:06 2024 +0200 fix armoire tests commit fec68e621147e31c6ba5370ce0126d7e9b86461c Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:02:03 2024 +0200 fix tests commit fc63c906ddf4956fbe40543b66cb65cf570de36b Author: Phillip Thelen <phillip@habitica.com> Date: Mon Jun 10 14:44:21 2024 +0200 Improve test coverage commit 3333f8f0f59d0a69fcd715ee3f690518f7a710b5 Author: Phillip Thelen <phillip@habitica.com> Date: Mon Jun 10 14:24:59 2024 +0200 allow hatching potions to have a release date commit 89a3ac3ddebf8e949f584c39092e0cc961cde04a Author: Phillip Thelen <phillip@habitica.com> Date: Mon Jun 10 14:11:38 2024 +0200 allow eggs to have a release date # Conflicts: # test/content/armoire.test.js commit 16551ec83fdcb3e6bb31e4665588c83aa5af42ba Merge: f5f4974a73 2645bf6023 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 15:03:12 2024 -0400 Merge branch '2024-07-content-prebuild' into subs-private commit 2645bf60239a838d5a506f69ca7c8ce38042bf25 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 15:02:47 2024 -0400 update habitica images commit f5f4974a733fc3ebad1dd5da77bb44b48e91b7cc Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 14:58:13 2024 -0400 update habitica-images commit 162e337d14a372f523fbf9903bdddd23142e0d79 Merge: f2506c3231 21a7d36b7b Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 13:46:03 2024 -0400 Merge branch '2024-07-content-prebuild' into subs-private commit 21a7d36b7ba1d86e30b60e25d778b01062ed11ba Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 13:45:09 2024 -0400 update sprites commit f2506c32316df6836ee19489320b289f4dc97a35 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 13:24:21 2024 -0400 updated sprites css commit d47641e25a6dfb9b62f1c10d810e80eb0990ea20 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 12:46:59 2024 -0400 typo fix commit fb8479ad1e887b7f94dd6eec47980d4da593bee9 Author: CuriousMagpie <eilatan@gmail.com> Date: Mon Jun 17 13:44:36 2024 -0400 finish July prebuild commit 3810cf3ef3c492bda8d343596bf1a17f9fc1e36e Author: CuriousMagpie <eilatan@gmail.com> Date: Fri Jun 14 10:42:47 2024 -0400 add chameleon quest commit d05da3722ce1d86a840d6f73b4ef78309c84a2f6 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 17:12:43 2024 -0400 add June background notes commit b8a3440ef2fd0bf26e1305e749bcefab2c446d84 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 16:40:04 2024 -0400 fix mystery item and background description commit 44d63032d81ac58aded8c4c856df7fe5d89f5ef4 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 15:38:23 2024 -0400 add subscriber gear, enchanted armoire, and background commit 9d7da91ec60d84b7ec8f1792f2601bcc863c5a31 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 14:44:59 2024 -0400 add sprites
2024-06-28 14:49:08 +00:00
import stable from '../../website/common/script/content/stable';
import eggs from '../../website/common/script/content/eggs';
import potions from '../../website/common/script/content/hatching-potions';
2019-10-08 18:45:38 +00:00
describe('stable', () => {
describe('dropPets', () => {
Squashed commit of the following: commit 28193f86fb7ed6647fb5e1c6469f71a9bb980c38 Author: Phillip Thelen <phillip@habitica.com> Date: Fri Jun 21 11:12:18 2024 +0200 Fix serving memoized content commit 877fe482252db78b69050b13274da147ede23769 Author: Phillip Thelen <phillip@habitica.com> Date: Thu Jun 20 12:23:24 2024 +0200 correctly memoize conent api commit e0f6f79c5b49d2b6eae7e5c02dd90ac7ad6ea397 Author: Phillip Thelen <phillip@habitica.com> Date: Thu Jun 20 10:11:27 2024 +0200 don’t build multiple times on heroku commit f62254d68e2859990a6e80cd5b64d3385a6dea60 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 19:40:20 2024 +0200 fix client command commit d054e6fc1650fbe6df14b62025f0470a15e91883 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 19:36:57 2024 +0200 correct build call commit 7231f699c1e9cc4fc873428863cff0c14a4b6b3f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 19:32:32 2024 +0200 try setting up with heroku buildpack commit 1dae0793fde402e15c9e2eba2b21df999933282f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:50:32 2024 +0200 call gulp build:prod commit f18fbe86b61fa282baf38196313fe07837b173cc Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:40:53 2024 +0200 build client commit 61a61724cae017aaaf912c037796bd2e5064ec87 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:33:18 2024 +0200 testing commit 93cf30eb184a74f85751750ab6e5033db3d2fafa Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:20:25 2024 +0200 integration fix commit cff08adcd0290907281e5db873b9087d7de83e26 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:13:20 2024 +0200 specify dev docker file commit 4da2ed4a1f8d017ad3b6ac4e869746e7beaea419 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:10:07 2024 +0200 initialize stub commit 11c5b26c594254083fa260a1d0920242d67e23b7 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:08:45 2024 +0200 test heroku file commit ac85bb2e2da846b069826a621e975a710038313d Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:03:15 2024 +0200 fix stub reference commit 74dfb2710ff1b246d788d729149062f6f0b77787 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 18:01:27 2024 +0200 test fixes commit 8dbd3c3db15aac5c3defd294b6c6613cf80136da Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:37:04 2024 +0200 fix canOwn test commit 74b3b348ff6901e889ef88fd7531d6800d12ab1a Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:32:31 2024 +0200 fix buy test commit 3386d61fdee32e79a6a53939f22e26d3942eaa7f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:30:37 2024 +0200 fix debug tests commit 19da14531ca64a18dd68cefe1ada3f2ed1066622 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:05:25 2024 +0200 add chameleon to featured quests commit 254dd80f2479086637c7cafa9522cf6155b3868f Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 17:05:14 2024 +0200 fix import commit 0bc3f16b4b03f88cc5c78fad5aa8d38cfdb9324b Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:33:22 2024 +0200 add new content to new release file commit 5184973bd50fb1f4bf17ab054aa7a5836086a5e1 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:33:11 2024 +0200 fix release date tests commit b6accca5cae1bbb33c450e4462095113cfebe480 Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:33:06 2024 +0200 fix armoire tests commit fec68e621147e31c6ba5370ce0126d7e9b86461c Author: Phillip Thelen <phillip@habitica.com> Date: Wed Jun 19 16:02:03 2024 +0200 fix tests commit fc63c906ddf4956fbe40543b66cb65cf570de36b Author: Phillip Thelen <phillip@habitica.com> Date: Mon Jun 10 14:44:21 2024 +0200 Improve test coverage commit 3333f8f0f59d0a69fcd715ee3f690518f7a710b5 Author: Phillip Thelen <phillip@habitica.com> Date: Mon Jun 10 14:24:59 2024 +0200 allow hatching potions to have a release date commit 89a3ac3ddebf8e949f584c39092e0cc961cde04a Author: Phillip Thelen <phillip@habitica.com> Date: Mon Jun 10 14:11:38 2024 +0200 allow eggs to have a release date # Conflicts: # test/content/armoire.test.js commit 16551ec83fdcb3e6bb31e4665588c83aa5af42ba Merge: f5f4974a73 2645bf6023 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 15:03:12 2024 -0400 Merge branch '2024-07-content-prebuild' into subs-private commit 2645bf60239a838d5a506f69ca7c8ce38042bf25 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 15:02:47 2024 -0400 update habitica images commit f5f4974a733fc3ebad1dd5da77bb44b48e91b7cc Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 14:58:13 2024 -0400 update habitica-images commit 162e337d14a372f523fbf9903bdddd23142e0d79 Merge: f2506c3231 21a7d36b7b Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 13:46:03 2024 -0400 Merge branch '2024-07-content-prebuild' into subs-private commit 21a7d36b7ba1d86e30b60e25d778b01062ed11ba Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 13:45:09 2024 -0400 update sprites commit f2506c32316df6836ee19489320b289f4dc97a35 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 13:24:21 2024 -0400 updated sprites css commit d47641e25a6dfb9b62f1c10d810e80eb0990ea20 Author: CuriousMagpie <eilatan@gmail.com> Date: Tue Jun 18 12:46:59 2024 -0400 typo fix commit fb8479ad1e887b7f94dd6eec47980d4da593bee9 Author: CuriousMagpie <eilatan@gmail.com> Date: Mon Jun 17 13:44:36 2024 -0400 finish July prebuild commit 3810cf3ef3c492bda8d343596bf1a17f9fc1e36e Author: CuriousMagpie <eilatan@gmail.com> Date: Fri Jun 14 10:42:47 2024 -0400 add chameleon quest commit d05da3722ce1d86a840d6f73b4ef78309c84a2f6 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 17:12:43 2024 -0400 add June background notes commit b8a3440ef2fd0bf26e1305e749bcefab2c446d84 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 16:40:04 2024 -0400 fix mystery item and background description commit 44d63032d81ac58aded8c4c856df7fe5d89f5ef4 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 15:38:23 2024 -0400 add subscriber gear, enchanted armoire, and background commit 9d7da91ec60d84b7ec8f1792f2601bcc863c5a31 Author: CuriousMagpie <eilatan@gmail.com> Date: Thu Jun 13 14:44:59 2024 -0400 add sprites
2024-06-28 14:49:08 +00:00
let clock;
beforeEach(() => {
clock = sinon.useFakeTimers(new Date('2020-05-20'));
});
afterEach(() => {
clock.restore();
});
it('contains a pet for each drop potion * each drop egg', () => {
2019-10-08 18:45:38 +00:00
const numberOfDropPotions = Object.keys(potions.drops).length;
const numberOfDropEggs = Object.keys(eggs.drops).length;
const numberOfDropPets = Object.keys(stable.dropPets).length;
const expectedTotal = numberOfDropPotions * numberOfDropEggs;
expect(numberOfDropPets).to.be.greaterThan(0);
expect(numberOfDropPets).to.equal(expectedTotal);
});
});
describe('questPets', () => {
it('contains a pet for each drop potion * each quest egg', () => {
2019-10-08 18:45:38 +00:00
const numberOfDropPotions = Object.keys(potions.drops).length;
const numberOfQuestEggs = Object.keys(eggs.quests).length;
const numberOfQuestPets = Object.keys(stable.questPets).length;
const expectedTotal = numberOfDropPotions * numberOfQuestEggs;
expect(numberOfQuestPets).to.be.greaterThan(0);
expect(numberOfQuestPets).to.equal(expectedTotal);
});
});
describe('premiumPets', () => {
it('contains a pet for each premium potion * each drop egg', () => {
2019-10-08 18:45:38 +00:00
const numberOfPremiumPotions = Object.keys(potions.premium).length;
const numberOfDropEggs = Object.keys(eggs.drops).length;
const numberOfPremiumPets = Object.keys(stable.premiumPets).length;
const expectedTotal = numberOfPremiumPotions * numberOfDropEggs;
expect(numberOfPremiumPets).to.be.greaterThan(0);
expect(numberOfPremiumPets).to.equal(expectedTotal);
});
});
describe('wackyPets', () => {
it('contains a pet for each wacky potion * each drop egg', () => {
2019-10-08 18:45:38 +00:00
const numberOfWackyPotions = Object.keys(potions.wacky).length;
const numberOfDropEggs = Object.keys(eggs.drops).length;
const numberOfWackyPets = Object.keys(stable.wackyPets).length;
const expectedTotal = numberOfWackyPotions * numberOfDropEggs;
expect(numberOfWackyPets).to.be.greaterThan(0);
expect(numberOfWackyPets).to.equal(expectedTotal);
});
});
describe('specialPets', () => {
it('each value is a valid translation string', () => {
2019-10-08 18:45:38 +00:00
each(stable.specialPets, pet => {
const string = t(pet);
expectValidTranslationString(string);
});
});
});
describe('dropMounts', () => {
it('contains a mount for each drop potion * each drop egg', () => {
2019-10-08 18:45:38 +00:00
const numberOfDropPotions = Object.keys(potions.drops).length;
const numberOfDropEggs = Object.keys(eggs.drops).length;
const numberOfDropMounts = Object.keys(stable.dropMounts).length;
const expectedTotal = numberOfDropPotions * numberOfDropEggs;
expect(numberOfDropMounts).to.be.greaterThan(0);
expect(numberOfDropMounts).to.equal(expectedTotal);
});
});
describe('questMounts', () => {
it('contains a mount for each drop potion * each quest egg', () => {
2019-10-08 18:45:38 +00:00
const numberOfDropPotions = Object.keys(potions.drops).length;
const numberOfQuestEggs = Object.keys(eggs.quests).length;
const numberOfQuestMounts = Object.keys(stable.questMounts).length;
const expectedTotal = numberOfDropPotions * numberOfQuestEggs;
expect(numberOfQuestMounts).to.be.greaterThan(0);
expect(numberOfQuestMounts).to.equal(expectedTotal);
});
});
describe('premiumMounts', () => {
it('contains a mount for each premium potion * each drop egg', () => {
2019-10-08 18:45:38 +00:00
const numberOfPremiumPotions = Object.keys(potions.premium).length;
const numberOfDropEggs = Object.keys(eggs.drops).length;
const numberOfPremiumMounts = Object.keys(stable.premiumMounts).length;
const expectedTotal = numberOfPremiumPotions * numberOfDropEggs;
expect(numberOfPremiumMounts).to.be.greaterThan(0);
expect(numberOfPremiumMounts).to.equal(expectedTotal);
});
});
describe('specialMounts', () => {
it('each value is a valid translation string', () => {
2019-10-08 18:45:38 +00:00
each(stable.specialMounts, mount => {
const string = t(mount);
expectValidTranslationString(string);
});
});
});
2019-10-08 18:45:38 +00:00
describe('petInfo', () => {
it('contains an entry for all pets', () => {
2019-10-08 18:45:38 +00:00
const dropNumber = Object.keys(stable.dropPets).length;
const questNumber = Object.keys(stable.questPets).length;
const specialNumber = Object.keys(stable.specialPets).length;
const premiumNumber = Object.keys(stable.premiumPets).length;
const wackyNumber = Object.keys(stable.wackyPets).length;
const allNumber = Object.keys(stable.petInfo).length;
expect(allNumber).to.be.greaterThan(0);
2019-10-08 18:45:38 +00:00
expect(allNumber).to.equal(
dropNumber + questNumber + specialNumber + premiumNumber + wackyNumber,
);
});
it('contains basic information about each pet', () => {
each(stable.petInfo, (pet, key) => {
expectValidTranslationString(pet.text);
expect(pet.type).to.be.a('string');
expect(pet.key).to.equal(key);
});
});
});
2019-10-08 18:45:38 +00:00
describe('mountInfo', () => {
it('contains an entry for all mounts', () => {
2019-10-08 18:45:38 +00:00
const dropNumber = Object.keys(stable.dropMounts).length;
const questNumber = Object.keys(stable.questMounts).length;
const specialNumber = Object.keys(stable.specialMounts).length;
const premiumNumber = Object.keys(stable.premiumMounts).length;
const allNumber = Object.keys(stable.mountInfo).length;
expect(allNumber).to.be.greaterThan(0);
expect(allNumber).to.equal(dropNumber + questNumber + specialNumber + premiumNumber);
});
it('contains basic information about each mount', () => {
each(stable.mountInfo, (mount, key) => {
expectValidTranslationString(mount.text);
expect(mount.type).to.be.a('string');
expect(mount.key).to.equal(key);
});
});
});
});