Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Jun 4, 2024. It is now read-only.

Commit 2289034

Browse files
Merge pull request #32 from plotly/utf-8
Handle UTF-8 encoding
2 parents 2594430 + 03a4a4f commit 2289034

File tree

2 files changed

+175
-156
lines changed

2 files changed

+175
-156
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Plotly.prototype.plot = function(data, graphOptions, callback) {
5353
}
5454

5555
// trim off last ambersand
56-
urlencoded = urlencoded.substring(0, urlencoded.length - 1);
56+
urlencoded = new Buffer(urlencoded.substring(0, urlencoded.length - 1), 'utf8');
5757

5858
var options = {
5959
host: self.host,

test/test.js

Lines changed: 174 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -3,207 +3,226 @@
33
var test = require('tape');
44

55
test('makes a rest call', function (t) {
6-
t.plan(2);
6+
t.plan(2);
77

8-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
9-
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
10-
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
8+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
9+
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
10+
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
1111

12-
plotly.plot(data, layout, function (err, msg) {
13-
t.isEqual(msg.url, 'https://plot.ly/~node-test-account/0', 'url matches');
14-
t.notOk(err ,'no error');
15-
t.end();
16-
});
12+
plotly.plot(data, layout, function (err, msg) {
13+
t.isEqual(msg.url, 'https://plot.ly/~node-test-account/0', 'url matches');
14+
t.notOk(err ,'no error');
15+
t.end();
16+
});
1717
});
1818

1919
test('makes a rest call', function (t) {
20-
t.plan(2);
21-
22-
var options = {
23-
username: 'node-test-account',
24-
apiKey: 'tpmz9ye8hg',
25-
host: 'plot.ly',
26-
port: 443
27-
};
28-
29-
var plotly = require('../index')(options);
30-
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
31-
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
32-
33-
plotly.plot(data, layout, function (err, msg) {
34-
t.isEqual(msg.url, 'https://plot.ly/~node-test-account/0', 'url matches');
35-
t.notOk(err ,'no error');
36-
t.end();
37-
});
20+
t.plan(2);
21+
22+
var options = {
23+
username: 'node-test-account',
24+
apiKey: 'tpmz9ye8hg',
25+
host: 'plot.ly',
26+
port: 443
27+
};
28+
29+
var plotly = require('../index')(options);
30+
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
31+
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
32+
33+
plotly.plot(data, layout, function (err, msg) {
34+
t.isEqual(msg.url, 'https://plot.ly/~node-test-account/0', 'url matches');
35+
t.notOk(err ,'no error');
36+
t.end();
37+
});
3838
});
3939

4040
test('makes a rest call', function (t) {
41-
t.plan(2);
42-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
43-
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
44-
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
45-
46-
plotly.plot(data, layout, function (err, msg) {
47-
t.isEqual(msg.url, 'https://plot.ly/~node-test-account/0', 'url matches');
48-
t.notOk(err, 'no error');
49-
t.end();
50-
});
41+
t.plan(2);
42+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
43+
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
44+
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
45+
46+
plotly.plot(data, layout, function (err, msg) {
47+
t.isEqual(msg.url, 'https://plot.ly/~node-test-account/0', 'url matches');
48+
t.notOk(err, 'no error');
49+
t.end();
50+
});
5151
});
5252

5353
test('plot with incorrect userdata and return error', function (t) {
54-
t.plan(1);
54+
t.plan(1);
5555

56-
var plotly = require('../index')('node-test-accountasdfadsgaghaha', 'tpmz9ye8hg');
57-
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
58-
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
56+
var plotly = require('../index')('node-test-accountasdfadsgaghaha', 'tpmz9ye8hg');
57+
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
58+
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
5959

60-
plotly.plot(data, layout, function (err, msg) {
60+
plotly.plot(data, layout, function (err, msg) {
6161

62-
var errMessage = msg.message.split(',')[0];
62+
var errMessage = msg.message.split(',')[0];
6363

64-
t.isEqual(errMessage, 'Aw', 'incorrect user info returns error... not properly though.');
65-
t.end();
66-
});
64+
t.isEqual(errMessage, 'Aw', 'incorrect user info returns error... not properly though.');
65+
t.end();
66+
});
6767
});
6868

6969
test('makes a rest call with host foo', function (t) {
70-
t.plan(1);
71-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
72-
plotly.host = 'foo';
73-
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
74-
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
75-
76-
plotly.plot(data, layout, function (err) {
77-
t.ok(err, 'error received as host was set to "foo"');
78-
t.end();
79-
});
70+
t.plan(1);
71+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
72+
plotly.host = 'foo';
73+
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
74+
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
75+
76+
plotly.plot(data, layout, function (err) {
77+
t.ok(err, 'error received as host was set to "foo"');
78+
t.end();
79+
});
8080
});
8181

8282
test('makes a rest call with no callback', function (t) {
83-
t.plan(1);
84-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
85-
plotly.host = 'foo';
86-
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
87-
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
83+
t.plan(1);
84+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
85+
plotly.host = 'foo';
86+
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
87+
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
8888

89-
plotly.plot(data, layout);
90-
t.ok(true);
91-
t.end();
89+
plotly.plot(data, layout);
90+
t.ok(true);
91+
t.end();
9292

9393
});
9494

9595
test('makes a rest call with object for data', function (t) {
96-
t.plan(1);
97-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
98-
plotly.host = 'foo';
99-
var data = {x:[0,1,2], y:[3,2,1], type: 'bar'};
100-
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
96+
t.plan(1);
97+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
98+
plotly.host = 'foo';
99+
var data = {x:[0,1,2], y:[3,2,1], type: 'bar'};
100+
var layout = {fileopt : 'overwrite', filename : 'nodenodenodetest'};
101101

102-
plotly.plot(data, layout);
103-
t.ok(true);
104-
t.end();
102+
plotly.plot(data, layout);
103+
t.ok(true);
104+
t.end();
105105

106106
});
107107

108108
test('getFigure', function (t) {
109-
t.plan(1);
110-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
111-
plotly.getFigure('node-test-account', '0', function (err, figure) {
112-
t.ok(figure);
113-
t.end();
114-
});
109+
t.plan(1);
110+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
111+
plotly.getFigure('node-test-account', '0', function (err, figure) {
112+
t.ok(figure);
113+
t.end();
114+
});
115115

116116
});
117117

118118
test('getFigure error', function (t) {
119-
t.plan(1);
120-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
121-
plotly.getFigure('node-test-account', '99', function (err) {
119+
t.plan(1);
120+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
121+
plotly.getFigure('node-test-account', '99', function (err) {
122122

123-
t.ok(err);
124-
t.end();
125-
});
123+
t.ok(err);
124+
t.end();
125+
});
126126
});
127127

128128
test('getImage, good and error', function (t) {
129-
t.plan(2);
130-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
131-
132-
var trace1 = {
133-
x: [1, 2, 3, 4],
134-
y: [10, 15, 13, 17],
135-
type: 'scatter'
136-
};
137-
138-
var trace2 = {
139-
x: [1, 2, 3, 4],
140-
y: [16, 5, 11, 9],
141-
type: 'scatter'
142-
};
143-
144-
var figure = {
145-
'data': [trace1, trace2]
146-
};
147-
148-
plotly.getImage(figure, {}, function (err, imageData) {
149-
t.notOk(err);
150-
t.ok(imageData);
151-
t.end();
152-
});
129+
t.plan(2);
130+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
131+
132+
var trace1 = {
133+
x: [1, 2, 3, 4],
134+
y: [10, 15, 13, 17],
135+
type: 'scatter'
136+
};
137+
138+
var trace2 = {
139+
x: [1, 2, 3, 4],
140+
y: [16, 5, 11, 9],
141+
type: 'scatter'
142+
};
143+
144+
var figure = {
145+
'data': [trace1, trace2]
146+
};
147+
148+
plotly.getImage(figure, {}, function (err, imageData) {
149+
t.notOk(err);
150+
t.ok(imageData);
151+
t.end();
152+
});
153153
});
154154

155155
test('getImage, imageserver error', function (t) {
156-
t.plan(2);
157-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
158-
159-
var trace1 = {
160-
x: [1, 2, 3, 4],
161-
y: [10, 15, 13, 17],
162-
type: 'scatter'
163-
};
164-
165-
var trace2 = {
166-
x: [1, 2, 3, 4],
167-
y: [16, 5, 11, 9],
168-
type: 'scatter'
169-
};
170-
171-
var data = [trace1, trace2];
172-
plotly.getImage(data, 'img', function (err, imageData) {
173-
t.ok(err);
174-
t.notOk(imageData);
175-
t.end();
176-
});
156+
t.plan(2);
157+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
158+
159+
var trace1 = {
160+
x: [1, 2, 3, 4],
161+
y: [10, 15, 13, 17],
162+
type: 'scatter'
163+
};
164+
165+
var trace2 = {
166+
x: [1, 2, 3, 4],
167+
y: [16, 5, 11, 9],
168+
type: 'scatter'
169+
};
170+
171+
var data = [trace1, trace2];
172+
plotly.getImage(data, 'img', function (err, imageData) {
173+
t.ok(err);
174+
t.notOk(imageData);
175+
t.end();
176+
});
177177

178178
});
179179

180+
test('creates a plot with UTF chars in filename', function (t) {
181+
t.plan(1);
182+
183+
var options = {
184+
username: 'node-test-account',
185+
apiKey: 'tpmz9ye8hg',
186+
host: 'plot.ly',
187+
port: 443
188+
};
189+
190+
var plotly = require('../index')(options);
191+
var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
192+
var layout = {fileopt : 'overwrite', filename : 'üüüü'};
180193

194+
plotly.plot(data, layout, function (err, msg) {
195+
t.notOk(err ,'no error');
196+
t.end();
197+
});
198+
199+
});
181200

182201
test('streams some data', function (t) {
183-
t.plan(1);
184-
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
185-
var initdata = [{x:[], y:[], stream:{token:'i9zxn8goas', maxpoints:200}}];
186-
var initlayout = {fileopt : 'extend', filename : 'nodenodenode-test-stream'};
187-
188-
plotly.plot(initdata, initlayout, function (err) {
189-
if (err) return console.log(err);
190-
191-
var streamObject = JSON.stringify({ x : 1, y : 1 });
192-
193-
var stream = plotly.stream({
194-
token: 'i9zxn8goas',
195-
host: undefined,
196-
port: null
197-
});
198-
199-
setInterval(function () {
200-
stream.write(streamObject+'\n');
201-
}, 500);
202-
203-
setTimeout(function () {
204-
t.ok(true, 'no errors');
205-
t.end();
206-
process.exit(0);
207-
}, 5000);
208-
});
202+
t.plan(1);
203+
var plotly = require('../index')('node-test-account', 'tpmz9ye8hg');
204+
var initdata = [{x:[], y:[], stream:{token:'i9zxn8goas', maxpoints:200}}];
205+
var initlayout = {fileopt : 'extend', filename : 'nodenodenode-test-stream'};
206+
207+
plotly.plot(initdata, initlayout, function (err) {
208+
if (err) return console.log(err);
209+
210+
var streamObject = JSON.stringify({ x : 1, y : 1 });
211+
212+
var stream = plotly.stream({
213+
token: 'i9zxn8goas',
214+
host: undefined,
215+
port: null
216+
});
217+
218+
setInterval(function () {
219+
stream.write(streamObject+'\n');
220+
}, 500);
221+
222+
setTimeout(function () {
223+
t.ok(true, 'no errors');
224+
t.end();
225+
process.exit(0);
226+
}, 5000);
227+
});
209228
});

0 commit comments

Comments
 (0)