mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-05 21:02:43 +00:00
Finish adding test cases
This commit is contained in:
@@ -22,7 +22,8 @@
|
|||||||
"circleci": "npm test && eslint **/*.{js,jsx} --max-warnings=0",
|
"circleci": "npm test && eslint **/*.{js,jsx} --max-warnings=0",
|
||||||
"verify": "npm run lint && npm test",
|
"verify": "npm run lint && npm test",
|
||||||
"test": "jest --runInBand",
|
"test": "jest --runInBand",
|
||||||
"test:api-unit": "jest \"server/.*.spec.js\" -t --verbose",
|
"test:api-unit": "jest \"server/.*.spec.js\" --verbose",
|
||||||
|
"test:api-unit:themes": "jest \"server/.*.spec.js\" -t \"theme bundle\" --verbose",
|
||||||
"test:coverage": "jest --coverage --silent --runInBand",
|
"test:coverage": "jest --coverage --silent --runInBand",
|
||||||
"test:dev": "jest --verbose --watch",
|
"test:dev": "jest --verbose --watch",
|
||||||
"test:basic": "jest tests/markdown/basic.test.js --verbose",
|
"test:basic": "jest tests/markdown/basic.test.js --verbose",
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ describe('Tests for api', ()=>{
|
|||||||
let saved;
|
let saved;
|
||||||
|
|
||||||
beforeEach(()=>{
|
beforeEach(()=>{
|
||||||
|
jest.resetModules();
|
||||||
|
jest.restoreAllMocks();
|
||||||
|
|
||||||
saved = undefined;
|
saved = undefined;
|
||||||
saveFunc = jest.fn(async function() {
|
saveFunc = jest.fn(async function() {
|
||||||
saved = { ...this, _id: '1' };
|
saved = { ...this, _id: '1' };
|
||||||
@@ -82,10 +85,6 @@ describe('Tests for api', ()=>{
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(()=>{
|
|
||||||
jest.restoreAllMocks();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('getId', ()=>{
|
describe('getId', ()=>{
|
||||||
it('should return only id if google id is not present', ()=>{
|
it('should return only id if google id is not present', ()=>{
|
||||||
const { id, googleId } = api.getId({
|
const { id, googleId } = api.getId({
|
||||||
@@ -582,10 +581,14 @@ brew`);
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('theme bundle', () => {
|
describe('Theme bundle', () => {
|
||||||
it('should return Theme Bundle for a User Theme', async () => {
|
it('should return Theme Bundle for a User Theme', async () => {
|
||||||
|
const brews = {
|
||||||
|
userThemeAID: { title: 'User Theme A', renderer: 'V3', theme: null, shareId: 'userThemeAID', style: 'User Theme A Style' }
|
||||||
|
};
|
||||||
|
|
||||||
const toBrewPromise = (brew) => new Promise((res) => res({ toObject: () => brew }));
|
const toBrewPromise = (brew) => new Promise((res) => res({ toObject: () => brew }));
|
||||||
model.get = jest.fn(() => toBrewPromise({ title: 'User Theme A', renderer: 'V3', theme: null, shareId: 'userThemeAID', style: 'User Theme A Style' }));
|
model.get = jest.fn((getParams) => toBrewPromise(brews[getParams.shareId]));
|
||||||
const req = { params: { renderer: "V3", id: "userThemeAID" }, get: () => { return 'localhost'; }, protocol: 'https' };
|
const req = { params: { renderer: "V3", id: "userThemeAID" }, get: () => { return 'localhost'; }, protocol: 'https' };
|
||||||
|
|
||||||
await api.getThemeBundle(req, res);
|
await api.getThemeBundle(req, res);
|
||||||
@@ -598,7 +601,6 @@ brew`);
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should return Theme Bundle for nested User Themes', async () => {
|
it('should return Theme Bundle for nested User Themes', async () => {
|
||||||
console.log(api.getId)
|
|
||||||
const brews = {
|
const brews = {
|
||||||
userThemeAID: { title: 'User Theme A', renderer: 'V3', theme: 'userThemeBID', shareId: 'userThemeAID', style: 'User Theme A Style' },
|
userThemeAID: { title: 'User Theme A', renderer: 'V3', theme: 'userThemeBID', shareId: 'userThemeAID', style: 'User Theme A Style' },
|
||||||
userThemeBID: { title: 'User Theme B', renderer: 'V3', theme: 'userThemeCID', shareId: 'userThemeBID', style: 'User Theme B Style' },
|
userThemeBID: { title: 'User Theme B', renderer: 'V3', theme: 'userThemeCID', shareId: 'userThemeBID', style: 'User Theme B Style' },
|
||||||
@@ -606,13 +608,12 @@ brew`);
|
|||||||
};
|
};
|
||||||
|
|
||||||
const toBrewPromise = (brew) => new Promise((res) => res({ toObject: () => brew }));
|
const toBrewPromise = (brew) => new Promise((res) => res({ toObject: () => brew }));
|
||||||
model.get = jest.fn((shareId) => {
|
model.get = jest.fn((getParams) => toBrewPromise(brews[getParams.shareId]));
|
||||||
toBrewPromise(brews[shareId]);
|
|
||||||
});
|
|
||||||
const req = { params: { renderer: "V3", id: "userThemeAID" }, get: () => { return 'localhost'; }, protocol: 'https' };
|
const req = { params: { renderer: "V3", id: "userThemeAID" }, get: () => { return 'localhost'; }, protocol: 'https' };
|
||||||
|
|
||||||
await api.getThemeBundle(req, res);
|
await api.getThemeBundle(req, res);
|
||||||
|
|
||||||
|
expect(res.status).toHaveBeenCalledWith(200);
|
||||||
expect(res.send).toHaveBeenCalledWith({
|
expect(res.send).toHaveBeenCalledWith({
|
||||||
styles: [
|
styles: [
|
||||||
"/* From Brew: https://localhost/share/userThemeCID */\n\nUser Theme C Style",
|
"/* From Brew: https://localhost/share/userThemeCID */\n\nUser Theme C Style",
|
||||||
@@ -621,9 +622,71 @@ brew`);
|
|||||||
],
|
],
|
||||||
snippets: []
|
snippets: []
|
||||||
});
|
});
|
||||||
expect(res.status).toHaveBeenCalledWith(200);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should return Theme Bundle for a Static Theme', async () => {
|
||||||
|
const req = { params: { renderer: "V3", id: "5ePHB" }, get: () => { return 'localhost'; }, protocol: 'https' };
|
||||||
|
|
||||||
|
await api.getThemeBundle(req, res);
|
||||||
|
|
||||||
|
expect(res.status).toHaveBeenCalledWith(200);
|
||||||
|
expect(res.send).toHaveBeenCalledWith({
|
||||||
|
styles: [
|
||||||
|
`/* From Theme Blank */\n\n@import url("/themes/V3/Blank/style.css");`,
|
||||||
|
`/* From Theme 5ePHB */\n\n@import url("/themes/V3/5ePHB/style.css");`
|
||||||
|
],
|
||||||
|
snippets: [
|
||||||
|
"V3_Blank",
|
||||||
|
"V3_5ePHB"
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return Theme Bundle for nested User and Static Themes together', async () => {
|
||||||
|
const brews = {
|
||||||
|
userThemeAID: { title: 'User Theme A', renderer: 'V3', theme: 'userThemeBID', shareId: 'userThemeAID', style: 'User Theme A Style' },
|
||||||
|
userThemeBID: { title: 'User Theme B', renderer: 'V3', theme: 'userThemeCID', shareId: 'userThemeBID', style: 'User Theme B Style' },
|
||||||
|
userThemeCID: { title: 'User Theme C', renderer: 'V3', theme: '5eDMG', shareId: 'userThemeCID', style: 'User Theme C Style' }
|
||||||
|
};
|
||||||
|
|
||||||
|
const toBrewPromise = (brew) => new Promise((res) => res({ toObject: () => brew }));
|
||||||
|
model.get = jest.fn((getParams) => toBrewPromise(brews[getParams.shareId]));
|
||||||
|
const req = { params: { renderer: "V3", id: "userThemeAID" }, get: () => { return 'localhost'; }, protocol: 'https' };
|
||||||
|
|
||||||
|
await api.getThemeBundle(req, res);
|
||||||
|
|
||||||
|
expect(res.status).toHaveBeenCalledWith(200);
|
||||||
|
expect(res.send).toHaveBeenCalledWith({
|
||||||
|
styles: [
|
||||||
|
`/* From Theme Blank */\n\n@import url("/themes/V3/Blank/style.css");`,
|
||||||
|
`/* From Theme 5ePHB */\n\n@import url("/themes/V3/5ePHB/style.css");`,
|
||||||
|
`/* From Theme 5eDMG */\n\n@import url("/themes/V3/5eDMG/style.css");`,
|
||||||
|
"/* From Brew: https://localhost/share/userThemeCID */\n\nUser Theme C Style",
|
||||||
|
"/* From Brew: https://localhost/share/userThemeBID */\n\nUser Theme B Style",
|
||||||
|
"/* From Brew: https://localhost/share/userThemeAID */\n\nUser Theme A Style"
|
||||||
|
],
|
||||||
|
snippets: [
|
||||||
|
"V3_Blank",
|
||||||
|
"V3_5ePHB",
|
||||||
|
"V3_5eDMG"
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail for an invalid Theme in the chain', async()=>{
|
||||||
|
const brews = {
|
||||||
|
userThemeAID: { title: 'User Theme A', renderer: 'V3', theme: 'missingTheme', shareId: 'userThemeAID', style: 'User Theme A Style' },
|
||||||
|
};
|
||||||
|
|
||||||
|
const toBrewPromise = (brew) => new Promise((res) => res({ toObject: () => brew }));
|
||||||
|
model.get = jest.fn((getParams) => toBrewPromise(brews[getParams.shareId]));
|
||||||
|
const req = { params: { renderer: "V3", id: "userThemeAID" }, get: () => { return 'localhost'; }, protocol: 'https' };
|
||||||
|
|
||||||
|
await api.getThemeBundle(req, res);
|
||||||
|
|
||||||
|
expect(res.status).toHaveBeenCalledWith(404);
|
||||||
|
expect(res.send).toHaveBeenCalledWith('Theme Not Found - Renderer: V3, Name: missingTheme');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
|
|||||||
Reference in New Issue
Block a user