Skip to content
This repository was archived by the owner on Aug 8, 2019. It is now read-only.

Commit 840cdf5

Browse files
committed
Add test in rails
1 parent 9e678dd commit 840cdf5

File tree

4 files changed

+241
-7
lines changed

4 files changed

+241
-7
lines changed

rails-time-track/app/controllers/api/sessions_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def create
2222
end
2323

2424
def destroy
25-
current_user.invalidate_token
25+
# current_user.invalidate_token
2626
cookies.delete :auth_token
2727
head :ok
2828
end

rails-time-track/spec/controllers/api/histories_controller_spec.rb

Lines changed: 86 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,36 @@
22

33
RSpec.describe Api::HistoriesController, type: :controller do
44

5-
let!(:user) do
5+
let!(:userOwner) do
66
User.create(
77
name: Faker::Name.name,
8-
email: "test@dominio.com",
8+
email: "test1@dominio.com",
99
password: "123456",
1010
role: "Owner",
1111
rate:1800
1212
)
1313
end
1414

15+
let!(:user1) do
16+
User.create(
17+
name: Faker::Name.name,
18+
email: "test2@dominio.com",
19+
password: "123456",
20+
role: "Analyst",
21+
rate:1500
22+
)
23+
end
24+
25+
let!(:user2) do
26+
User.create(
27+
name: Faker::Name.name,
28+
email: "test3@dominio.com",
29+
password: "123456",
30+
role: "Manager",
31+
rate:1500
32+
)
33+
end
34+
1535
let!(:project) do
1636
Project.create(
1737
name: "Project Space",
@@ -21,7 +41,7 @@
2141
)
2242
end
2343

24-
let!(:history) do
44+
let!(:history1) do
2545
Project.create(
2646
name: "Project Space",
2747
client: "Frank",
@@ -30,6 +50,29 @@
3050
)
3151
end
3252

53+
let!(:members1) do
54+
ProjectMember.create(
55+
user_id: user1.id,
56+
project_id: history1.id
57+
)
58+
end
59+
60+
let!(:history2) do
61+
Project.create(
62+
name: "Time Tracker",
63+
client: "Frank",
64+
category: "Education",
65+
closed: true
66+
)
67+
end
68+
69+
let!(:members2) do
70+
ProjectMember.create(
71+
user_id: user2.id,
72+
project_id: history2.id
73+
)
74+
end
75+
3376
describe 'GET index' do
3477
context "Without logged in previously" do
3578
it 'return http status unauthorized when you did not log in before' do
@@ -45,10 +88,48 @@
4588

4689
end
4790

48-
context "With logged in" do
91+
context "With logged in with a role Owner" do
92+
93+
before do
94+
cookies.signed[:auth_token] = userOwner.token
95+
end
96+
97+
it 'return http status ok' do
98+
get :index
99+
expect(response).to have_http_status(:ok)
100+
end
101+
102+
it 'render json with closed projects' do
103+
get :index
104+
history = JSON.parse(response.body)
105+
expect(history.size).to eq 2
106+
end
107+
108+
end
109+
110+
context "With logged in with a role Analyst" do
111+
112+
before do
113+
cookies.signed[:auth_token] = user1.token
114+
end
115+
116+
it 'return http status unauthorized' do
117+
get :index
118+
expect(response).to have_http_status(:unauthorized)
119+
end
120+
121+
it 'render json message with a specific error' do
122+
get :index
123+
expected_response = JSON.parse(response.body)["errors"]["message"];
124+
expect(expected_response).to eq("Access denied")
125+
end
126+
127+
end
128+
129+
context "With logged in with a role Manager" do
49130

50131
before do
51-
cookies.signed[:auth_token] = user.token
132+
cookies.signed[:auth_token] = user2.token
52133
end
53134

54135
it 'return http status ok' do
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
require 'rails_helper'
2+
3+
RSpec.describe Api::ProjectMembersController, type: :controller do
4+
5+
let!(:userAnalyst) do
6+
User.create(
7+
name: Faker::Name.name,
8+
email: "test1@dominio.com",
9+
password: "123456",
10+
role: "Analyst",
11+
rate:1800
12+
)
13+
end
14+
15+
let!(:userManager) do
16+
User.create(
17+
name: Faker::Name.name,
18+
email: "test2@dominio.com",
19+
password: "123456",
20+
role: "Manager",
21+
rate:1800
22+
)
23+
end
24+
25+
let!(:project1) do
26+
Project.create(
27+
name: "Project Rumi",
28+
client: "MINEDU",
29+
category: "Eduaction",
30+
closed: false
31+
)
32+
end
33+
34+
let!(:project2) do
35+
Project.create(
36+
name: "Time Tracker",
37+
client: "CODEABLE",
38+
category: "Gestion",
39+
closed: false
40+
)
41+
end
42+
43+
let!(:members1) do
44+
ProjectMember.create(
45+
user_id: userAnalyst.id,
46+
project_id: project1.id
47+
)
48+
49+
ProjectMember.create(
50+
user_id: userManager.id,
51+
project_id: project1.id
52+
)
53+
end
54+
55+
let!(:members2) do
56+
ProjectMember.create(
57+
user_id: userAnalyst.id,
58+
project_id: project2.id
59+
)
60+
end
61+
62+
describe 'GET index' do
63+
64+
context "Without logging in previously" do
65+
it 'return http status unauthorized when you did not log in before' do
66+
get :index
67+
expect(response).to have_http_status(:unauthorized)
68+
end
69+
70+
it 'return json message when you did not log in before' do
71+
get :index
72+
expected_response = JSON.parse(response.body)["errors"]["message"];
73+
expect(expected_response).to eq("Access denied")
74+
end
75+
76+
end
77+
78+
context "With logged in done previously" do
79+
before do
80+
cookies.signed[:auth_token] = userManager.token
81+
end
82+
83+
it 'return http status ok' do
84+
get :index
85+
expect(response).to have_http_status(:ok)
86+
end
87+
88+
it 'render json with all projects members of all projects' do
89+
get :index
90+
projects_members = JSON.parse(response.body)
91+
expect(projects_members.size).to eq 3
92+
end
93+
94+
it 'return http status ok when user_id and project_id are passed' do
95+
get :index, params: { user_id: userManager.id, project_id:project1.id }
96+
expect(response).to have_http_status(:ok)
97+
end
98+
99+
it 'render json with all projects members of a specific project' do
100+
get :index, params: { user_id: userManager.id, project_id:project1.id }
101+
projects_members = JSON.parse(response.body)
102+
expect(projects_members.size).to eq 1
103+
end
104+
end
105+
end
106+
107+
describe 'GET report_detail' do
108+
109+
context "Without logging in previously" do
110+
it 'return http status unauthorized when you did not log in before' do
111+
get :report_detail
112+
expect(response).to have_http_status(:unauthorized)
113+
end
114+
115+
it 'return json message when you did not log in before' do
116+
get :report_detail
117+
expected_response = JSON.parse(response.body)["errors"]["message"];
118+
expect(expected_response).to eq("Access denied")
119+
end
120+
121+
end
122+
123+
context "With logged in done previously" do
124+
before do
125+
cookies.signed[:auth_token] = userManager.token
126+
end
127+
128+
it 'return http status ok' do
129+
get :report_detail, params: { user_id: userManager.id, project_id:project1.id }
130+
expect(response).to have_http_status(:ok)
131+
end
132+
133+
it 'render json with info of the project and with extra attributes' do
134+
get :report_detail, params: { user_id: userManager.id, project_id:project1.id }
135+
projects_members = JSON.parse(response.body)
136+
expect(projects_members.keys.size).to eq(6)
137+
138+
expect(projects_members.keys).to include("id")
139+
expect(projects_members.keys).to include("user_id")
140+
expect(projects_members.keys).to include("project_id")
141+
expect(projects_members.keys).to include("estimated_cost")
142+
expect(projects_members.keys).to include("real_cost")
143+
expect(projects_members.keys).to include("details")
144+
145+
expect(projects_members["details"].size).to eq(0)
146+
end
147+
end
148+
end
149+
150+
end

react-time-track/src/contexts/user.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from "react";
2+
import { logout } from "../services/session";
23

34
const UserContext = React.createContext();
45

@@ -13,7 +14,9 @@ function UserProvider({ children }) {
1314
}, [loggedIn]);
1415

1516
const onLogin = userData => setLoggedIn(userData);
16-
const onLogout = () => setLoggedIn(null);
17+
const onLogout = () => {
18+
logout().then(() => setLoggedIn(null));
19+
};
1720

1821
const value = {
1922
data: loggedIn,

0 commit comments

Comments
 (0)