Skip to content

Commit

Permalink
fixed some bugs in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
da1nerd committed Dec 16, 2016
1 parent ea11b6a commit c7628bf
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 63 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ node_modules/
*.tgz
npm-debug.log
build/
mocha_tests/out
mocha_tests/out
.vscode
73 changes: 26 additions & 47 deletions __tests__/main-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -944,46 +944,14 @@ describe('Update check', () => {
});

it('should abort catalog downloads when exception is thrown', function() {
library.__queueResponse = [{
slug: 'langnames',
chunks_url: 'some/url'
},
{
slug: 'new-language-questions',
chunks_url: 'some/url'
}];
library.__queueResponse = {
slug: 'langnames',
chunks_url: 'some/url'
};
library.__queueResponse = {
slug: 'new-language-questions',
chunks_url: 'some/url'
url: 'some/url'
};
request.__queueStatusCode = 200;
request.__queueResponse = function() {
throw new Error('Something bad happened');
};
request.__queueStatusCode = 200;
request.__queueResponse = JSON.stringify([
{
chp: "01",
firstvs: "01"
},
{
chp: "01",
firstvs: "03"
},
{
chp: "01",
firstvs: "06"
},
{
chp: "01",
firstvs: "09"
}
]);
request.__setStatusCode = 400;

return client.updateCatalogs()
.then(() => {
Expand All @@ -992,31 +960,43 @@ describe('Update check', () => {
.catch((err) => {
expect(err instanceof Error);
expect(library.addTargetLanguage.mock.calls.length).toEqual(0);
expect(library.setApprovedTargetLanguage.mock.calls.length).toEqual(0);
expect(library.addQuestionnaire.mock.calls.length).toEqual(0);
expect(library.addQuestion.mock.calls.length).toEqual(0);
expect(request.read.mock.calls.length).toEqual(1);
});
});

it('should not abort catalog downloads when 404 is received', function() {
library.__queueResponse = [{
slug: 'langnames',
chunks_url: 'some/url'
},
{
slug: 'new-language-questions',
chunks_url: 'some/url'
}];
// langs
library.__queueResponse = {
slug: 'langnames',
chunks_url: 'some/url'
url: 'some/url'
};
request.__queueStatusCode = 404;
request.__queueResponse = JSON.stringify([]);

// temp langs
library.__queueResponse = {
slug: 'new-language-questions',
chunks_url: 'some/url'
slug: 'temp-langnames',
url: 'some/url'
};
request.__queueStatusCode = 404;
request.__queueResponse = JSON.stringify([]);

// approved langs
library.__queueResponse = {
slug: 'approved-temp-langnames',
url: 'some/url'
};
request.__queueStatusCode = 404;
request.__queueResponse = JSON.stringify([]);

// lang questions
library.__queueResponse = {
slug: 'new-language-questions',
url: 'some/url'
};
request.__queueStatusCode = 200;
request.__queueResponse = JSON.stringify(
{
Expand Down Expand Up @@ -1057,11 +1037,10 @@ describe('Update check', () => {
return client.updateCatalogs()
.then(() => {
expect(library.addTargetLanguage.mock.calls.length).toEqual(0);
expect(library.addTempTargetLanguage.mock.calls.length).toEqual(0);
expect(library.setApprovedTargetLanguage.mock.calls.length).toEqual(0);
expect(library.addQuestionnaire.mock.calls.length).toEqual(1);
expect(library.addQuestion.mock.calls.length).toEqual(2);
})
.catch((err) => {
expect(false).toBeTruthy();
});
});

Expand Down
8 changes: 8 additions & 0 deletions lib/__mocks__/library.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ var __catalogMarker = 0;
var __questionnaireMarker = 0;
var __questionMarker = 0;
var __resourceMarker = 0;
var __tempTargetLanguageMarker = 0;

var responses = [];

Expand All @@ -31,6 +32,13 @@ var library = {
__targetLanguageMarker ++;
return __targetLanguageMarker;
}),
addTempTargetLanguage: jest.fn(function(language) {
__tempTargetLanguageMarker ++;
return __tempTargetLanguageMarker;
}),
setApprovedTargetLanguage: jest.fn(function(temp_target_language_slug, target_language_slug) {
return true;
}),
addProject: jest.fn(function(project, source_language_id) {
__projectMarker ++;
return __projectMarker;
Expand Down
26 changes: 18 additions & 8 deletions lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ function Client(dbPath, resourceDir, opts) {
}, project.source_language_id);

// add resource to words project
var dictResource = _.clone(helpResource);
let dictResource = _.clone(helpResource);
dictResource.slug = 'tw';
dictResource.name = 'translationWords';
dictResource.type = 'dict';
Expand Down Expand Up @@ -516,19 +516,29 @@ function Client(dbPath, resourceDir, opts) {
* @returns {Promise.<>}
*/
const updateCatalogs = function(onProgress) {
let catalogs = library.public_getters.getCatalogs();
var list = [];
const errorHandler = function(err) {
if(err instanceof Error) {
return Promise.reject(err);
} else {
return Promise.resolve();
}
};

// TRICKY: the language catalogs are dependent so we must run them in order
return updateCatalog('langnames', onProgress)
.catch(errorHandler)
.then(function(response) {
return updateCatalog('temp-langnames', onProgress);
})
.catch(errorHandler)
.then(function(response) {
return updateCatalog('approved-temp-langnames', onProgress);
})
.catch(errorHandler)
.then(function(response) {
return updateCatalog('new-language-questions', onProgress)
})
.catch(errorHandler)
.then(function() {
return Promise.resolve();
});
Expand Down Expand Up @@ -607,7 +617,7 @@ function Client(dbPath, resourceDir, opts) {
return new Promise(function(resolve, reject) {
try {
let languages = JSON.parse(data);
languages.forEach(function (language, index) {
_.forEach(languages, function (language, index) {
language.slug = language.lc;
language.name = language.ln;
language.anglicized_name = language.ang;
Expand Down Expand Up @@ -645,7 +655,7 @@ function Client(dbPath, resourceDir, opts) {
return new Promise(function(resolve, reject) {
try {
let obj = JSON.parse(data);
obj.languages.forEach(function (questionnaire, index) {
_.forEach(obj.languages, function (questionnaire, index) {
// format
questionnaire.language_slug = questionnaire.slug;
questionnaire.language_name = questionnaire.name;
Expand All @@ -656,7 +666,7 @@ function Client(dbPath, resourceDir, opts) {
let id = library.addQuestionnaire(questionnaire);
if (id > 0) {
// add questions
questionnaire.questions.forEach(function (question, n) {
_.forEach(questionnaire.questions, function (question, n) {
// format question
question.is_required = question.required ? 1 : 0;
question.depends_on = question.depends_on === null ? -1 : question.depends_on;
Expand Down Expand Up @@ -706,7 +716,7 @@ function Client(dbPath, resourceDir, opts) {
return new Promise(function(resolve, reject) {
try {
let languages = JSON.parse(data);
languages.forEach(function (language, index) {
_.forEach(languages, function (language, index) {
// format
language.slug = language.lc;
language.name = language.ln;
Expand Down Expand Up @@ -744,7 +754,7 @@ function Client(dbPath, resourceDir, opts) {
onProgress = onProgress || function() {};
return new Promise(function(resolve, reject) {
let languages = JSON.parse(data);
languages.forEach(function(language, index) {
_.forEach(languages, function(language, index) {
try {
let tempCode = Object.keys(language)[0];
library.setApprovedTargetLanguage(tempCode, language[tempCode]);
Expand Down
15 changes: 8 additions & 7 deletions lib/utils/promises.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
'use strict';
const _ = require('lodash');

module.exports = {

Expand All @@ -11,14 +12,14 @@ module.exports = {
* @returns {Promise.<[]>} results from function
*/
chain: function (visit, onFail, opts) {
var fail = onFail ? onFail : this.ret(false),
let fail = onFail ? onFail : this.ret(false),
config = opts || { compact: true };

return function (list) {
var p = Promise.resolve(false),
let p = Promise.resolve(false),
results = [];

list.forEach(function (l, i) {
_.forEach(list, function (l, i) {
p = p.then(visit.bind(null, l))
.catch(function (err) {
return fail(err, l);
Expand All @@ -43,7 +44,7 @@ module.exports = {
* @returns {*}
*/
mapObject: function (obj, visit, filter) {
var keys = Object.getOwnPropertyNames(obj);
let keys = Object.getOwnPropertyNames(obj);

if (filter) {
keys = keys.filter(function (key) {
Expand Down Expand Up @@ -76,12 +77,12 @@ module.exports = {
* @returns {function.<Promise>} a new function that returns a promise
*/
promisify: function (module, fn) {
var hasModule = typeof module !== 'function',
let hasModule = typeof module !== 'function',
f = hasModule ? module[fn] : module,
mod = hasModule ? module : null;

return function () {
var args = [],
let args = [],
i = arguments.length - 1;

/**
Expand Down Expand Up @@ -130,7 +131,7 @@ module.exports = {
* @returns
*/
promisifyAll: function (module, opts) {
var config = opts || {},
let config = opts || {},
isValid = config.isValid || function (f, fn, mod) {
/**
* Filter out functions that aren't 'public' and aren't 'methods' and aren't asynchronous.
Expand Down

0 comments on commit c7628bf

Please sign in to comment.