Skip to content

Commit ce76e07

Browse files
authored
Merge pull request #26 from somramnani/tests/superHeroAPI
chore: add test for superHeroAPI route
2 parents cbd4af3 + 291161f commit ce76e07

File tree

11 files changed

+201
-171
lines changed

11 files changed

+201
-171
lines changed

api/tests/hello.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const app = require("../index");
44
describe("GET /hello", () => {
55
it('should return a JSON response with message "hello"', async () => {
66
const response = await request(app).get("/hello");
7+
78
expect(response.status).toBe(200);
89
expect(response.body).toEqual({ message: "hello" });
910
});

api/tests/superHeroAPI.test.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const request = require("supertest");
2+
const axios = require("axios");
3+
jest.mock("axios");
4+
const app = require("../index");
5+
6+
describe("GET /super-hero-api/:data", () => {
7+
it("should return superhero data when the external API responds successfully", async () => {
8+
const mockResponse = {
9+
data: {
10+
results: [
11+
{
12+
id: "620",
13+
name: "Spider-Man",
14+
powerstats: {
15+
intelligence: "90",
16+
strength: "55",
17+
speed: "67",
18+
durability: "75",
19+
power: "74",
20+
combat: "85",
21+
},
22+
},
23+
],
24+
},
25+
};
26+
27+
axios.mockResolvedValue(mockResponse);
28+
29+
const response = await request(app).get("/super-hero-api/Spider-Man");
30+
31+
expect(response.status).toBe(200);
32+
expect(response.body).toEqual(mockResponse.data);
33+
});
34+
});

coverage/clover.xml

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,49 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<coverage generated="1732168823541" clover="3.2.0">
3-
<project timestamp="1732168823541" name="All files">
4-
<metrics statements="30" coveredstatements="25" conditionals="4" coveredconditionals="3" methods="6" coveredmethods="2" elements="40" coveredelements="30" complexity="0" loc="30" ncloc="30" packages="2" files="3" classes="3"/>
2+
<coverage generated="1732347860732" clover="3.2.0">
3+
<project timestamp="1732347860732" name="All files">
4+
<metrics statements="29" coveredstatements="26" conditionals="4" coveredconditionals="3" methods="6" coveredmethods="4" elements="39" coveredelements="33" complexity="0" loc="29" ncloc="29" packages="2" files="3" classes="3"/>
55
<package name="api">
6-
<metrics statements="18" coveredstatements="16" conditionals="4" coveredconditionals="3" methods="2" coveredmethods="1"/>
6+
<metrics statements="17" coveredstatements="15" conditionals="4" coveredconditionals="3" methods="2" coveredmethods="1"/>
77
<file name="index.js" path="/Users/som_ramnani/Projects/api-proxy-server/api/index.js">
8-
<metrics statements="18" coveredstatements="16" conditionals="4" coveredconditionals="3" methods="2" coveredmethods="1"/>
9-
<line num="1" count="2" type="stmt"/>
10-
<line num="3" count="2" type="stmt"/>
11-
<line num="4" count="2" type="stmt"/>
12-
<line num="5" count="2" type="stmt"/>
13-
<line num="6" count="2" type="stmt"/>
14-
<line num="7" count="2" type="stmt"/>
15-
<line num="9" count="2" type="stmt"/>
16-
<line num="11" count="2" type="stmt"/>
17-
<line num="17" count="2" type="stmt"/>
18-
<line num="19" count="2" type="stmt"/>
19-
<line num="20" count="2" type="stmt"/>
20-
<line num="22" count="2" type="stmt"/>
21-
<line num="23" count="1" type="stmt"/>
22-
<line num="30" count="2" type="cond" truecount="2" falsecount="0"/>
23-
<line num="32" count="2" type="cond" truecount="1" falsecount="1"/>
8+
<metrics statements="17" coveredstatements="15" conditionals="4" coveredconditionals="3" methods="2" coveredmethods="1"/>
9+
<line num="1" count="3" type="stmt"/>
10+
<line num="3" count="3" type="stmt"/>
11+
<line num="4" count="3" type="stmt"/>
12+
<line num="5" count="3" type="stmt"/>
13+
<line num="6" count="3" type="stmt"/>
14+
<line num="8" count="3" type="stmt"/>
15+
<line num="10" count="3" type="stmt"/>
16+
<line num="16" count="3" type="stmt"/>
17+
<line num="18" count="3" type="stmt"/>
18+
<line num="19" count="3" type="stmt"/>
19+
<line num="21" count="3" type="stmt"/>
20+
<line num="22" count="1" type="stmt"/>
21+
<line num="29" count="3" type="cond" truecount="2" falsecount="0"/>
22+
<line num="31" count="3" type="cond" truecount="1" falsecount="1"/>
23+
<line num="32" count="0" type="stmt"/>
2424
<line num="33" count="0" type="stmt"/>
25-
<line num="34" count="0" type="stmt"/>
26-
<line num="38" count="2" type="stmt"/>
25+
<line num="37" count="3" type="stmt"/>
2726
</file>
2827
</package>
2928
<package name="api.routes">
30-
<metrics statements="12" coveredstatements="9" conditionals="0" coveredconditionals="0" methods="4" coveredmethods="1"/>
29+
<metrics statements="12" coveredstatements="11" conditionals="0" coveredconditionals="0" methods="4" coveredmethods="3"/>
3130
<file name="hello.js" path="/Users/som_ramnani/Projects/api-proxy-server/api/routes/hello.js">
3231
<metrics statements="4" coveredstatements="4" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
33-
<line num="1" count="2" type="stmt"/>
34-
<line num="2" count="2" type="stmt"/>
35-
<line num="4" count="2" type="stmt"/>
36-
<line num="6" count="2" type="stmt"/>
32+
<line num="1" count="3" type="stmt"/>
33+
<line num="2" count="3" type="stmt"/>
34+
<line num="4" count="3" type="stmt"/>
35+
<line num="6" count="3" type="stmt"/>
3736
</file>
3837
<file name="superHeroAPI.js" path="/Users/som_ramnani/Projects/api-proxy-server/api/routes/superHeroAPI.js">
39-
<metrics statements="8" coveredstatements="5" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="0"/>
40-
<line num="1" count="2" type="stmt"/>
41-
<line num="2" count="2" type="stmt"/>
42-
<line num="3" count="2" type="stmt"/>
43-
<line num="5" count="2" type="stmt"/>
44-
<line num="6" count="0" type="stmt"/>
45-
<line num="11" count="0" type="stmt"/>
38+
<metrics statements="8" coveredstatements="7" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="2"/>
39+
<line num="1" count="3" type="stmt"/>
40+
<line num="2" count="3" type="stmt"/>
41+
<line num="3" count="3" type="stmt"/>
42+
<line num="5" count="3" type="stmt"/>
43+
<line num="6" count="1" type="stmt"/>
44+
<line num="11" count="1" type="stmt"/>
4645
<line num="14" count="0" type="stmt"/>
47-
<line num="18" count="2" type="stmt"/>
46+
<line num="18" count="3" type="stmt"/>
4847
</file>
4948
</package>
5049
</project>

coverage/coverage-final.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{"/Users/som_ramnani/Projects/api-proxy-server/api/index.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/index.js","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},"1":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"2":{"start":{"line":4,"column":13},"end":{"line":4,"column":28}},"3":{"start":{"line":5,"column":14},"end":{"line":5,"column":30}},"4":{"start":{"line":6,"column":26},"end":{"line":6,"column":58}},"5":{"start":{"line":7,"column":24},"end":{"line":7,"column":49}},"6":{"start":{"line":9,"column":12},"end":{"line":9,"column":21}},"7":{"start":{"line":11,"column":20},"end":{"line":15,"column":1}},"8":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"9":{"start":{"line":19,"column":0},"end":{"line":19,"column":46}},"10":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"11":{"start":{"line":22,"column":0},"end":{"line":28,"column":3}},"12":{"start":{"line":23,"column":2},"end":{"line":27,"column":5}},"13":{"start":{"line":30,"column":13},"end":{"line":30,"column":37}},"14":{"start":{"line":32,"column":0},"end":{"line":36,"column":1}},"15":{"start":{"line":33,"column":2},"end":{"line":35,"column":5}},"16":{"start":{"line":34,"column":4},"end":{"line":34,"column":49}},"17":{"start":{"line":38,"column":0},"end":{"line":38,"column":21}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":22,"column":13},"end":{"line":22,"column":14}},"loc":{"start":{"line":22,"column":27},"end":{"line":28,"column":1}},"line":22},"1":{"name":"(anonymous_1)","decl":{"start":{"line":33,"column":19},"end":{"line":33,"column":20}},"loc":{"start":{"line":33,"column":25},"end":{"line":35,"column":3}},"line":33}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":13},"end":{"line":30,"column":37}},"type":"binary-expr","locations":[{"start":{"line":30,"column":13},"end":{"line":30,"column":29}},{"start":{"line":30,"column":33},"end":{"line":30,"column":37}}],"line":30},"1":{"loc":{"start":{"line":32,"column":0},"end":{"line":36,"column":1}},"type":"if","locations":[{"start":{"line":32,"column":0},"end":{"line":36,"column":1}},{"start":{},"end":{}}],"line":32}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":1,"13":2,"14":2,"15":0,"16":0,"17":2},"f":{"0":1,"1":0},"b":{"0":[2,2],"1":[0,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4569801c76b1c186e1add62c63f3933d6289e677"}
2-
,"/Users/som_ramnani/Projects/api-proxy-server/api/routes/hello.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/routes/hello.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":15},"end":{"line":2,"column":31}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":62}},"3":{"start":{"line":4,"column":30},"end":{"line":4,"column":60}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":17}},"loc":{"start":{"line":4,"column":30},"end":{"line":4,"column":60}},"line":4}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":1,"4":2},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eebe1ea5ad45c88429d33abb13b0c376403ca861"}
3-
,"/Users/som_ramnani/Projects/api-proxy-server/api/routes/superHeroAPI.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/routes/superHeroAPI.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":14},"end":{"line":2,"column":30}},"2":{"start":{"line":3,"column":15},"end":{"line":3,"column":31}},"3":{"start":{"line":5,"column":0},"end":{"line":16,"column":3}},"4":{"start":{"line":6,"column":2},"end":{"line":15,"column":7}},"5":{"start":{"line":11,"column":6},"end":{"line":11,"column":37}},"6":{"start":{"line":14,"column":6},"end":{"line":14,"column":32}},"7":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":21},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":41},"end":{"line":16,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":10},"end":{"line":10,"column":11}},"loc":{"start":{"line":10,"column":30},"end":{"line":12,"column":5}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":11},"end":{"line":13,"column":12}},"loc":{"start":{"line":13,"column":20},"end":{"line":15,"column":5}},"line":13}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":0,"5":0,"6":0,"7":2},"f":{"0":0,"1":0,"2":0},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b8fb18229cabf2caa93bebb7d66e8033fd7bec99"}
1+
{"/Users/som_ramnani/Projects/api-proxy-server/api/index.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/index.js","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},"1":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"2":{"start":{"line":4,"column":13},"end":{"line":4,"column":28}},"3":{"start":{"line":5,"column":26},"end":{"line":5,"column":58}},"4":{"start":{"line":6,"column":24},"end":{"line":6,"column":49}},"5":{"start":{"line":8,"column":12},"end":{"line":8,"column":21}},"6":{"start":{"line":10,"column":20},"end":{"line":14,"column":1}},"7":{"start":{"line":16,"column":0},"end":{"line":16,"column":27}},"8":{"start":{"line":18,"column":0},"end":{"line":18,"column":46}},"9":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"10":{"start":{"line":21,"column":0},"end":{"line":27,"column":3}},"11":{"start":{"line":22,"column":2},"end":{"line":26,"column":5}},"12":{"start":{"line":29,"column":13},"end":{"line":29,"column":37}},"13":{"start":{"line":31,"column":0},"end":{"line":35,"column":1}},"14":{"start":{"line":32,"column":2},"end":{"line":34,"column":5}},"15":{"start":{"line":33,"column":4},"end":{"line":33,"column":49}},"16":{"start":{"line":37,"column":0},"end":{"line":37,"column":21}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":21,"column":13},"end":{"line":21,"column":14}},"loc":{"start":{"line":21,"column":27},"end":{"line":27,"column":1}},"line":21},"1":{"name":"(anonymous_1)","decl":{"start":{"line":32,"column":19},"end":{"line":32,"column":20}},"loc":{"start":{"line":32,"column":25},"end":{"line":34,"column":3}},"line":32}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":13},"end":{"line":29,"column":37}},"type":"binary-expr","locations":[{"start":{"line":29,"column":13},"end":{"line":29,"column":29}},{"start":{"line":29,"column":33},"end":{"line":29,"column":37}}],"line":29},"1":{"loc":{"start":{"line":31,"column":0},"end":{"line":35,"column":1}},"type":"if","locations":[{"start":{"line":31,"column":0},"end":{"line":35,"column":1}},{"start":{},"end":{}}],"line":31}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":3,"11":1,"12":3,"13":3,"14":0,"15":0,"16":3},"f":{"0":1,"1":0},"b":{"0":[3,3],"1":[0,3]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7969d7d620e06186000dc7ae288c679f5f036e7d"}
2+
,"/Users/som_ramnani/Projects/api-proxy-server/api/routes/hello.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/routes/hello.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":15},"end":{"line":2,"column":31}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":62}},"3":{"start":{"line":4,"column":30},"end":{"line":4,"column":60}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":17}},"loc":{"start":{"line":4,"column":30},"end":{"line":4,"column":60}},"line":4}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":1,"4":3},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eebe1ea5ad45c88429d33abb13b0c376403ca861"}
3+
,"/Users/som_ramnani/Projects/api-proxy-server/api/routes/superHeroAPI.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/routes/superHeroAPI.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":14},"end":{"line":2,"column":30}},"2":{"start":{"line":3,"column":15},"end":{"line":3,"column":31}},"3":{"start":{"line":5,"column":0},"end":{"line":16,"column":3}},"4":{"start":{"line":6,"column":2},"end":{"line":15,"column":7}},"5":{"start":{"line":11,"column":6},"end":{"line":11,"column":37}},"6":{"start":{"line":14,"column":6},"end":{"line":14,"column":32}},"7":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":21},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":41},"end":{"line":16,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":10},"end":{"line":10,"column":11}},"loc":{"start":{"line":10,"column":30},"end":{"line":12,"column":5}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":11},"end":{"line":13,"column":12}},"loc":{"start":{"line":13,"column":20},"end":{"line":15,"column":5}},"line":13}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3,"4":1,"5":1,"6":0,"7":3},"f":{"0":1,"1":1,"2":0},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b8fb18229cabf2caa93bebb7d66e8033fd7bec99"}
44
}

coverage/lcov-report/api/index.html

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ <h1><a href="../index.html">All files</a> api</h1>
2323
<div class='clearfix'>
2424

2525
<div class='fl pad1y space-right2'>
26-
<span class="strong">88.88% </span>
26+
<span class="strong">88.23% </span>
2727
<span class="quiet">Statements</span>
28-
<span class='fraction'>16/18</span>
28+
<span class='fraction'>15/17</span>
2929
</div>
3030

3131

@@ -44,9 +44,9 @@ <h1><a href="../index.html">All files</a> api</h1>
4444

4545

4646
<div class='fl pad1y space-right2'>
47-
<span class="strong">88.88% </span>
47+
<span class="strong">88.23% </span>
4848
<span class="quiet">Lines</span>
49-
<span class='fraction'>16/18</span>
49+
<span class='fraction'>15/17</span>
5050
</div>
5151

5252

@@ -80,17 +80,17 @@ <h1><a href="../index.html">All files</a> api</h1>
8080
</thead>
8181
<tbody><tr>
8282
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
83-
<td data-value="88.88" class="pic high">
83+
<td data-value="88.23" class="pic high">
8484
<div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
8585
</td>
86-
<td data-value="88.88" class="pct high">88.88%</td>
87-
<td data-value="18" class="abs high">16/18</td>
86+
<td data-value="88.23" class="pct high">88.23%</td>
87+
<td data-value="17" class="abs high">15/17</td>
8888
<td data-value="75" class="pct medium">75%</td>
8989
<td data-value="4" class="abs medium">3/4</td>
9090
<td data-value="50" class="pct medium">50%</td>
9191
<td data-value="2" class="abs medium">1/2</td>
92-
<td data-value="88.88" class="pct high">88.88%</td>
93-
<td data-value="18" class="abs high">16/18</td>
92+
<td data-value="88.23" class="pct high">88.23%</td>
93+
<td data-value="17" class="abs high">15/17</td>
9494
</tr>
9595

9696
</tbody>
@@ -101,7 +101,7 @@ <h1><a href="../index.html">All files</a> api</h1>
101101
<div class='footer quiet pad2 space-top1 center small'>
102102
Code coverage generated by
103103
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104-
at 2024-11-21T06:00:23.535Z
104+
at 2024-11-23T07:44:20.728Z
105105
</div>
106106
<script src="../prettify.js"></script>
107107
<script>

0 commit comments

Comments
 (0)