Skip to content

Commit af22dec

Browse files
author
vikasrohit
authored
Merge pull request #1 from maxceem/develop
Fix unit tests
2 parents 7b9631d + c507299 commit af22dec

File tree

6 files changed

+49
-38
lines changed

6 files changed

+49
-38
lines changed

src/services/ProcessorServiceProductCategory.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ async function create (message) {
7676
}
7777

7878
await helper.updateMetadadaESPromise(updateDocPromise)
79-
logger.debug(`Product category created successfully in elasticsearch index, (productCategoryId: ${message.key})`)
79+
logger.debug(`Product category created successfully in elasticsearch index, (productCategoryKey: ${message.key})`)
8080
}
8181

8282
create.schema = {
@@ -102,7 +102,7 @@ async function update (message) {
102102
}
103103

104104
await helper.updateMetadadaESPromise(updateDocPromise)
105-
logger.debug(`Product category updated successfully in elasticsearch index, (productCategoryId: ${message.key})`)
105+
logger.debug(`Product category updated successfully in elasticsearch index, (productCategoryKey: ${message.key})`)
106106
}
107107

108108
update.schema = {
@@ -122,7 +122,7 @@ async function deleteMessage (message) {
122122
}
123123

124124
await helper.updateMetadadaESPromise(updateDocPromise)
125-
logger.debug(`Product category deleted successfully in elasticsearch index, (productCategoryId: ${message.key})`)
125+
logger.debug(`Product category deleted successfully in elasticsearch index, (productCategoryKey: ${message.key})`)
126126
}
127127

128128
deleteMessage.schema = {

src/services/ProcessorServiceProductTemplate.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ function createSchema () {
3232
brief: Joi.string().max(45),
3333
details: Joi.string().max(255),
3434
aliases: Joi.array(),
35-
template: Joi.object().empty(null),
35+
template: Joi.object().allow(null),
3636
form: Joi.object().keys({
3737
key: Joi.string().required(),
3838
version: Joi.number()
39-
}).empty(null),
39+
}).allow(null),
4040
disabled: Joi.boolean().optional(),
4141
hidden: Joi.boolean().optional(),
4242
isAddOn: Joi.boolean().optional(),
@@ -47,7 +47,12 @@ function createSchema () {
4747
updatedBy: Joi.any(),
4848
deletedBy: Joi.any()
4949
})
50-
.xor('form', 'template')
50+
// TODO rewrite this condition so only one of these must be "present" and "not-null"
51+
// - if we just uncomment it, then if one these is passed as null, it would be treated as passed
52+
// - if we uncomment it and change above from '.allow(null)' to '.empty(null)'
53+
// then this check would pass successfully, BUT the null value would be removed from the object
54+
// so the object would end up WITHOUT null value which is expected for consistency.
55+
// .xor('form', 'template')
5156
.unknown(true)
5257
.required()
5358
}

src/services/ProcessorServiceProjectTemplate.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,20 @@ function createIdSchema () {
2424
*/
2525
function updateSchema () {
2626
return createIdSchema().keys({
27-
scope: Joi.object().empty(null),
28-
phases: Joi.object().empty(null),
27+
scope: Joi.object().allow(null),
28+
phases: Joi.object().allow(null),
2929
form: Joi.object().keys({
3030
key: Joi.string().required(),
3131
version: Joi.number()
32-
}).empty(null),
32+
}).allow(null),
3333
planConfig: Joi.object().keys({
3434
key: Joi.string().required(),
3535
version: Joi.number()
36-
}).empty(null),
36+
}).allow(null),
3737
priceConfig: Joi.object().keys({
3838
key: Joi.string().required(),
3939
version: Joi.number()
40-
}).empty(null),
40+
}).allow(null),
4141
disabled: Joi.boolean().optional(),
4242
hidden: Joi.boolean().optional(),
4343
createdAt: Joi.any(),
@@ -63,9 +63,15 @@ function createSchema () {
6363
info: Joi.string().max(255).required(),
6464
aliases: Joi.array().required()
6565
})
66-
.xor('form', 'scope')
67-
.xor('phases', 'planConfig')
68-
.nand('priceConfig', 'scope')
66+
// TODO rewrite these condition so only one of these must be "present" and "not-null"
67+
// - if we just uncomment it, then if one these is passed as null, it would be treated as passed
68+
// - if we uncomment it and change above from '.allow(null)' to '.empty(null)'
69+
// then this check would pass successfully, BUT the null value would be removed from the object
70+
// so the object would end up WITHOUT null value which is expected for consistency.
71+
// .xor('form', 'scope')
72+
// .xor('phases', 'planConfig')
73+
// TODO rewrite this rule too accordingly
74+
// .nand('priceConfig', 'scope')
6975
}
7076

7177
/**

test/common/testData.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ const orgConfigId = orgConfigCreatedMessage.payload.id
136136
const projectTemplateId = projectTemplateCreatedMessage.payload.id
137137
const projectTypeId = projectTypeCreatedMessage.payload.key
138138
const projectTypeNotFoundId = `${projectTypeCreatedMessage.payload.key}_notFound`
139-
const productCategoryId = productCategoryCreatedMessage.payload.id
140-
const productCategoryNotFoundId = `${productCategoryCreatedMessage.payload.key}_notFound`
139+
const productCategoryKey = productCategoryCreatedMessage.payload.key
140+
const productCategoryNotFoundKey = `${productCategoryCreatedMessage.payload.key}_notFound`
141141
const metadataId = config.get('esConfig.ES_METADATA_DEFAULT_ID')
142142
let notFoundId = getRandomInt(10000000)
143143
// we use projectId+1, timelineId+1, attachmentId+1,... to create another object if need
@@ -186,8 +186,8 @@ module.exports = {
186186
projectTemplateId,
187187
projectTypeId,
188188
projectTypeNotFoundId,
189-
productCategoryId,
190-
productCategoryNotFoundId,
189+
productCategoryKey,
190+
productCategoryNotFoundKey,
191191
productCategoryUpdatedMessage,
192192
productCategoryCreatedMessage,
193193
productCategoryDeletedMessage,

test/common/testHelper.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,21 @@ async function getMetadataESData (id) {
5151
}
5252

5353
/**
54-
* Expect given objects are equal, ignoring some fields if provided.
55-
* @param {Object} obj1 obj1
56-
* @param {Object} obj2 obj2
54+
* Expect given objects are equal, or only some fields should be tested if provided.
55+
*
56+
* @param {Object} target target
57+
* @param {Object} expected expected
5758
* @param {Object} compareFields compare fields
58-
* @returns {ExpectStatic} the elastic search data of id of configured index type in configured index
5959
*/
60-
function expectObj (obj1, obj2, compareFields) {
61-
let o1 = _.pick(obj1, _.identity)
62-
let o2 = _.pick(obj2, _.identity)
63-
if (compareFields) {
64-
o1 = _.pick(o1, compareFields)
65-
o2 = _.pick(o2, compareFields)
66-
}
60+
function expectObj (target, expected, compareFields) {
61+
expect(target, 'expectObj(): "target" object should not be undefined').to.not.be.an('undefined')
62+
expect(expected, 'expectObj(): "expected" object should not be undefined').to.not.be.an('undefined')
6763

68-
expect(_.isEqual(o1, o2)).to.equal(true)
64+
const targetClean = compareFields ? _.pick(target, compareFields) : target
65+
const expectedClean = compareFields ? _.pick(expected, compareFields) : expected
66+
67+
// check if objects are deeply equal by values
68+
expect(targetClean).to.eql(expectedClean)
6969
}
7070

7171
module.exports = {

test/e2e/processor.metadata.index.test.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ const {
2525
projectTemplateId,
2626
projectTypeId,
2727
projectTypeNotFoundId,
28-
productCategoryId,
29-
productCategoryNotFoundId,
28+
productCategoryKey,
29+
productCategoryNotFoundKey,
3030
productCategoryUpdatedMessage,
3131
productCategoryCreatedMessage,
3232
productCategoryDeletedMessage,
@@ -106,39 +106,39 @@ describe('TC Product Category Topic Tests', () => {
106106
it('create product category message', async () => {
107107
await ProcessorService.create(productCategoryCreatedMessage)
108108
const data = await testHelper.getMetadataESData(metadataId)
109-
testHelper.expectObj(_.find(data.productCategories, { key: productCategoryId }),
109+
testHelper.expectObj(_.find(data.productCategories, { key: productCategoryKey }),
110110
productCategoryCreatedMessage.payload,
111111
_.keys(_.omit(productCategoryCreatedMessage.payload, ['resource'])))
112112
})
113113

114114
it('create product category message - already exists', async () => {
115115
await ProcessorService.create(productCategoryCreatedMessage)
116116
const data = await testHelper.getMetadataESData(metadataId)
117-
testHelper.expectObj(_.find(data.productCategories, { key: productCategoryId }),
117+
testHelper.expectObj(_.find(data.productCategories, { key: productCategoryKey }),
118118
productCategoryCreatedMessage.payload,
119119
_.keys(_.omit(productCategoryCreatedMessage.payload, ['resource'])))
120120
})
121121

122122
it('update product category message', async () => {
123123
await ProcessorService.update(productCategoryUpdatedMessage)
124124
const data = await testHelper.getMetadataESData(metadataId)
125-
testHelper.expectObj(_.find(data.productCategories, { key: productCategoryId }),
125+
testHelper.expectObj(_.find(data.productCategories, { key: productCategoryKey }),
126126
productCategoryUpdatedMessage.payload,
127127
_.keys(_.omit(productCategoryUpdatedMessage.payload, ['resource'])))
128128
})
129129

130130
it('update product category message - not found', async () => {
131131
const message = _.cloneDeep(productCategoryUpdatedMessage)
132-
message.payload.key = productCategoryNotFoundId
132+
message.payload.key = productCategoryNotFoundKey
133133
await ProcessorService.update(message)
134134
const data = await testHelper.getMetadataESData(metadataId)
135-
expect(_.find(data.productCategories, { key: productCategoryNotFoundId })).to.be.an('undefined')
135+
expect(_.find(data.productCategories, { key: productCategoryNotFoundKey })).to.be.an('undefined')
136136
})
137137

138138
it('delete product category message', async () => {
139139
await ProcessorService.deleteMessage(productCategoryDeletedMessage)
140140
const data = await testHelper.getMetadataESData(metadataId)
141-
expect(_.find(data.productCategories, { key: productCategoryId })).to.be.an('undefined')
141+
expect(_.find(data.productCategories, { key: productCategoryKey })).to.be.an('undefined')
142142
})
143143
})
144144

0 commit comments

Comments
 (0)