Skip to content

Commit

Permalink
Improve Website implementation
Browse files Browse the repository at this point in the history
- Use private instead of _
- Update tests

Issue: ARSN-462
  • Loading branch information
williamlardier committed Mar 5, 2025
1 parent c1ca8bd commit 8915714
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 59 deletions.
65 changes: 33 additions & 32 deletions lib/models/WebsiteConfiguration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ export type Condition = {
export type RoutingRuleParams = { redirect?: Redirect; condition?: Condition };

export class RoutingRule {
_redirect?: Redirect;
_condition?: Condition;
private redirect?: Redirect;
private condition?: Condition;

/**
* Represents a routing rule in a website configuration.
Expand All @@ -37,8 +37,8 @@ export class RoutingRule {
*/
constructor(params?: RoutingRuleParams) {
if (params) {
this._redirect = params.redirect;
this._condition = params.condition;
this.redirect = params.redirect;
this.condition = params.condition;
}
}

Expand All @@ -48,8 +48,8 @@ export class RoutingRule {
*/
getRuleObject() {
const rule = {
redirect: this._redirect,
condition: this._condition,
redirect: this.redirect,
condition: this.condition,
};
return rule;
}
Expand All @@ -59,15 +59,15 @@ export class RoutingRule {
* @return condition;
*/
getCondition() {
return this._condition;
return this.condition;
}

/**
* Return the redirect object
* @return redirect;
*/
getRedirect() {
return this._redirect;
return this.redirect;
}
}

Expand All @@ -84,10 +84,10 @@ export type WebsiteConfigurationParams = {
};

export class WebsiteConfiguration {
_indexDocument?: string;
_errorDocument?: string;
_redirectAllRequestsTo?: RedirectAllRequestsTo;
_routingRules?: RoutingRule[];
private indexDocument?: string;
private errorDocument?: string;
private redirectAllRequestsTo?: RedirectAllRequestsTo;
private routingRules?: RoutingRule[];

/**
* Object that represents website configuration
Expand All @@ -107,9 +107,9 @@ export class WebsiteConfiguration {
*/
constructor(params: WebsiteConfigurationParams) {
if (params) {
this._indexDocument = params.indexDocument;
this._errorDocument = params.errorDocument;
this._redirectAllRequestsTo = params.redirectAllRequestsTo;
this.indexDocument = params.indexDocument;
this.errorDocument = params.errorDocument;
this.redirectAllRequestsTo = params.redirectAllRequestsTo;
this.setRoutingRules(params.routingRules);
}
}
Expand All @@ -120,12 +120,12 @@ export class WebsiteConfiguration {
*/
getConfig() {
const base = {
indexDocument: this._indexDocument,
errorDocument: this._errorDocument,
redirectAllRequestsTo: this._redirectAllRequestsTo,
indexDocument: this.indexDocument,
errorDocument: this.errorDocument,
redirectAllRequestsTo: this.redirectAllRequestsTo,
};
if (this._routingRules) {
const routingRules = this._routingRules.map(r => r.getRuleObject());
if (this.routingRules) {
const routingRules = this.routingRules.map(r => r.getRuleObject());
return { ...base, routingRules };
}
return { ...base };
Expand All @@ -138,47 +138,47 @@ export class WebsiteConfiguration {
* @param [obj.protocol] - protocol for redirecting all requests
*/
setRedirectAllRequestsTo(obj: { hostName: string; protocol?: string }) {
this._redirectAllRequestsTo = obj;
this.redirectAllRequestsTo = obj;
}

/**
* Return the redirectAllRequestsTo object
* @return redirectAllRequestsTo;
*/
getRedirectAllRequestsTo() {
return this._redirectAllRequestsTo;
return this.redirectAllRequestsTo;
}

/**
* Set the index document object name
* @param suffix - index document object key
*/
setIndexDocument(suffix: string) {
this._indexDocument = suffix;
this.indexDocument = suffix;
}

/**
* Get the index document object name
* @return indexDocument
*/
getIndexDocument() {
return this._indexDocument;
return this.indexDocument;
}

/**
* Set the error document object name
* @param key - error document object key
*/
setErrorDocument(key: string) {
this._errorDocument = key;
this.errorDocument = key;
}

/**
* Get the error document object name
* @return errorDocument
*/
getErrorDocument() {
return this._errorDocument;
return this.errorDocument;
}

/**
Expand All @@ -187,7 +187,7 @@ export class WebsiteConfiguration {
*/
setRoutingRules(array?: (RoutingRule | RoutingRuleParams)[]) {
if (array) {
this._routingRules = array.map(rule => {
this.routingRules = array.map(rule => {
if (rule instanceof RoutingRule) {
return rule;
}
Expand All @@ -201,13 +201,13 @@ export class WebsiteConfiguration {
* @param obj - rule to add to array
*/
addRoutingRule(obj?: RoutingRule | RoutingRuleParams) {
if (!this._routingRules) {
this._routingRules = [];
if (!this.routingRules) {
this.routingRules = [];
}
if (obj && obj instanceof RoutingRule) {
this._routingRules.push(obj);
this.routingRules.push(obj);
} else if (obj) {
this._routingRules.push(new RoutingRule(obj));
this.routingRules.push(new RoutingRule(obj));
}
}

Expand All @@ -216,6 +216,7 @@ export class WebsiteConfiguration {
* @return - array of RoutingRule instances
*/
getRoutingRules(): RoutingRuleParams[] {
return this._routingRules ? this._routingRules.map(r => r.getRuleObject()) : [];
console.log('hehe', this.routingRules, this.routingRules?.map(r => r.getRuleObject()));

Check failure on line 219 in lib/models/WebsiteConfiguration.ts

View workflow job for this annotation

GitHub Actions / test

Unexpected console statement
return this.routingRules?.map(r => r.getRuleObject()) ?? [];
}
}
54 changes: 27 additions & 27 deletions tests/unit/models/WebsiteConfiguration.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@ const testRoutingRuleParams = {
describe('RoutingRule class', () => {
it('should initialize even if no parameters are provided', done => {
const routingRule = new RoutingRule();
assert.strictEqual(routingRule._redirect, undefined);
assert.strictEqual(routingRule._condition, undefined);
assert.strictEqual(routingRule.redirect, undefined);
assert.strictEqual(routingRule.condition, undefined);
done();
});

it('should return a new routing rule', done => {
const routingRule = new RoutingRule(testRoutingRuleParams);
assert.deepStrictEqual(routingRule._redirect,
assert.deepStrictEqual(routingRule.redirect,
testRoutingRuleParams.redirect);
assert.deepStrictEqual(routingRule._condition,
assert.deepStrictEqual(routingRule.condition,
testRoutingRuleParams.condition);
done();
});
Expand All @@ -53,10 +53,10 @@ describe('RoutingRule class', () => {
describe('WebsiteConfiguration class', () => {
it('should initialize even if no parameters are provided', done => {
const websiteConfig = new WebsiteConfiguration();
assert.strictEqual(websiteConfig._indexDocument, undefined);
assert.strictEqual(websiteConfig._errorDocument, undefined);
assert.strictEqual(websiteConfig._redirectAllRequestsTo, undefined);
assert.strictEqual(websiteConfig._routingRules, undefined);
assert.strictEqual(websiteConfig.indexDocument, undefined);
assert.strictEqual(websiteConfig.errorDocument, undefined);
assert.strictEqual(websiteConfig.redirectAllRequestsTo, undefined);
assert.strictEqual(websiteConfig.routingRules, undefined);
done();
});

Expand All @@ -67,8 +67,8 @@ describe('WebsiteConfiguration class', () => {
errorDocument: 'error.html',
};
const websiteConfig = new WebsiteConfiguration(testWebsiteConfigParams);
assert.strictEqual(websiteConfig._indexDocument, 'index.html');
assert.strictEqual(websiteConfig._errorDocument, 'error.html');
assert.strictEqual(websiteConfig.indexDocument, 'index.html');
assert.strictEqual(websiteConfig.errorDocument, 'error.html');
done();
});

Expand All @@ -81,9 +81,9 @@ describe('WebsiteConfiguration class', () => {
},
};
const websiteConfig = new WebsiteConfiguration(testWebsiteConfigParams);
assert.strictEqual(websiteConfig._redirectAllRequestsTo.hostName,
assert.strictEqual(websiteConfig.redirectAllRequestsTo.hostName,
'test');
assert.strictEqual(websiteConfig._redirectAllRequestsTo.protocol,
assert.strictEqual(websiteConfig.redirectAllRequestsTo.protocol,
'https');
done();
});
Expand All @@ -98,7 +98,7 @@ describe('WebsiteConfiguration class', () => {
testWebsiteConfigParams.routingRules.push(testRoutingRule);
testWebsiteConfigParams.routingRules.push(testRoutingRule);
const websiteConfig = new WebsiteConfiguration(testWebsiteConfigParams);
assert.deepStrictEqual(websiteConfig._routingRules,
assert.deepStrictEqual(websiteConfig.routingRules,
testWebsiteConfigParams.routingRules);
done();
});
Expand All @@ -112,19 +112,19 @@ describe('WebsiteConfiguration class', () => {
testWebsiteConfigParams.routingRules.push(testRoutingRuleParams);
testWebsiteConfigParams.routingRules.push(testRoutingRuleParams);
const websiteConfig = new WebsiteConfiguration(testWebsiteConfigParams);
assert.deepEqual(websiteConfig._routingRules[0]._condition,
assert.deepEqual(websiteConfig.routingRules[0].condition,
testRoutingRuleParams.condition);
assert.deepEqual(websiteConfig._routingRules[1]._condition,
assert.deepEqual(websiteConfig.routingRules[1].condition,
testRoutingRuleParams.condition);
assert.deepEqual(websiteConfig._routingRules[2]._condition,
assert.deepEqual(websiteConfig.routingRules[2].condition,
testRoutingRuleParams.condition);
assert.deepEqual(websiteConfig._routingRules[0]._redirect,
assert.deepEqual(websiteConfig.routingRules[0].redirect,
testRoutingRuleParams.redirect);
assert.deepEqual(websiteConfig._routingRules[1]._redirect,
assert.deepEqual(websiteConfig.routingRules[1].redirect,
testRoutingRuleParams.redirect);
assert.deepEqual(websiteConfig._routingRules[2]._redirect,
assert.deepEqual(websiteConfig.routingRules[2].redirect,
testRoutingRuleParams.redirect);
assert(websiteConfig._routingRules[0] instanceof RoutingRule);
assert(websiteConfig.routingRules[0] instanceof RoutingRule);
done();
});

Expand Down Expand Up @@ -160,23 +160,23 @@ describe('WebsiteConfiguration class', () => {
const websiteConfig = new WebsiteConfiguration();
const routingRules = [testRoutingRuleParams];
websiteConfig.setRoutingRules(routingRules);
assert.strictEqual(websiteConfig.getRoutingRules()[0]._condition,
assert.strictEqual(websiteConfig.getRoutingRules()[0].condition,
routingRules[0].condition);
assert.strictEqual(websiteConfig.getRoutingRules()[0]._redirect,
assert.strictEqual(websiteConfig.getRoutingRules()[0].redirect,
routingRules[0].redirect);
assert(websiteConfig._routingRules[0] instanceof RoutingRule);
assert(websiteConfig.routingRules[0] instanceof RoutingRule);
done();
});
});

it('addRoutingRule should add a RoutingRule to routingRules', done => {
const websiteConfig = new WebsiteConfiguration();
websiteConfig.addRoutingRule(testRoutingRuleParams);
assert(Array.isArray(websiteConfig._routingRules));
assert.strictEqual(websiteConfig._routingRules.length, 1);
assert.strictEqual(websiteConfig._routingRules[0].getCondition(),
assert(Array.isArray(websiteConfig.routingRules));
assert.strictEqual(websiteConfig.routingRules.length, 1);
assert.strictEqual(websiteConfig.routingRules[0].getCondition(),
testRoutingRuleParams.condition);
assert.strictEqual(websiteConfig._routingRules[0].getRedirect(),
assert.strictEqual(websiteConfig.routingRules[0].getRedirect(),
testRoutingRuleParams.redirect);
done();
});
Expand Down

0 comments on commit 8915714

Please sign in to comment.