Skip to content

Commit 6f4b8f3

Browse files
committed
fixes #22 address test failing also converts Address Module to defined oop instead of prototypical oop.
1 parent cc1d23c commit 6f4b8f3

File tree

5 files changed

+241
-171
lines changed

5 files changed

+241
-171
lines changed

src/Address.js

+115-61
Original file line numberDiff line numberDiff line change
@@ -3,80 +3,134 @@
33
var util = require('util');
44

55
var Address = function(parameters) {
6-
if (typeof paramaters == 'object' && parameters.PostalCode) {
7-
this.Street = parameters.Street;
8-
this.City = parameters.City;
9-
this.Region = parameters.Region;
10-
this.PostalCode = parameters.PostalCode;
11-
}
6+
Object.defineProperties(
7+
this,
8+
{
9+
parse:{
10+
value:parse,
11+
enumerable:true,
12+
writable:false
13+
},
14+
getAddressLines:{
15+
value:getAddressLines,
16+
enumerable:true,
17+
writable:false
18+
},
19+
Type:{
20+
value:'House',
21+
enumerable:true,
22+
writable:true
23+
},
24+
Street:{
25+
value:'',
26+
enumerable:true,
27+
writable:true
28+
},
29+
City:{
30+
value:'',
31+
enumerable:true,
32+
writable:true
33+
},
34+
Region:{
35+
value:'',
36+
enumerable:true,
37+
writable:true
38+
},
39+
PostalCode:{
40+
value:'',
41+
enumerable:true,
42+
writable:true
43+
},
44+
_init:{
45+
value:init,
46+
enumerable:false,
47+
writable:false
48+
},
49+
_parameters:{
50+
value:parameters,
51+
enumerable:false,
52+
writable:false
53+
}
54+
}
55+
);
1256

13-
if (util.isArray(parameters)) {
14-
this.Street = parameters[0];
15-
this.City = parameters[1];
16-
this.Region = parameters[2];
17-
this.PostalCode = parameters[3];
18-
}
57+
this._init();
1958

20-
if (typeof paramaters == 'number') {
21-
parameters+='';
22-
}
59+
function init(){
60+
if (typeof this._parameters == 'object' && this._parameters.PostalCode) {
61+
this.Street = this._parameters.Street;
62+
this.City = this._parameters.City;
63+
this.Region = this._parameters.Region;
64+
this.PostalCode = this._parameters.PostalCode;
65+
}
2366

2467

25-
if (typeof parameters == 'string') {
26-
this.parse(parameters);
27-
}
2868

29-
if (!parameters.Type) {
30-
this.Type = 'House';
31-
}
32-
};
69+
if (util.isArray(this._parameters)) {
70+
this.Street = this._parameters[0];
71+
this.City = this._parameters[1];
72+
this.Region = this._parameters[2];
73+
this.PostalCode = this._parameters[3];
74+
}
75+
76+
if (typeof this._parameters == 'number') {
77+
this._parameters+='';
78+
}
3379

34-
Address.prototype.parse = function(locationString) {
35-
var splitAddress = locationString.split(',');
80+
if (typeof this._parameters == 'string') {
81+
this.parse(this._parameters);
82+
}
3683

37-
for (var i in splitAddress) {
38-
splitAddress[i] = splitAddress[i].trim();
84+
if (this._parameters.Type) {
85+
this.Type = this._parameters.Type;
86+
}
3987
}
4088

41-
//need better intellegence for auto determining address parts
42-
switch (splitAddress.length) {
43-
case 1:
44-
this.PostalCode = Number(splitAddress[0]);
89+
function parse(locationString) {
90+
var splitAddress = locationString.split(',');
4591

46-
if (!this.PostalCode) {
92+
for (var i in splitAddress) {
93+
splitAddress[i] = splitAddress[i].trim();
94+
}
95+
96+
//need better intellegence for auto determining address parts
97+
switch (splitAddress.length) {
98+
case 1:
99+
this.PostalCode = Number(splitAddress[0])+'';
100+
101+
if (!this.PostalCode) {
102+
this.City = splitAddress[0];
103+
}
104+
break;
105+
case 2:
106+
this.Region = splitAddress[0];
107+
this.PostalCode = splitAddress[1];
108+
break;
109+
case 3:
47110
this.City = splitAddress[0];
48-
}
49-
break;
50-
case 2:
51-
this.Region = splitAddress[0];
52-
this.PostalCode = splitAddress[1];
53-
break;
54-
case 3:
55-
this.City = splitAddress[0];
56-
this.Region = splitAddress[1]
57-
this.PostalCode = splitAddress[2];
58-
break;
59-
case 4:
60-
this.Street = splitAddress[0];
61-
this.City = splitAddress[1];
62-
this.Region = splitAddress[2];
63-
this.PostalCode = splitAddress[3];
64-
}
65-
};
111+
this.Region = splitAddress[1]
112+
this.PostalCode = splitAddress[2];
113+
break;
114+
case 4:
115+
this.Street = splitAddress[0];
116+
this.City = splitAddress[1];
117+
this.Region = splitAddress[2];
118+
this.PostalCode = splitAddress[3];
119+
}
120+
};
66121

67-
Address.prototype.getAddressLines = function() {
68-
var line1 = (this.Street ? this.Street : '');
69-
var line2 = new String(
70-
(this.City ? this.City + ',' : '') +
71-
(this.Region ? this.Region + ',' : '') +
72-
this.PostalCode
73-
);
122+
function getAddressLines() {
123+
var line1 = (this.Street ? this.Street : '');
124+
var line2 = (this.City ? this.City + ',' : '') +
125+
(this.Region ? this.Region + ',' : '') +
126+
this.PostalCode
74127

75-
var lines=[line1, line2];
76-
lines.line1=line1;
77-
lines.line2=line2;
128+
var lines=[line1, line2];
129+
lines.line1=line1;
130+
lines.line2=line2;
78131

79-
return lines;
80-
}
132+
return lines;
133+
}
134+
};
81135

82136
module.exports = Address;

src/Utilities.js

-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ var findNearbyStores = function(address, pickUpType, callback) {
2020
var address = new Address(address)
2121
var addressLines=address.getAddressLines();
2222

23-
console.log(address,addressLines);
24-
2523
var url = urls.store.find.replace(
2624
'${line1}',
2725
encodeURI(

test/address_test.js

+62-50
Original file line numberDiff line numberDiff line change
@@ -9,102 +9,114 @@ describe(
99
function() {
1010
it(
1111
'should create Address object from JSON',
12-
function(done) {
12+
function() {
1313
var jsonObj = {
14-
Street: "123 Easy Street",
15-
City: "St. Louis",
16-
Region: "MO",
17-
PostalCode: "63105",
18-
Type: "House"
14+
Street: '123 Easy Street',
15+
City: 'St. Louis',
16+
Region: 'MO',
17+
PostalCode: '63105',
18+
Type: 'House'
1919
};
2020

2121
var address = new Address(jsonObj);
2222

23-
for(var i in address){
24-
console.log(i,address[i])
25-
}
26-
2723
expect(address).not.to.be.null;
28-
console.log(address, typeof address);
2924
expect(address.Street).to.equal(jsonObj.Street);
3025
expect(address.City).to.equal(jsonObj.City);
3126
expect(address.Region).to.equal(jsonObj.Region);
3227

33-
done();
3428
}
3529
);
3630

3731
it(
3832
'should create Address object from string',
39-
function(done) {
40-
var address = new Address("123 Easy Street, St. Louis, MO, 63105");
41-
42-
expect(address).not.to.be.null;
43-
expect(address.Street).to.equal("123 Easy Street");
44-
expect(address.City).to.equal("St. Louis");
45-
expect(address.Region).to.equal("MO");
46-
expect(address.PostalCode).to.equal("63105");
47-
48-
done();
33+
function() {
34+
var address = new Address('123 Easy Street, St. Louis, MO, 63105');
35+
36+
expect(address).to.be.defined;
37+
expect(address.Street).to.equal('123 Easy Street');
38+
expect(address.City).to.equal('St. Louis');
39+
expect(address.Region).to.equal('MO');
40+
expect(address.PostalCode).to.equal('63105');
4941
}
5042
);
5143

5244
it(
53-
'should return full address to pass to findNearbyStores',
54-
function(done) {
55-
var address = new Address("123 Easy Street, St.Louis, MO, 63105");
45+
'should return address lines',
46+
function() {
47+
var address = new Address('123 Easy Street, St.Louis, MO, 63105');
5648
var addressLines = address.getAddressLines();
5749

58-
expect(addressLines).to.have.length(2);
59-
expect(addressLines[0]).to.equal("123 Easy Street");
60-
expect(addressLines[1].trim()).to.equal(address.City + "," + address.Region + "," + address.PostalCode);
61-
62-
done();
50+
expect(addressLines.length).to.equal(2);
51+
52+
expect(
53+
addressLines[0]
54+
).to.equal(
55+
'123 Easy Street'
56+
);
57+
58+
expect(
59+
addressLines[1]
60+
).to.equal(
61+
address.City + ',' +
62+
address.Region + ',' +
63+
address.PostalCode
64+
);
65+
66+
expect(
67+
addressLines.line1
68+
).to.equal(
69+
'123 Easy Street'
70+
);
71+
72+
expect(
73+
addressLines.line2
74+
).to.equal(
75+
address.City + ',' +
76+
address.Region + ',' +
77+
address.PostalCode
78+
);
6379

6480
}
6581
);
6682

6783
it(
68-
'should return zip code to pass to findNearbyStores',
69-
function(done) {
70-
var address = new Address("63105");
84+
'should return only zip code in line2',
85+
function() {
86+
var address = new Address('63105');
7187
var addressLines = address.getAddressLines();
7288

73-
expect(addressLines).to.have.length(2);
89+
expect(addressLines.length).to.equal(2);
7490
expect(addressLines[0]).to.equal('');
7591
expect(addressLines[1]).to.equal(address.PostalCode);
7692

77-
done();
93+
expect(addressLines.line1).to.equal('');
94+
expect(addressLines.line2).to.equal(address.PostalCode);
7895

7996
}
8097
);
8198

8299
it(
83-
'should return city, state, zip to pass to findNearbyStores',
84-
function(done) {
85-
var address = new Address("St. Louis, MO, 63105");
100+
'should return city, state, zip in address lines',
101+
function() {
102+
var address = new Address('St. Louis, MO, 63105');
86103
var addressLines = address.getAddressLines();
87104

88105
expect(addressLines).to.have.length(2);
89106
expect(addressLines[0]).to.equal('');
90-
expect(addressLines[1]).to.equal(address.City + "," + address.Region + "," + address.PostalCode);
91-
92-
done();
93-
107+
expect(addressLines[1]).to.equal(address.City + ',' + address.Region + ',' + address.PostalCode);
94108
}
95109
);
96110

97111
it(
98112
'should create Address object from array',
99-
function(done) {
100-
var address = new Address(["123 Easy Street", "St. Louis", "MO", "63105"]);
113+
function() {
114+
var address = new Address(['123 Easy Street', 'St. Louis', 'MO', '63105']);
101115
expect(address).not.to.be.null;
102-
expect(address.Street).to.equal("123 Easy Street");
103-
expect(address.City).to.equal("St. Louis");
104-
expect(address.Region).to.equal("MO");
105-
expect(address.PostalCode).to.equal("63105");
106-
107-
done();
116+
expect(address.Street).to.equal('123 Easy Street');
117+
expect(address.City).to.equal('St. Louis');
118+
expect(address.Region).to.equal('MO');
119+
expect(address.PostalCode).to.equal('63105');
108120
}
109121
);
110122
}

0 commit comments

Comments
 (0)