Skip to content

Commit e7d0b56

Browse files
author
Dan Tolbert
committed
init pass on csr orders
1 parent 28a337d commit e7d0b56

File tree

6 files changed

+254
-3
lines changed

6 files changed

+254
-3
lines changed

README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,4 +859,38 @@ catch (e) {
859859
}
860860
```
861861

862+
## CSR Lookup
863+
864+
### Create CSR Order
865+
866+
```js
867+
const data = {
868+
customerOrderId: "MyId5",
869+
WorkingOrBillingTelephoneNumber:"9198675309",
870+
accountNumber:"123463",
871+
endUserPIN:"1231"
872+
};
873+
874+
try {
875+
const csrOrderResponse = await CsrOrder.createAsync(data);
876+
console.log(csrOrderResponse);
877+
}
878+
catch (e) {
879+
console.log(e);
880+
}
881+
```
882+
883+
### Fetch Existing CSR Order
884+
885+
```js
886+
const csrOrderId = "1234-abc"
887+
888+
try {
889+
const csrOrderData = await CsrOrder.getAsync(csrOrderId);
890+
console.log(csrOrderData);
891+
}
892+
catch (e) {
893+
console.log(e);
894+
}
895+
```
862896

lib/client.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ function findDescendants(obj, name){
106106
function createPostOrPutRequest(method, path, data){
107107
var request = this.prepareRequest(superagent[method](this.prepareUrl(path)));
108108
if(data){
109-
return request.send(this.buildXml(data)).type("application/xml");
109+
var requestBody = this.buildXml(data);
110+
return request.send(requestBody).type("application/xml");
110111
}
111112
return request;
112113
}

lib/csrOrder.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
var Client = require("./client");
2+
var CSR_ORDER_PATH = "csrs";
3+
4+
function CsrOrder() {
5+
}
6+
7+
CsrOrder.get = function(client, id, callback){
8+
if(arguments.length === 2){
9+
callback = id;
10+
id = client;
11+
client = new Client();
12+
}
13+
client.makeRequest("get", client.concatAccountPath(CSR_ORDER_PATH), null, id, function(err,res){
14+
if(err){
15+
return callback(err);
16+
}
17+
var item = res;
18+
item.client = client;
19+
item.__proto__ = CsrOrder.prototype;
20+
callback(null, item);
21+
});
22+
};
23+
24+
// Coming soon
25+
// CsrOrder.list = function(client,query, callback){
26+
// if(arguments.length === 2){
27+
// callback = query;
28+
// query = client;
29+
// client = new Client();
30+
// }
31+
// client.makeRequest("get", client.concatAccountPath(CSR_ORDER_PATH), query, function(err,res){
32+
// if(err){
33+
// return callback(err);
34+
// }
35+
// callback(null, res);
36+
// });
37+
// };
38+
39+
CsrOrder.create = function(client, data, callback){
40+
if(arguments.length === 2){
41+
callback = data;
42+
data = client;
43+
client = new Client();
44+
}
45+
client.makeRequest("post", client.concatAccountPath(CSR_ORDER_PATH), {Csr: data}, function(err, item){
46+
if(err){
47+
return callback(err, item);
48+
}
49+
item.client = client;
50+
item.__proto__ = CsrOrder.prototype;
51+
callback(null, item);
52+
});
53+
};
54+
55+
CsrOrder.prototype.update = function(data, callback){
56+
this.client.makeRequest("put", this.client.concatAccountPath(CSR_ORDER_PATH) + "/" + this.id, {Csr: data}, callback);
57+
};
58+
59+
CsrOrder.prototype.getNotes = function(callback){
60+
this.client.makeRequest("get", this.client.concatAccountPath(CSR_ORDER_PATH) + "/" + this.id + "/notes", function(err, notes){
61+
if(err){
62+
return callback(err);
63+
}
64+
var items = notes.note;
65+
callback(null, Array.isArray(items)?items:[items]);
66+
});
67+
};
68+
69+
CsrOrder.prototype.addNote = function(note, callback){
70+
var self = this;
71+
var request = this.client.createPostRequest(this.client.concatAccountPath(CSR_ORDER_PATH + "/" + this.id + "/notes"), {note: note});
72+
request.buffer().then(res =>{
73+
if(res.ok && res.headers.location){
74+
Client.getIdFromLocationHeader(res.headers.location, function(err, id){
75+
if(err){
76+
return callback(err);
77+
}
78+
self.getNotes(function(err, notes){
79+
if(err){
80+
return callback(err);
81+
}
82+
callback(null, notes.filter(function(n){ return n.id == id;})[0]);
83+
});
84+
});
85+
}
86+
else{
87+
self.client.checkResponse(res, callback);
88+
}
89+
});
90+
};
91+
92+
module.exports = CsrOrder;

lib/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ module.exports = {
2727
Dlda: require("./dlda"),
2828
ImportTnChecker: require("./importTnChecker"),
2929
ImportTnOrder: require("./importTnOrder"),
30-
RemoveImportedTnOrder: require("./removeImportedTnOrder")
30+
RemoveImportedTnOrder: require("./removeImportedTnOrder"),
31+
CsrOrder: require("./CsrOrder")
3132
};
3233

3334
for (const property in module.exports) {

test/csrOrder.js

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
var lib = require("../");
2+
var helper = require("./helper");
3+
var nock = require("nock");
4+
var CsrOrder = lib.CsrOrder;
5+
6+
describe("Csr", function(){
7+
before(function(){
8+
nock.disableNetConnect();
9+
helper.setupGlobalOptions();
10+
});
11+
after(function(){
12+
nock.cleanAll();
13+
nock.enableNetConnect();
14+
});
15+
// Coming Soon
16+
// describe("#list", function(){
17+
// it("should return a list of Csrs ", function(done){
18+
// helper.nock().get("/accounts/FakeAccountId/csrs").reply(200, helper.xml.csrOrders, {"Content-Type":"application/xml"});
19+
// CsrOrder.list(helper.createClient(), {}, function(err,list){
20+
// if(err){
21+
// return done(err);
22+
// }
23+
// list.should.be.ok;
24+
// done();
25+
// });
26+
// });
27+
// });
28+
describe("#get", function(){
29+
it("should get Csr successfully", function(done){
30+
helper.nock().get("/accounts/FakeAccountId/csrs/1").reply(200, helper.xml.csrOrder, {"Content-Type": "application/xml"});
31+
CsrOrder.get(helper.createClient(), "1", function(err, csrOrder){
32+
if(err){
33+
return done(err);
34+
}
35+
csrOrder.should.be.ok;
36+
csrOrder.csrData.serviceAddress.unparsedAddress.should.eql("1234 Main ST Durham NC 27707");
37+
csrOrder.csrData.workingTelephoneNumber.should.eql("9198675309");
38+
done();
39+
});
40+
});
41+
});
42+
describe("#create", function(){
43+
it("should create Csr successfully", function(done){
44+
var data = {
45+
customerOrderId: "MyId5",
46+
WorkingOrBillingTelephoneNumber:"9198675309",
47+
accountNumber:"123463",
48+
endUserPIN:"1231"
49+
};
50+
helper.nock().post("/accounts/FakeAccountId/csrs", helper.buildXml({Csr: data})).reply(201, helper.xml.csrResponse, {"Location": "/accounts/FakeAccountId/csrs/1"});
51+
CsrOrder.create(helper.createClient(), data, function(err, csrOrder){
52+
if(err){
53+
return done(err);
54+
}
55+
csrOrder.should.be.ok;
56+
csrOrder.orderId.should.eql("218a295f-4f8a-4d1a-ba55-3e0aac6207cb");
57+
done();
58+
});
59+
});
60+
});
61+
describe("#update", function(){
62+
it("should update successfully", function(done){
63+
var data = {endUserPIN:"1234"};
64+
helper.nock().put("/accounts/FakeAccountId/csrs/1", helper.buildXml({Csr: data})).reply(200);
65+
var order = new CsrOrder();
66+
order.id = "1";
67+
order.client = helper.createClient();
68+
order.endUserPIN = "1234";
69+
order.update(data,done);
70+
})
71+
});
72+
describe("#getNotes", function(){
73+
it("should return notes", function(done){
74+
helper.nock().get("/accounts/FakeAccountId/csrs/1/notes").reply(200, helper.xml.notes, {"Content-Type": "application/xml"});
75+
var order = new CsrOrder();
76+
order.id = 1;
77+
order.client = helper.createClient();
78+
order.getNotes(function(err, notes){
79+
if(err){
80+
return done(err);
81+
}
82+
notes.length.should.equal(2);
83+
notes[0].id.should.equal(11299);
84+
notes[0].userId.should.equal("customer");
85+
notes[0].description.should.equal("Test");
86+
done();
87+
});
88+
});
89+
it("should fail for error status code", function(done){
90+
helper.nock().get("/accounts/FakeAccountId/orders/1/notes").reply(400);
91+
var order = new CsrOrder();
92+
order.id = 1;
93+
order.client = helper.createClient();
94+
order.getNotes(function(err, notes){
95+
if(err){
96+
return done();
97+
}
98+
done(new Error("An error is estimated"));
99+
});
100+
});
101+
});
102+
describe("#addNote", function(){
103+
it("should add new note", function(done){
104+
var data = {userId: "customer", description: "Test"};
105+
helper.nock().post("/accounts/FakeAccountId/csrs/1/notes", helper.buildXml({note: data})).reply(200, "", {"Location": "/accounts/FakeAccountId/csrs/1/notes/11299"});
106+
helper.nock().get("/accounts/FakeAccountId/csrs/1/notes").reply(200, helper.xml.notes, {"Content-Type": "application/xml"});
107+
var order = new CsrOrder();
108+
order.id = 1;
109+
order.client = helper.createClient();
110+
order.addNote(data, function(err, note){
111+
if(err){
112+
return done(err);
113+
}
114+
note.id.should.equal(11299);
115+
note.userId.should.equal("customer");
116+
note.description.should.equal("Test");
117+
done();
118+
});
119+
});
120+
});
121+
});

test/xml.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,7 @@
5353
"removeImportedTnOrderList": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><RemoveImportedTnOrders><TotalCount>2</TotalCount><RemoveImportedTnOrderSummary><accountId>9900778</accountId><CountOfTNs>2</CountOfTNs><CustomerOrderId>custom string</CustomerOrderId><userId>jmulford-api</userId><lastModifiedDate>2020-02-05T15:33:52.540Z</lastModifiedDate><OrderDate>2020-02-05T15:33:52.517Z</OrderDate><OrderType>remove_imported_tn_orders</OrderType><OrderStatus>FAILED</OrderStatus><OrderId>6f220cc3-5cca-49a5-80ca-612e7d689ab1</OrderId></RemoveImportedTnOrderSummary><RemoveImportedTnOrderSummary><accountId>9900778</accountId><CountOfTNs>1</CountOfTNs><userId>dtolb</userId><lastModifiedDate>2020-02-04T18:01:54.786Z</lastModifiedDate><OrderDate>2020-02-04T18:01:54.434Z</OrderDate><OrderType>remove_imported_tn_orders</OrderType><OrderStatus>COMPLETE</OrderStatus><OrderId>7a992c85-d164-46df-97c4-dac6030ec952</OrderId></RemoveImportedTnOrderSummary></RemoveImportedTnOrders>",
5454
"removeImportedTnOrder": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><RemoveImportedTnOrder><OrderCreateDate>2020-02-04T18:01:54.434Z</OrderCreateDate><AccountId>9900778</AccountId><CreatedByUser>dtolb</CreatedByUser><OrderId>7a992c85-d164-46df-97c4-dac6030ec952</OrderId><LastModifiedDate>2020-02-04T18:01:54.786Z</LastModifiedDate><TelephoneNumbers><TelephoneNumber>9102402158</TelephoneNumber></TelephoneNumbers><ProcessingStatus>COMPLETE</ProcessingStatus><Errors/></RemoveImportedTnOrder>",
5555
"removeImportedTnOrderHistory": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><OrderHistoryWrapper><OrderHistory><OrderDate>2020-02-04T18:01:54.434Z</OrderDate><Note>Remove Imported TN order has been received by the system.</Note><Author>dtolb</Author><Status>received</Status></OrderHistory><OrderHistory><OrderDate>2020-02-04T18:01:54.502Z</OrderDate><Note>Remove Imported TN order processing has started.</Note><Author>dtolb</Author><Status>processing</Status></OrderHistory><OrderHistory><OrderDate>2020-02-04T18:01:54.573Z</OrderDate><Note>Remove Imported TN order processing has started.</Note><Author>dtolb</Author><Status>processing</Status></OrderHistory><OrderHistory><OrderDate>2020-02-04T18:01:54.786Z</OrderDate><Note>Remove Imported TN order is complete.</Note><Author>dtolb</Author><Status>complete</Status></OrderHistory></OrderHistoryWrapper>",
56-
"removeImportedTnOrderResponse": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><RemoveImportedTnOrdersResponse><RemoveImportedTnOrder><CustomerOrderId>ICPA123ABC</CustomerOrderId><OrderCreateDate>2020-02-11T18:18:48.794Z</OrderCreateDate><AccountId>9900778</AccountId><CreatedByUser>dtolb-API</CreatedByUser><OrderId>7527b3fc-3f72-4d0a-acae-ccc7e77857ed</OrderId><LastModifiedDate>2020-02-11T18:18:48.794Z</LastModifiedDate><TelephoneNumbers><TelephoneNumber>9199918388</TelephoneNumber><TelephoneNumber>4158714245</TelephoneNumber><TelephoneNumber>4352154439</TelephoneNumber><TelephoneNumber>4352154466</TelephoneNumber></TelephoneNumbers><ProcessingStatus>RECEIVED</ProcessingStatus><Errors/></RemoveImportedTnOrder></RemoveImportedTnOrdersResponse>"
56+
"removeImportedTnOrderResponse": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><RemoveImportedTnOrdersResponse><RemoveImportedTnOrder><CustomerOrderId>ICPA123ABC</CustomerOrderId><OrderCreateDate>2020-02-11T18:18:48.794Z</OrderCreateDate><AccountId>9900778</AccountId><CreatedByUser>dtolb-API</CreatedByUser><OrderId>7527b3fc-3f72-4d0a-acae-ccc7e77857ed</OrderId><LastModifiedDate>2020-02-11T18:18:48.794Z</LastModifiedDate><TelephoneNumbers><TelephoneNumber>9199918388</TelephoneNumber><TelephoneNumber>4158714245</TelephoneNumber><TelephoneNumber>4352154439</TelephoneNumber><TelephoneNumber>4352154466</TelephoneNumber></TelephoneNumbers><ProcessingStatus>RECEIVED</ProcessingStatus><Errors/></RemoveImportedTnOrder></RemoveImportedTnOrdersResponse>",
57+
"csrOrder": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><CsrResponse><LastModifiedBy>user</LastModifiedBy><OrderCreateDate>2020-02-25T15:39:22.079Z</OrderCreateDate><AccountId>9999999</AccountId><OrderId>20ba7d26-7fa0-4716-ab45-6c8e07d37862</OrderId><LastModifiedDate>2020-02-25T15:39:41.166Z</LastModifiedDate><Status>COMPLETE</Status><CsrData><CustomerName>House of Mouse</CustomerName><ServiceAddress><UnparsedAddress>1234 Main ST Durham NC 27707</UnparsedAddress><HouseNumber>1234</HouseNumber><StreetName>Main</StreetName><StreetSuffix>ST</StreetSuffix><City>Durham</City><State>NC</State><Zip>27707</Zip></ServiceAddress><WorkingTelephoneNumber>9198675309</WorkingTelephoneNumber><WorkingTelephoneNumbersOnAccount><TelephoneNumber>9198675309</TelephoneNumber></WorkingTelephoneNumbersOnAccount></CsrData></CsrResponse>",
58+
"csrResponse": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><CsrResponse><OrderId>218a295f-4f8a-4d1a-ba55-3e0aac6207cb</OrderId><Status>RECEIVED</Status></CsrResponse>"
5759
}

0 commit comments

Comments
 (0)