UNPKG

3.46 kBJavaScriptView Raw
1require("./common");
2var LastFmRequest = require("lastfm/lastfm-request");
3var fakes = require("./fakes");
4
5(function() {
6 describe("a LastFm request")
7
8 var host, connection, url, gently, request;
9
10 before(function() {
11 host = "www.example.com";
12 connection = new fakes.Client(80, host);
13 url = "/resource";
14 request = new fakes.ClientRequest();
15 gently = new Gently();
16 });
17
18 it("creates a get request", function() {
19 gently.expect(connection, "request", function(method, requestUrl, options) {
20 assert.equal("GET", method);
21 assert.equal(url, requestUrl);
22 assert.equal(host, options.host);
23 return request;
24 });
25 var lastfmRequest = new LastFmRequest(connection, url);
26 });
27
28 it("ends the request", function() {
29 gently.expect(connection, "request", function(method, requestUrl, options) {
30 return request;
31 });
32 gently.expect(request, "end");
33 var lastfmRequest = new LastFmRequest(connection, url);
34 });
35
36 it("emits data received when response is complete", function() {
37 var chunkOne = "test";
38 var chunkTwo = "data";
39 gently.expect(connection, "request", function(method, requestUrl, options) {
40 return request;
41 });
42 var lastfmRequest = new LastFmRequest(connection, url);
43 gently.expect(lastfmRequest, "emit", function(event, data) {
44 assert.equal("success", event);
45 assert.equal(chunkOne + chunkTwo, data);
46 });
47 var response = new fakes.ClientResponse();
48 request.emit("response", response);
49 response.emit("data", chunkOne);
50 response.emit("data", chunkTwo);
51 response.emit("end");
52 });
53
54 it("bubbles up connection errors", function() {
55 var message = "Bubbled error";
56 gently.expect(connection, "request", function(method, requestUrl, options) {
57 return request;
58 });
59 var lastfmRequest = new LastFmRequest(connection, url);
60 gently.expect(lastfmRequest, "emit", function(event, error) {
61 assert.equal("error", event);
62 assert.equal(message, error.message);
63 });
64 connection.emit("error", new Error(message));
65 });
66})();
67
68(function() {
69 describe("a LastFm request with a body")
70
71 var host, connection, url, gently, request, body;
72
73 before(function() {
74 host = "www.example.com";
75 connection = new fakes.Client(80, host);
76 url = "/resource";
77 request = new fakes.ClientRequest();
78 gently = new Gently();
79 body = "foo=bar";
80 });
81
82 it("creates a post request", function() {
83 gently.expect(connection, "request", function(method, requestUrl, options) {
84 assert.equal("POST", method);
85 assert.equal(url, requestUrl);
86 assert.equal(host, options.host);
87 return request;
88 });
89 var lastFmRequest = new LastFmRequest(connection, url, body);
90 });
91
92 it("includes additional headers", function() {
93 gently.expect(connection, "request", function(method, requestUrl, options) {
94 assert.equal(body.length, options["Content-Length"]);
95 assert.equal("application/x-www-form-urlencoded", options["Content-Type"]);
96 return request;
97 });
98 var lastFmRequest = new LastFmRequest(connection, url, body);
99 });
100
101 it("writes body to request", function() {
102 gently.expect(connection, "request", function() {
103 return request;
104 });
105 gently.expect(request, "write", function(data) {
106 assert.equal(body, data);
107 });
108 var lastFmRequest = new LastFmRequest(connection, url, body);
109 });
110})();