Skip to content

Commit 5d1e1d7

Browse files
author
Serhat Bolsu
committed
Added error handling for api response
also - resources use dynamically calculated properties instead of being method - allure repot documentation and code added
1 parent 24a79d1 commit 5d1e1d7

File tree

5 files changed

+26
-14
lines changed

5 files changed

+26
-14
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ Run individual test suite
118118

119119
```npm test -- test/basic.spec.js```
120120

121+
Allure Report
122+
(you must have installed [allure command line](https://docs.qameta.io/allure/#_get_started))
123+
124+
```npm run report```
125+
121126
Post report to Microsoft Teams channel
122127
```
123128
export HOOK_URL=<microsoft_web_hook_url>

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"start": "node server/server.js",
88
"test": "jest --json --outputFile='./testResults.json'",
99
"lint": "eslint .",
10+
"report": "allure serve",
1011
"report.teams" : "TEST_FRAMEWORK=jest PROJECT_NAME='Api Sample Test Boilerplate' PROJECT_ENVIRONMENT=SIT PROJECT_TEST_TYPE=API node utils/teamsReporter.js ../testResults.json"
1112
},
1213
"husky": {

resources/BaseApi.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class BaseApi {
55
constructor() {
66
this.request = superagent;
77
this.headers = {};
8-
this.baseUrl = 'http://localhost:3000';
8+
this.baseUrl = global.baseUrl;
99
}
1010

1111
/**
@@ -37,14 +37,16 @@ class BaseApi {
3737
const res = await this.request.get(this.baseUrl + url)
3838
.send(body)
3939
.set(headers)
40-
.query(query);
40+
.query(query)
41+
.ok((res) => res.status <= 500);
4142
this.setAllureAttachment(res);
4243
return res;
4344
} else {
4445
const res = await this.request.get(this.baseUrl + url)
4546
.send({})
4647
.set(headers)
47-
.query(query);
48+
.query(query)
49+
.ok((res) => res.status <= 500);
4850
this.setAllureAttachment(res);
4951
return res;
5052
}
@@ -54,7 +56,8 @@ class BaseApi {
5456
url = url.startsWith('/') ? url : `/${url}`;
5557
const res = await this.request.post(this.baseUrl + url)
5658
.send(body)
57-
.set(headers);
59+
.set(headers)
60+
.ok((res) => res.status <= 500);
5861
this.setAllureAttachment(res);
5962
return res;
6063
}
@@ -63,7 +66,8 @@ class BaseApi {
6366
url = url.startsWith('/') ? url : `/${url}`;
6467
const res = await this.request.put(this.baseUrl + url)
6568
.send(body)
66-
.set(headers);
69+
.set(headers)
70+
.ok((res) => res.status <= 500);
6771
this.setAllureAttachment(res);
6872
return res;
6973
}
@@ -72,15 +76,17 @@ class BaseApi {
7276
url = url.startsWith('/') ? url : `/${url}`;
7377
const res = await this.request.patch(this.baseUrl + url)
7478
.send(body)
75-
.set(headers);
79+
.set(headers)
80+
.ok((res) => res.status <= 500);
7681
this.setAllureAttachment(res);
7782
return res;
7883
}
7984

8085
async delete(url, headers ={}) {
8186
url = url.startsWith('/') ? url : `/${url}`;
8287
const res = await this.request.delete(this.baseUrl + url)
83-
.set(headers);
88+
.set(headers)
89+
.ok((res) => res.status <= 500);
8490
this.setAllureAttachment(res);
8591
return res;
8692
}

resources/resources.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import VegetableResource from './vegetable.resource';
22

33
class Resources {
4-
vegetable() {
4+
get vegetable() {
55
return new VegetableResource();
66
}
77
}

test/basic_api_resource.spec.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,29 @@ import resources from '../resources/resources';
22

33
describe('Vegetables - using Api Resource facade', function() {
44
it('should get default', async function() {
5-
const vegetables = await resources.vegetable().getAll();
5+
const vegetables = await resources.vegetable.getAll();
66
expect(vegetables[0]).toHaveProperty('id');
7-
console.log(resources.vegetable().getUniqueVegetables());
7+
console.log(resources.vegetable.getUniqueVegetables());
88
});
99

1010
it('should get without optional', async function() {
11-
const vegetables = await resources.vegetable().getAll(false);
11+
const vegetables = await resources.vegetable.getAll(false);
1212
expect(vegetables[0]).not.toHaveProperty('origin');
1313
});
1414

1515
it('should create vegetable', async function() {
16-
const res = await resources.vegetable().create(
16+
const res = await resources.vegetable.create(
1717
"Orange", "UAE", "5", "2020-03-10");
1818
expect(res.status).toBe(201);
1919
expect(res.text).toMatch(/added: Orange/);
2020
});
2121

2222
it('should delete vegetable', async function() {
23-
const res = await resources.vegetable().create(
23+
const res = await resources.vegetable.create(
2424
"Orange", "UAE", "5", "2020-03-10");
2525
expect(res.status).toBe(201);
2626
const id = res.body.id;
27-
const res2 = await resources.vegetable().delete('/vegetables' + '/' + id);
27+
const res2 = await resources.vegetable.delete('/vegetables' + '/' + id);
2828
expect(res2.status).toBe(200);
2929
});
3030
});

0 commit comments

Comments
 (0)