Skip to content

Commit 730fbed

Browse files
committed
Add tests for array.object.object.array structure
1 parent c95cb9c commit 730fbed

File tree

1 file changed

+127
-27
lines changed

1 file changed

+127
-27
lines changed

test/directives/schema-form-test.js

Lines changed: 127 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2549,11 +2549,25 @@ describe('directive',function(){
25492549
{
25502550
"name": "Bertie",
25512551
"forSale": "yes",
2552-
"price": 100
2552+
"price": 100,
2553+
"history": {
2554+
"historyKnown": "no"
2555+
}
25532556
},
25542557
{
25552558
"name": "Lightning McQueen",
2556-
"forSale": "no"
2559+
"forSale": "no",
2560+
"history": {
2561+
"historyKnown": "yes",
2562+
"previousOwners": [
2563+
{
2564+
"ownerName": ""
2565+
},
2566+
{
2567+
"ownerName": "Ben"
2568+
}
2569+
]
2570+
}
25572571
}
25582572
]
25592573
},
@@ -2567,7 +2581,15 @@ describe('directive',function(){
25672581
{
25682582
"name": "Greyhound",
25692583
"forSale": "yes",
2570-
"price": 1000
2584+
"price": 1000,
2585+
"history": {
2586+
"historyKnown": "yes",
2587+
"previousOwners": [
2588+
{
2589+
"ownerName": "Tom"
2590+
}
2591+
]
2592+
}
25712593
}
25722594
]
25732595
}
@@ -2591,7 +2613,24 @@ describe('directive',function(){
25912613
name: { type: "string" },
25922614
numberOfWheels: { type: "number" },
25932615
forSale: { type: "string", enum: ["yes", "no"] },
2594-
price: { type: "number" }
2616+
price: { type: "number" },
2617+
history: {
2618+
type: "object",
2619+
properties: {
2620+
historyKnown: { type: "string", enum: ["yes", "no"] },
2621+
previousOwners: {
2622+
type: "array",
2623+
items: {
2624+
type: "object",
2625+
properties: {
2626+
ownerName: { type: "string" },
2627+
purchaseDate: { type: "string" },
2628+
logBookProvided: { type: "string", enum: ["yes", "no"] }
2629+
}
2630+
}
2631+
}
2632+
}
2633+
}
25952634
}
25962635
}
25972636
}
@@ -2618,6 +2657,22 @@ describe('directive',function(){
26182657
{
26192658
key: "transportCategory[].transportOption[].price",
26202659
condition: "model.transportCategory[arrayIndices[0]].transportOption[arrayIndices[1]].forSale == 'yes'"
2660+
},
2661+
"transportCategory[].transportOption[].history.historyKnown",
2662+
{
2663+
key: "transportCategory[].transportOption[].history.previousOwners",
2664+
condition: "model.transportCategory[arrayIndices[0]].transportOption[arrayIndices[1]].history.historyKnown == 'yes'",
2665+
items: [
2666+
"transportCategory[].transportOption[].history.previousOwners[].ownerName",
2667+
{
2668+
key: "transportCategory[].transportOption[].history.previousOwners[].purchaseDate",
2669+
condition: "model.transportCategory[arrayIndices[0]].transportOption[arrayIndices[1]].history.previousOwners[arrayIndices[2]].ownerName.length > 2",
2670+
},
2671+
{
2672+
key: "transportCategory[].transportOption[].history.previousOwners[].logBookProvided",
2673+
condition: "model.transportCategory[arrayIndices[0]].mode != 'Horse' && model.transportCategory[arrayIndices[0]].transportOption[arrayIndices[1]].history.previousOwners[arrayIndices[2]].ownerName.length > 2"
2674+
}
2675+
]
26212676
}
26222677
]
26232678
}
@@ -2630,29 +2685,74 @@ describe('directive',function(){
26302685
$compile(tmpl)(scope);
26312686
$rootScope.$apply();
26322687

2633-
/*** numberOfWheels condition tests ***/
2634-
tmpl.children().eq(0).children().eq(1).children().eq(0).find('input[name="numberOfWheels"]').length.should.be.eq(2);
2635-
tmpl.children().eq(0).children().eq(1).children().eq(1).find('input[name="numberOfWheels"]').length.should.be.eq(0);
2636-
//numberOfWheels [0][0]
2637-
tmpl.children().eq(0).children().eq(1).children().eq(0).children().eq(2).children().eq(1).children().eq(0).children().eq(2).children().eq(0).text().should.be.equal('numberOfWheels');
2638-
//numberOfWheels [0][1]
2639-
tmpl.children().eq(0).children().eq(1).children().eq(0).children().eq(2).children().eq(1).children().eq(1).children().eq(2).children().eq(0).text().should.be.equal('numberOfWheels');
2640-
//numberOfWheels [1][0]
2641-
tmpl.children().eq(0).children().eq(1).children().eq(1).children().eq(2).children().eq(1).children().eq(0).children().eq(2).children().eq(0).text().should.be.equal('forSale');
2642-
//numberOfWheels [1][1]
2643-
tmpl.children().eq(0).children().eq(1).children().eq(1).children().eq(2).children().eq(1).children().eq(1).children().eq(2).children().eq(0).text().should.be.equal('forSale');
2644-
2645-
/*** price field condition tests ***/
2646-
tmpl.children().eq(0).children().eq(1).children().find('input[name="price"]').length.should.be.eq(2);
2647-
2648-
//price [0][0]
2649-
tmpl.children().eq(0).children().eq(1).children().eq(0).children().eq(2).children().eq(1).children().eq(0).find('input[name="price"]').length.should.be.eq(1);
2650-
//price [0][1]
2651-
tmpl.children().eq(0).children().eq(1).children().eq(0).children().eq(2).children().eq(1).children().eq(1).find('input[name="price"]').length.should.be.eq(0);
2652-
//price [1][0]
2653-
tmpl.children().eq(0).children().eq(1).children().eq(1).children().eq(2).children().eq(1).children().eq(0).find('input[name="price"]').length.should.be.eq(0);
2654-
//price [1][1]
2655-
tmpl.children().eq(0).children().eq(1).children().eq(1).children().eq(2).children().eq(1).children().eq(1).find('input[name="price"]').length.should.be.eq(1);
2688+
//References to sections of the rendered form to make the test more readable
2689+
var renderedForm = {
2690+
node: tmpl.children().eq(0).children().eq(1),
2691+
transportCategory: [
2692+
{
2693+
node: tmpl.children().eq(0).children().eq(1).children().eq(0),
2694+
},
2695+
{
2696+
node: tmpl.children().eq(0).children().eq(1).children().eq(1),
2697+
}
2698+
]
2699+
};
2700+
2701+
renderedForm.transportCategory[0]['transportOption'] = [
2702+
{ node: renderedForm.transportCategory[0].node.children().eq(2).children().eq(1).children().eq(0) },
2703+
{ node: renderedForm.transportCategory[0].node.children().eq(2).children().eq(1).children().eq(1) }
2704+
];
2705+
2706+
renderedForm.transportCategory[1]['transportOption'] = [
2707+
{ node: renderedForm.transportCategory[1].node.children().eq(2).children().eq(1).children().eq(0) },
2708+
{ node: renderedForm.transportCategory[1].node.children().eq(2).children().eq(1).children().eq(1) }
2709+
];
2710+
2711+
renderedForm.transportCategory[0].transportOption[1]['history'] = {
2712+
previousOwners: [
2713+
renderedForm.transportCategory[0].transportOption[1].node.children().eq(5).children().eq(0),
2714+
renderedForm.transportCategory[0].transportOption[1].node.children().eq(5).children().eq(1)
2715+
]
2716+
};
2717+
2718+
/*** transportCategory[].transportOption[].numberOfWheels condition tests ***/
2719+
renderedForm.transportCategory[0].node.find('input[name="numberOfWheels"]').length.should.be.eq(2);
2720+
renderedForm.transportCategory[1].node.find('input[name="numberOfWheels"]').length.should.be.eq(0);
2721+
renderedForm.transportCategory[0].transportOption[0].node.find('input[name="numberOfWheels"]').length.should.be.eq(1);
2722+
renderedForm.transportCategory[0].transportOption[1].node.find('input[name="numberOfWheels"]').length.should.be.eq(1);
2723+
renderedForm.transportCategory[1].transportOption[0].node.find('input[name="numberOfWheels"]').length.should.be.eq(0);
2724+
renderedForm.transportCategory[1].transportOption[1].node.find('input[name="numberOfWheels"]').length.should.be.eq(0);
2725+
2726+
/*** transportCategory[].transportOption[].price field condition tests ***/
2727+
renderedForm.node.children().find('input[name="price"]').length.should.be.eq(2);
2728+
renderedForm.transportCategory[0].transportOption[0].node.find('input[name="price"]').length.should.be.eq(1);
2729+
renderedForm.transportCategory[0].transportOption[1].node.find('input[name="price"]').length.should.be.eq(0);
2730+
renderedForm.transportCategory[1].transportOption[0].node.find('input[name="price"]').length.should.be.eq(0);
2731+
renderedForm.transportCategory[1].transportOption[1].node.find('input[name="price"]').length.should.be.eq(1);
2732+
2733+
/*** transportCategory[].transportOption[].history.previousOwners.ownerName field condition tests ***/
2734+
renderedForm.transportCategory[0].transportOption[0].node.find('input[name="ownerName"]').length.should.be.eq(0);
2735+
renderedForm.transportCategory[0].transportOption[1].node.find('input[name="ownerName"]').length.should.be.eq(2);
2736+
renderedForm.transportCategory[1].transportOption[0].node.find('input[name="ownerName"]').length.should.be.eq(0);
2737+
renderedForm.transportCategory[1].transportOption[1].node.find('input[name="ownerName"]').length.should.be.eq(1);
2738+
2739+
/*** transportCategory[].transportOption[].history.previousOwners[].purchaseDate field condition tests ***/
2740+
renderedForm.transportCategory[0].transportOption[0].node.find('input[name="purchaseDate"]').length.should.be.eq(0);
2741+
renderedForm.transportCategory[0].transportOption[1].node.find('input[name="purchaseDate"]').length.should.be.eq(1);
2742+
renderedForm.transportCategory[0].transportOption[1].history.previousOwners[0].find('input[name="purchaseDate"]').length.should.be.eq(0);
2743+
renderedForm.transportCategory[0].transportOption[1].history.previousOwners[1].find('input[name="purchaseDate"]').length.should.be.eq(1);
2744+
2745+
renderedForm.transportCategory[1].transportOption[0].node.find('input[name="purchaseDate"]').length.should.be.eq(0);
2746+
renderedForm.transportCategory[1].transportOption[1].node.find('input[name="purchaseDate"]').length.should.be.eq(1);
2747+
2748+
/*** transportCategory[].transportOption[].history.previousOwners[].logBookProvided field condition tests ***/
2749+
renderedForm.transportCategory[0].transportOption[0].node.find('select[name="logBookProvided"]').length.should.be.eq(0);
2750+
renderedForm.transportCategory[0].transportOption[1].node.find('select[name="logBookProvided"]').length.should.be.eq(1);
2751+
renderedForm.transportCategory[0].transportOption[1].history.previousOwners[0].find('select[name="logBookProvided"]').length.should.be.eq(0);
2752+
renderedForm.transportCategory[0].transportOption[1].history.previousOwners[1].find('select[name="logBookProvided"]').length.should.be.eq(1);
2753+
2754+
renderedForm.transportCategory[1].transportOption[0].node.find('select[name="logBookProvided"]').length.should.be.eq(0);
2755+
renderedForm.transportCategory[1].transportOption[1].node.find('select[name="logBookProvided"]').length.should.be.eq(0);
26562756

26572757
done();
26582758
});

0 commit comments

Comments
 (0)