I have the following sample.json file. Examples found on the jasmine-data-provider were illustrated for simple JSON data. How do I pass the values of the below json data to the data-provider.
[
{
"company_name": "Google",
"Headquartered_at": "Mountain view",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "3",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "SRE",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
}, {
"name": "Human resources",
"number_of_subDepartment": "0"
}]
},
{
"company_name": "Microsoft",
"Headquartered_at": "Redmond",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}]
},
{
"company_name": "Facebook",
"Headquartered_at": "Menlo park",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}]
}
]
The examples of usage in spec files were like below
describe('test addition with data provider - provider function', function () {
function plusProvider() {
return [
{a: 2, b: 3, expected: 5},
{a: '14', b: 15, expected: 29},
{a: 12, b: '13', expected: 25},
{a: '22', b: '13', expected: 35},
];
}
using(plusProvider, function (data) {
it('should calc with operator +', function () {
var result = calculator.calc(data.a, data.b, '+');
expect(result).toEqual(data.expected);
});
});
});
As the sample.json file is more complex, how do I read and assign values to the data-provider function. Could you point me to the right resources.
It should be possible to interact with the passed JSON in any manner you require using the standard JSON notation with jasmine-data-provider. Or are you wanting to call it on each JSON block inside you array?
datafile.json
[
{
"company_name": "Google",
"Headquartered_at": "Mountain view",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "3",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "SRE",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}
]
},
{
"company_name": "Microsoft",
"Headquartered_at": "Redmond",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}
]
},
{
"company_name": "Facebook",
"Headquartered_at": "Menlo park",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}
]
}
]
code
let using = require('jasmine-data-provider');
let file = require('./datafile.json');
using(file, (companyData) => {
console.log(companyData.company_name);
console.log(companyData.Headquartered_at);
for (let department of companyData.Department) {
console.log('Department name=' + department.name);
console.log('num sub departments=' + department.number_of_subDepartment);
if (department.number_of_subDepartment > 0) {
for (let subDepartment of department.subDepartments) {
console.log(subDepartment);
}
}
}
console.log();
//alternatively you can access in the standard way
console.log(companyData.Department[0].name);
console.log();
})