Skip to content
Snippets Groups Projects
Commit 00bb4351 authored by mathias.chouet's avatar mathias.chouet
Browse files

MàJ tests e2e pour PAB

parent 12dcb855
No related branches found
No related tags found
1 merge request!45Resolve "Ajout du module de calcul d'une passe à bassins"
......@@ -33,6 +33,16 @@ export class CalculatorPage {
return await select.element(by.css(".mat-select-value-text > span")).getText();
}
async isSelectEmpty(select: ElementFinder) {
try {
const text = select.element(by.css(".mat-select-value-text > span"));
await text.getAttribute("outerHTML"); // await anything trigger the error
return false;
} catch (e) { // should be NoSuchElementError
return true;
}
}
getInputById(id: string) {
return element(by.css("input#" + id));
}
......
......@@ -25,10 +25,13 @@ describe("ngHyd − Passe à Bassins", () => {
describe("create PAB - ", async () => {
it("when PAB is created after Cloisons", async() => {
it("when PAB is created after Cloisons & ParallelStructure", async() => {
// create Cloisons
await startPage.navigateTo();
await listPage.clickMenuEntryForCalcType(10);
// create ParallelStructure
await navbar.clickNewCalculatorButton();
await listPage.clickMenuEntryForCalcType(8);
// create PAB
await navbar.clickNewCalculatorButton();
await listPage.clickMenuEntryForCalcType(15);
......@@ -39,15 +42,21 @@ describe("ngHyd − Passe à Bassins", () => {
const smc = calcPage.getSelectById("select_modele_cloisons");
const v = await calcPage.getSelectValueText(smc);
expect(v).toEqual("Cloisons");
// check downstream wall
const smca = calcPage.getSelectById("select_modele_cloison_aval");
expect(await calcPage.getSelectValueText(smca)).toEqual("Ouvrages");
});
it("when PAB is created before Cloisons", async() => {
it("when PAB is created before Cloisons & ParallelStructure", async() => {
// create PAB
await startPage.navigateTo();
await listPage.clickMenuEntryForCalcType(15);
// create Cloisons
await navbar.clickNewCalculatorButton();
await listPage.clickMenuEntryForCalcType(10);
// create ParallelStructure
await navbar.clickNewCalculatorButton();
await listPage.clickMenuEntryForCalcType(8);
// check number of basins
await navbar.clickCalculatorTab(0);
const innerFieldsets = element.all(by.css(".fieldset-inner"));
......@@ -56,6 +65,9 @@ describe("ngHyd − Passe à Bassins", () => {
const smc = calcPage.getSelectById("select_modele_cloisons");
const v = await calcPage.getSelectValueText(smc);
expect(v).toEqual("Cloisons");
// check downstream wall
const smca = calcPage.getSelectById("select_modele_cloison_aval");
expect(await calcPage.getSelectValueText(smca)).toEqual("Ouvrages");
});
});
......@@ -89,6 +101,7 @@ describe("ngHyd − Passe à Bassins", () => {
await debit.clear();
await debit.sendKeys("1.");
await debit.sendKeys("6"); // send "1.6" in 2 movements, because "." triggers an error that interrupts sendKeys() !
await browser.sleep(300);
const coteAmont = calcPage.getInputById("generatePabCoteAmont");
expect(await coteAmont.getAttribute("value")).toBe("114");
await coteAmont.clear();
......@@ -109,18 +122,17 @@ describe("ngHyd − Passe à Bassins", () => {
const innerFieldsets = element.all(by.css(".fieldset-inner"));
expect(await innerFieldsets.count()).toBe(5);
// check <select> values
for (let i = 0; i < innerFieldsets.length; i++) {
const inf = innerFieldsets[i];
const smc = inf.find("mat-select#select_modele_cloisons");
innerFieldsets.each(async (inf) => {
const smc = inf.element(by.css("mat-select#select_modele_cloisons"));
expect(await calcPage.getSelectValueText(smc)).toEqual("Cloisons 1");
}
});
});
});
describe("load session files - ", async () => {
it("when PAB is loaded after Cloisons", async() => {
it("when PAB is loaded after Cloisons & ParallelStructure", async() => {
await startPage.navigateTo();
// load
await navbar.clickMenuButton();
......@@ -130,9 +142,9 @@ describe("ngHyd − Passe à Bassins", () => {
await sidenav.loadSessionFile("./session-pab.json");
await browser.sleep(500);
// check existence of the loaded modules
expect(await navbar.getAllCalculatorTabs().count()).toBe(4);
expect(await navbar.getAllCalculatorTabs().count()).toBe(6);
// check parameters values
await navbar.clickCalculatorTab(3);
await navbar.clickCalculatorTab(5);
await browser.sleep(700); // sometime fails because of tabs order @see nghyd#197
const P_Q = calcPage.getInputById("Q");
expect(await P_Q.getAttribute("value")).toBe("1.533");
......@@ -144,16 +156,20 @@ describe("ngHyd − Passe à Bassins", () => {
// check <select> and QA values
const expectedCloisons = [ "Cloisons 1", "Cloisons 2", "Cloisons", "Cloisons 2", "Cloisons 1" ];
const expectedQA = [ 2, 1, 3, 5, 4 ];
for (let i = 0; i < innerFieldsets.length; i++) {
const inf = innerFieldsets[i];
const smc = inf.find("mat-select#select_modele_cloisons");
let i = 0;
innerFieldsets.each(async (inf) => {
const smc = inf.element(by.css("mat-select#select_modele_cloisons"));
expect(await calcPage.getSelectValueText(smc)).toEqual(expectedCloisons[i]);
const QA = inf.find("input#QA");
const QA = inf.element(by.css("input#QA"));
expect(Number(await QA.getAttribute("value"))).toBe(expectedQA[i]);
}
i++;
});
// check downstream wall
const smca = calcPage.getSelectById("select_modele_cloison_aval");
expect(await calcPage.getSelectValueText(smca)).toEqual("Ouvrages 1");
});
it("when PAB is loaded before Cloisons", async() => {
it("when PAB is loaded before Cloisons & ParallelStructure", async() => {
await startPage.navigateTo();
// load
await navbar.clickMenuButton();
......@@ -163,7 +179,7 @@ describe("ngHyd − Passe à Bassins", () => {
await sidenav.loadSessionFile("./session-pab-mauvais-ordre.json");
await browser.sleep(500);
// check existence of the loaded modules
expect(await navbar.getAllCalculatorTabs().count()).toBe(4);
expect(await navbar.getAllCalculatorTabs().count()).toBe(6);
// check parameters values
await navbar.clickCalculatorTab(0);
await browser.sleep(200);
......@@ -177,16 +193,20 @@ describe("ngHyd − Passe à Bassins", () => {
// check <select> values
const expectedCloisons = [ "Cloisons 1", "Cloisons 2", "Cloisons", "Cloisons 2", "Cloisons 1" ];
const expectedQA = [ 2, 1, 3, 5, 4 ];
for (let i = 0; i < innerFieldsets.length; i++) {
const inf = innerFieldsets[i];
const smc = inf.find("mat-select#select_modele_cloisons");
let i = 0;
innerFieldsets.each(async (inf) => {
const smc = inf.element(by.css("mat-select#select_modele_cloisons"));
expect(await calcPage.getSelectValueText(smc)).toEqual(expectedCloisons[i]);
const QA = inf.find("input#QA");
const QA = inf.element(by.css("input#QA"));
expect(Number(await QA.getAttribute("value"))).toBe(expectedQA[i]);
}
i++;
});
// check downstream wall
const smca = calcPage.getSelectById("select_modele_cloison_aval");
expect(await calcPage.getSelectValueText(smca)).toEqual("Ouvrages 1");
});
it("when PAB is loaded without Cloisons", async() => {
it("when PAB is loaded without Cloisons & ParallelStructure", async() => {
await startPage.navigateTo();
// load
await navbar.clickMenuButton();
......@@ -195,6 +215,7 @@ describe("ngHyd − Passe à Bassins", () => {
await browser.sleep(200);
await sidenav.loadSessionFile("./session-pab-modeles-vides.json");
await browser.sleep(500);
// check existence of the loaded modules
expect(await navbar.getAllCalculatorTabs().count()).toBe(1);
// check number of basins
......@@ -203,21 +224,30 @@ describe("ngHyd − Passe à Bassins", () => {
const innerFieldsets = element.all(by.css(".fieldset-inner"));
expect(await innerFieldsets.count()).toBe(3);
// check empty <select>
for (let i = 0; i < innerFieldsets.length; i++) {
const inf = innerFieldsets[i];
const smc = inf.find("mat-select#select_modele_cloisons");
expect(await calcPage.getSelectValueText(smc)).toEqual("");
}
innerFieldsets.each(async (inf) => {
const smc = inf.element(by.css("mat-select#select_modele_cloisons"));
const smcEmpty = await calcPage.isSelectEmpty(smc);
console.log("SMC EMPTY ?", smcEmpty);
expect(smcEmpty).toBe(true);
});
// check empty <select> for downstream wall
const smca = calcPage.getSelectById("select_modele_cloison_aval");
expect(await calcPage.isSelectEmpty(smca)).toBe(true);
// create a Cloisons
await navbar.clickNewCalculatorButton();
await listPage.clickMenuEntryForCalcType(10);
// check that it is selected
// create a ParallelStructure
await navbar.clickNewCalculatorButton();
await listPage.clickMenuEntryForCalcType(8);
// check that they are selected
await navbar.clickCalculatorTab(0);
for (let i = 0; i < innerFieldsets.length; i++) {
const inf = innerFieldsets[i];
const smc = inf.find("mat-select#select_modele_cloisons");
innerFieldsets.each(async (inf) => {
const smc = inf.element(by.css("mat-select#select_modele_cloisons"));
expect(await calcPage.getSelectValueText(smc)).toEqual("Cloisons");
}
});
const smca2 = calcPage.getSelectById("select_modele_cloison_aval");
expect(await calcPage.getSelectValueText(smca2)).toEqual("Ouvrages");
});
});
......
......@@ -2,14 +2,15 @@
"header": {
"source": "jalhyd",
"format_version": "1.0",
"created": "2019-05-09T08:16:58.151Z"
"created": "2019-05-10T13:09:33.792Z"
},
"session": [
{
"uid": "NXd0dH",
"props": {
"calcType": 15,
"nodeType": 0
"nodeType": 0,
"modeleCloisonAval": "eWtnaj"
},
"meta": {
"title": "PAB"
......@@ -190,7 +191,7 @@
"nodeType": 0
},
"meta": {
"title": "Cloisons 1"
"title": "Cloisons 2"
},
"children": [
{
......@@ -260,7 +261,7 @@
"nodeType": 0
},
"meta": {
"title": "Cloisons 2"
"title": "Cloisons 1"
},
"children": [
{
......@@ -322,6 +323,136 @@
"value": 0.5
}
]
},
{
"uid": "M2Q0NX",
"props": {
"calcType": 8,
"nodeType": 0
},
"meta": {
"title": "Ouvrages"
},
"children": [
{
"uid": "MmJxen",
"props": {
"calcType": 7,
"nodeType": 5,
"structureType": 1,
"loiDebit": 1
},
"children": [],
"parameters": [
{
"symbol": "ZDV",
"mode": "SINGLE",
"value": 100
},
{
"symbol": "W",
"mode": "SINGLE",
"value": 0.5
},
{
"symbol": "L",
"mode": "SINGLE",
"value": 2
},
{
"symbol": "Cd",
"mode": "SINGLE",
"value": 0.4
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "CALCUL"
},
{
"symbol": "Z1",
"mode": "SINGLE",
"value": 102
},
{
"symbol": "Z2",
"mode": "SINGLE",
"value": 101.5
}
]
},
{
"uid": "eWtnaj",
"props": {
"calcType": 8,
"nodeType": 0
},
"meta": {
"title": "Ouvrages 1"
},
"children": [
{
"uid": "ZmhpeG",
"props": {
"calcType": 7,
"nodeType": 5,
"structureType": 1,
"loiDebit": 1
},
"children": [],
"parameters": [
{
"symbol": "ZDV",
"mode": "SINGLE",
"value": 100
},
{
"symbol": "W",
"mode": "SINGLE",
"value": 0.5
},
{
"symbol": "L",
"mode": "SINGLE",
"value": 2
},
{
"symbol": "Cd",
"mode": "SINGLE",
"value": 0.4
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "CALCUL"
},
{
"symbol": "Z1",
"mode": "SINGLE",
"value": 102
},
{
"symbol": "Z2",
"mode": "SINGLE",
"value": 101.5
}
]
}
]
}
\ No newline at end of file
{"header":{"source":"jalhyd","format_version":"1.0","created":"2019-05-09T08:16:58.151Z"},"session":[{"uid":"amp6N2","props":{"calcType":10,"nodeType":0},"meta":{"title":"Cloisons"},"children":[{"uid":"YzNjam","props":{"calcType":7,"nodeType":5,"structureType":2,"loiDebit":12},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"Cd","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"Pr","mode":"SINGLE","value":0.0001},{"symbol":"Q","mode":"CALCUL"},{"symbol":"Z1","mode":"SINGLE","value":102},{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"PB","mode":"SINGLE","value":1},{"symbol":"DH","mode":"SINGLE","value":0.5}]},{"uid":"bTkxem","props":{"calcType":10,"nodeType":0},"meta":{"title":"Cloisons 1"},"children":[{"uid":"Y3JjaW","props":{"calcType":7,"nodeType":5,"structureType":2,"loiDebit":12},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"Cd","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"Pr","mode":"SINGLE","value":0.0001},{"symbol":"Q","mode":"CALCUL"},{"symbol":"Z1","mode":"SINGLE","value":102},{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"PB","mode":"SINGLE","value":1},{"symbol":"DH","mode":"SINGLE","value":0.5}]},{"uid":"bnNhen","props":{"calcType":10,"nodeType":0},"meta":{"title":"Cloisons 2"},"children":[{"uid":"amJzem","props":{"calcType":7,"nodeType":5,"structureType":2,"loiDebit":12},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"Cd","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"Pr","mode":"SINGLE","value":0.0001},{"symbol":"Q","mode":"CALCUL"},{"symbol":"Z1","mode":"SINGLE","value":102},{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"PB","mode":"SINGLE","value":1},{"symbol":"DH","mode":"SINGLE","value":0.5}]},{"uid":"NXd0dH","props":{"calcType":15,"nodeType":0},"meta":{"title":"PAB"},"children":[{"uid":"bWswdD","props":{"calcType":16,"nodeType":0,"modeleCloisons":"bTkxem"},"parameters":[{"symbol":"QA","mode":"SINGLE","value":2}]},{"uid":"am1oNz","props":{"calcType":16,"nodeType":0,"modeleCloisons":"bnNhen"},"parameters":[{"symbol":"QA","mode":"SINGLE","value":1}]},{"uid":"cWJrZm","props":{"calcType":16,"nodeType":0,"modeleCloisons":"amp6N2"},"parameters":[{"symbol":"QA","mode":"SINGLE","value":3}]},{"uid":"Y25nNn","props":{"calcType":16,"nodeType":0,"modeleCloisons":"bnNhen"},"parameters":[{"symbol":"QA","mode":"SINGLE","value":5}]},{"uid":"M2gxaX","props":{"calcType":16,"nodeType":0,"modeleCloisons":"bTkxem"},"parameters":[{"symbol":"QA","mode":"SINGLE","value":4}]}],"parameters":[{"symbol":"Pr","mode":"SINGLE","value":0.0001},{"symbol":"Q","mode":"SINGLE","value":"1.533"},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":99.44}]}]}
\ No newline at end of file
{
"header": {
"source": "jalhyd",
"format_version": "1.0",
"created": "2019-05-10T13:09:33.792Z"
},
"session": [
{
"uid": "amp6N2",
"props": {
"calcType": 10,
"nodeType": 0
},
"meta": {
"title": "Cloisons"
},
"children": [
{
"uid": "YzNjam",
"props": {
"calcType": 7,
"nodeType": 5,
"structureType": 2,
"loiDebit": 12
},
"children": [],
"parameters": [
{
"symbol": "S",
"mode": "SINGLE",
"value": 0.1
},
{
"symbol": "Cd",
"mode": "SINGLE",
"value": 0.7
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "CALCUL"
},
{
"symbol": "Z1",
"mode": "SINGLE",
"value": 102
},
{
"symbol": "LB",
"mode": "SINGLE",
"value": 10
},
{
"symbol": "BB",
"mode": "SINGLE",
"value": 1
},
{
"symbol": "PB",
"mode": "SINGLE",
"value": 1
},
{
"symbol": "DH",
"mode": "SINGLE",
"value": 0.5
}
]
},
{
"uid": "bTkxem",
"props": {
"calcType": 10,
"nodeType": 0
},
"meta": {
"title": "Cloisons 2"
},
"children": [
{
"uid": "Y3JjaW",
"props": {
"calcType": 7,
"nodeType": 5,
"structureType": 2,
"loiDebit": 12
},
"children": [],
"parameters": [
{
"symbol": "S",
"mode": "SINGLE",
"value": 0.1
},
{
"symbol": "Cd",
"mode": "SINGLE",
"value": 0.7
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "CALCUL"
},
{
"symbol": "Z1",
"mode": "SINGLE",
"value": 102
},
{
"symbol": "LB",
"mode": "SINGLE",
"value": 10
},
{
"symbol": "BB",
"mode": "SINGLE",
"value": 1
},
{
"symbol": "PB",
"mode": "SINGLE",
"value": 1
},
{
"symbol": "DH",
"mode": "SINGLE",
"value": 0.5
}
]
},
{
"uid": "bnNhen",
"props": {
"calcType": 10,
"nodeType": 0
},
"meta": {
"title": "Cloisons 1"
},
"children": [
{
"uid": "amJzem",
"props": {
"calcType": 7,
"nodeType": 5,
"structureType": 2,
"loiDebit": 12
},
"children": [],
"parameters": [
{
"symbol": "S",
"mode": "SINGLE",
"value": 0.1
},
{
"symbol": "Cd",
"mode": "SINGLE",
"value": 0.7
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "CALCUL"
},
{
"symbol": "Z1",
"mode": "SINGLE",
"value": 102
},
{
"symbol": "LB",
"mode": "SINGLE",
"value": 10
},
{
"symbol": "BB",
"mode": "SINGLE",
"value": 1
},
{
"symbol": "PB",
"mode": "SINGLE",
"value": 1
},
{
"symbol": "DH",
"mode": "SINGLE",
"value": 0.5
}
]
},
{
"uid": "M2Q0NX",
"props": {
"calcType": 8,
"nodeType": 0
},
"meta": {
"title": "Ouvrages"
},
"children": [
{
"uid": "MmJxen",
"props": {
"calcType": 7,
"nodeType": 5,
"structureType": 1,
"loiDebit": 1
},
"children": [],
"parameters": [
{
"symbol": "ZDV",
"mode": "SINGLE",
"value": 100
},
{
"symbol": "W",
"mode": "SINGLE",
"value": 0.5
},
{
"symbol": "L",
"mode": "SINGLE",
"value": 2
},
{
"symbol": "Cd",
"mode": "SINGLE",
"value": 0.4
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "CALCUL"
},
{
"symbol": "Z1",
"mode": "SINGLE",
"value": 102
},
{
"symbol": "Z2",
"mode": "SINGLE",
"value": 101.5
}
]
},
{
"uid": "eWtnaj",
"props": {
"calcType": 8,
"nodeType": 0
},
"meta": {
"title": "Ouvrages 1"
},
"children": [
{
"uid": "ZmhpeG",
"props": {
"calcType": 7,
"nodeType": 5,
"structureType": 1,
"loiDebit": 1
},
"children": [],
"parameters": [
{
"symbol": "ZDV",
"mode": "SINGLE",
"value": 100
},
{
"symbol": "W",
"mode": "SINGLE",
"value": 0.5
},
{
"symbol": "L",
"mode": "SINGLE",
"value": 2
},
{
"symbol": "Cd",
"mode": "SINGLE",
"value": 0.4
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "CALCUL"
},
{
"symbol": "Z1",
"mode": "SINGLE",
"value": 102
},
{
"symbol": "Z2",
"mode": "SINGLE",
"value": 101.5
}
]
},
{
"uid": "NXd0dH",
"props": {
"calcType": 15,
"nodeType": 0,
"modeleCloisonAval": "eWtnaj"
},
"meta": {
"title": "PAB"
},
"children": [
{
"uid": "bWswdD",
"props": {
"calcType": 16,
"nodeType": 0,
"modeleCloisons": "bTkxem"
},
"parameters": [
{
"symbol": "QA",
"mode": "SINGLE",
"value": 2
}
]
},
{
"uid": "am1oNz",
"props": {
"calcType": 16,
"nodeType": 0,
"modeleCloisons": "bnNhen"
},
"parameters": [
{
"symbol": "QA",
"mode": "SINGLE",
"value": 1
}
]
},
{
"uid": "cWJrZm",
"props": {
"calcType": 16,
"nodeType": 0,
"modeleCloisons": "amp6N2"
},
"parameters": [
{
"symbol": "QA",
"mode": "SINGLE",
"value": 3
}
]
},
{
"uid": "Y25nNn",
"props": {
"calcType": 16,
"nodeType": 0,
"modeleCloisons": "bnNhen"
},
"parameters": [
{
"symbol": "QA",
"mode": "SINGLE",
"value": 5
}
]
},
{
"uid": "M2gxaX",
"props": {
"calcType": 16,
"nodeType": 0,
"modeleCloisons": "bTkxem"
},
"parameters": [
{
"symbol": "QA",
"mode": "SINGLE",
"value": 4
}
]
}
],
"parameters": [
{
"symbol": "Pr",
"mode": "SINGLE",
"value": 0.0001
},
{
"symbol": "Q",
"mode": "SINGLE",
"value": "1.533"
},
{
"symbol": "Z1",
"mode": "CALCUL"
},
{
"symbol": "Z2",
"mode": "SINGLE",
"value": 99.44
}
]
}
]
}
\ No newline at end of file
......@@ -243,7 +243,7 @@ export class FormulairePab extends FormulaireBase {
this.afterParseFieldset(sender);
this.reset();
this.dumpPabStructure(this.currentNub as Pab);
// this.dumpPabStructure(this.currentNub as Pab);
break;
}
break;
......@@ -251,6 +251,7 @@ export class FormulairePab extends FormulaireBase {
}
}
// debug method
private dumpPabStructure(pab: Pab) {
console.log(`PAB: ${pab.uid}, ${pab.children.length} children`);
for (const c of pab.children) {
......@@ -259,5 +260,8 @@ export class FormulairePab extends FormulaireBase {
+ ` (cote amont ${c.prms.Z1.singleValue}, longueur ${c.prms.LB.singleValue})`
);
}
if (pab.downWall) {
console.log(`+ downstream wall: ${pab.downWall.uid}`);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment