Skip to content

Commit 4fe3bf9

Browse files
committed
Update controller tests for refactored API and 2-tier roles
- ItemTagsControllerTest: switch payloads from queue_number to name; drop invalid-format and already_completed cases; rename reset to idle; cover the duplicate-name-allowed case - ShopsControllerTest: drop the reset action test (action removed) - BaseControllerTest: rewire the validation-error case to use blank name instead of duplicate queue_number - Accounts/AccountsInvitations/AccountsShopkeepers/Permissions/ RegistrationsControllerTest: rename old-tier role refs to member
1 parent e358da7 commit 4fe3bf9

8 files changed

Lines changed: 49 additions & 75 deletions

test/controllers/api/v1/shopkeeper/accounts/accounts_invitations_controller_test.rb

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
1111
name: "Invited User",
1212
email: "invited@example.com",
1313
invited_by: @shopkeeper,
14-
junior_member: true
14+
member: true
1515
)
1616
end
1717

@@ -20,7 +20,7 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
2020
account: @account,
2121
name: "Another User",
2222
email: "another@example.com",
23-
junior_member: true
23+
member: true
2424
)
2525

2626
get api_v1_shopkeeper_account_accounts_invitations_url(@account),
@@ -45,7 +45,7 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
4545
accounts_invitation: {
4646
name: "New User",
4747
email: "newuser@example.com",
48-
junior_member: true
48+
member: true
4949
}
5050
},
5151
headers: @shopkeeper.create_new_auth_token
@@ -62,7 +62,7 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
6262
accounts_invitation: {
6363
name: "",
6464
email: "invalid@example.com",
65-
junior_member: true
65+
member: true
6666
}
6767
},
6868
headers: @shopkeeper.create_new_auth_token
@@ -78,15 +78,15 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
7878
AccountsShopkeeper.create!(
7979
account: @account,
8080
shopkeeper: other_shopkeeper,
81-
junior_member: true
81+
member: true
8282
)
8383

8484
post api_v1_shopkeeper_account_accounts_invitations_url(@account),
8585
params: {
8686
accounts_invitation: {
8787
name: "New User",
8888
email: "newuser@example.com",
89-
junior_member: true
89+
member: true
9090
}
9191
},
9292
headers: other_shopkeeper.create_new_auth_token
@@ -99,15 +99,15 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
9999
params: {
100100
accounts_invitation: {
101101
name: "Updated Name",
102-
senior_member: true,
103-
junior_member: false
102+
admin: true,
103+
member: false
104104
}
105105
},
106106
headers: @shopkeeper.create_new_auth_token
107107

108108
assert_response :success
109109
assert_equal "Updated Name", @invitation.reload.name
110-
assert @invitation.senior_member?
110+
assert @invitation.admin?
111111
end
112112

113113
test "update returns error for invalid data" do
@@ -129,7 +129,7 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
129129
AccountsShopkeeper.create!(
130130
account: @account,
131131
shopkeeper: other_shopkeeper,
132-
junior_member: true
132+
member: true
133133
)
134134

135135
patch api_v1_shopkeeper_account_accounts_invitation_url(@account, @invitation.token),
@@ -153,7 +153,7 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
153153
AccountsShopkeeper.create!(
154154
account: @account,
155155
shopkeeper: other_shopkeeper,
156-
junior_member: true
156+
member: true
157157
)
158158

159159
delete api_v1_shopkeeper_account_accounts_invitation_url(@account, @invitation.token),
@@ -191,7 +191,7 @@ class Api::V1::Shopkeeper::Accounts::AccountsInvitationsControllerTest < ActionD
191191
AccountsShopkeeper.create!(
192192
account: @account,
193193
shopkeeper: other_shopkeeper,
194-
junior_member: true
194+
member: true
195195
)
196196

197197
post resend_api_v1_shopkeeper_account_accounts_invitation_path(@account, @invitation.token),

test/controllers/api/v1/shopkeeper/accounts_controller_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class Api::V1::Shopkeeper::AccountsControllerTest < ActionDispatch::IntegrationT
6161
AccountsShopkeeper.create!(
6262
account: @team_account,
6363
shopkeeper: other_shopkeeper,
64-
junior_member: true
64+
member: true
6565
)
6666

6767
patch api_v1_shopkeeper_account_url(@team_account),

test/controllers/api/v1/shopkeeper/accounts_invitations_controller_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Api::V1::Shopkeeper::AccountsInvitationsControllerTest < ActionDispatch::I
99
account: @account,
1010
name: "Invited User",
1111
email: "invited@example.com",
12-
junior_member: true
12+
member: true
1313
)
1414
end
1515

@@ -52,7 +52,7 @@ class Api::V1::Shopkeeper::AccountsInvitationsControllerTest < ActionDispatch::I
5252
AccountsShopkeeper.create!(
5353
account: @account,
5454
shopkeeper: shopkeepers(:two),
55-
junior_member: true
55+
member: true
5656
)
5757

5858
patch api_v1_shopkeeper_accounts_invitation_url(@invitation.token),

test/controllers/api/v1/shopkeeper/accounts_shopkeepers_controller_test.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Api::V1::Shopkeeper::AccountsShopkeepersControllerTest < ActionDispatch::I
2828
AccountsShopkeeper.create!(
2929
account: @team_account,
3030
shopkeeper: other_shopkeeper,
31-
junior_member: true
31+
member: true
3232
)
3333

3434
get api_v1_shopkeeper_account_accounts_shopkeepers_url(@team_account),
@@ -62,31 +62,31 @@ class Api::V1::Shopkeeper::AccountsShopkeepersControllerTest < ActionDispatch::I
6262
accounts_shopkeeper = AccountsShopkeeper.create!(
6363
account: @team_account,
6464
shopkeeper: other_shopkeeper,
65-
junior_member: true
65+
member: true
6666
)
6767

6868
patch api_v1_shopkeeper_account_accounts_shopkeeper_url(@team_account, accounts_shopkeeper),
69-
params: {accounts_shopkeeper: {senior_member: true, junior_member: false}},
69+
params: {accounts_shopkeeper: {admin: true, member: false}},
7070
headers: @shopkeeper.create_new_auth_token
7171

7272
assert_response :success
73-
assert accounts_shopkeeper.reload.senior_member?
74-
assert_not accounts_shopkeeper.junior_member?
73+
assert accounts_shopkeeper.reload.admin?
74+
assert_not accounts_shopkeeper.member?
7575
end
7676

7777
test "update returns error for personal account" do
7878
accounts_shopkeeper = @account.accounts_shopkeepers.first
7979

8080
patch api_v1_shopkeeper_account_accounts_shopkeeper_url(@account, accounts_shopkeeper),
81-
params: {accounts_shopkeeper: {admin: false, junior_member: true}},
81+
params: {accounts_shopkeeper: {admin: false, member: true}},
8282
headers: @shopkeeper.create_new_auth_token
8383

8484
assert_response :unprocessable_entity
8585
end
8686

8787
test "update returns validation error when owner removes own admin" do
8888
patch api_v1_shopkeeper_account_accounts_shopkeeper_url(@team_account, @team_accounts_shopkeeper),
89-
params: {accounts_shopkeeper: {admin: false, junior_member: true}},
89+
params: {accounts_shopkeeper: {admin: false, member: true}},
9090
headers: @shopkeeper.create_new_auth_token
9191

9292
assert_response :unprocessable_entity
@@ -99,11 +99,11 @@ class Api::V1::Shopkeeper::AccountsShopkeepersControllerTest < ActionDispatch::I
9999
AccountsShopkeeper.create!(
100100
account: @team_account,
101101
shopkeeper: other_shopkeeper,
102-
junior_member: true
102+
member: true
103103
)
104104

105105
patch api_v1_shopkeeper_account_accounts_shopkeeper_url(@team_account, @team_accounts_shopkeeper),
106-
params: {accounts_shopkeeper: {senior_member: true}},
106+
params: {accounts_shopkeeper: {member: true}},
107107
headers: other_shopkeeper.create_new_auth_token
108108

109109
assert_response :unauthorized
@@ -114,7 +114,7 @@ class Api::V1::Shopkeeper::AccountsShopkeepersControllerTest < ActionDispatch::I
114114
accounts_shopkeeper = AccountsShopkeeper.create!(
115115
account: @team_account,
116116
shopkeeper: other_shopkeeper,
117-
junior_member: true
117+
member: true
118118
)
119119

120120
assert_difference "AccountsShopkeeper.count", -1 do
@@ -148,7 +148,7 @@ class Api::V1::Shopkeeper::AccountsShopkeepersControllerTest < ActionDispatch::I
148148
accounts_shopkeeper = AccountsShopkeeper.create!(
149149
account: @team_account,
150150
shopkeeper: other_shopkeeper,
151-
junior_member: true
151+
member: true
152152
)
153153

154154
delete api_v1_shopkeeper_account_accounts_shopkeeper_url(@team_account, accounts_shopkeeper),

test/controllers/api/v1/shopkeeper/base_controller_test.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ def setup
99
end
1010

1111
test "render_validation_error returns 422 with error messages" do
12-
item_tag = @shop.item_tags.first
13-
14-
# Try to create a duplicate queue_number to trigger validation error
12+
# Try to create an item_tag with a blank name to trigger validation error
1513
post api_v1_shopkeeper_shop_item_tags_url(@shop),
16-
params: {item_tag: {queue_number: item_tag.queue_number}},
14+
params: {item_tag: {name: ""}},
1715
headers: @shopkeeper.create_new_auth_token
1816

1917
assert_response :unprocessable_entity

test/controllers/api/v1/shopkeeper/item_tags_controller_test.rb

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Api::V1::Shopkeeper::ItemTagsControllerTest < ActionDispatch::IntegrationT
1313
test "index returns item_tags" do
1414
get api_v1_shopkeeper_shop_item_tags_url(@shop), headers: @shopkeeper.create_new_auth_token
1515
assert_response :success
16-
assert_includes response.parsed_body["data"].map { |t| t["attributes"]["queue_number"] }, @item_tag.queue_number
16+
assert_includes response.parsed_body["data"].map { |t| t["attributes"]["name"] }, @item_tag.name
1717
end
1818

1919
test "index returns pagination meta" do
@@ -64,7 +64,7 @@ class Api::V1::Shopkeeper::ItemTagsControllerTest < ActionDispatch::IntegrationT
6464
test "show returns an item_tag detail" do
6565
get api_v1_shopkeeper_item_tag_url(@item_tag), headers: @shopkeeper.create_new_auth_token
6666
assert_response :success
67-
assert_equal response.parsed_body["data"]["attributes"]["queue_number"], @item_tag.queue_number
67+
assert_equal response.parsed_body["data"]["attributes"]["name"], @item_tag.name
6868
end
6969

7070
test "show returns 404 for nonexistent item_tag" do
@@ -80,18 +80,18 @@ class Api::V1::Shopkeeper::ItemTagsControllerTest < ActionDispatch::IntegrationT
8080
test "create creates a new item_tag" do
8181
assert_difference "ItemTag.count", 1 do
8282
post api_v1_shopkeeper_shop_item_tags_url(@shop),
83-
params: {item_tag: {queue_number: "Z99"}},
83+
params: {item_tag: {name: "Buy milk"}},
8484
headers: @shopkeeper.create_new_auth_token
8585
end
8686

8787
assert_response :created
88-
assert_equal "Z99", response.parsed_body["data"]["attributes"]["queue_number"]
88+
assert_equal "Buy milk", response.parsed_body["data"]["attributes"]["name"]
8989
end
9090

91-
test "create returns validation error with blank queue_number" do
91+
test "create returns validation error with blank name" do
9292
assert_no_difference "ItemTag.count" do
9393
post api_v1_shopkeeper_shop_item_tags_url(@shop),
94-
params: {item_tag: {queue_number: ""}},
94+
params: {item_tag: {name: ""}},
9595
headers: @shopkeeper.create_new_auth_token
9696
end
9797

@@ -100,41 +100,29 @@ class Api::V1::Shopkeeper::ItemTagsControllerTest < ActionDispatch::IntegrationT
100100
assert response.parsed_body["error_message"].present?
101101
end
102102

103-
test "create returns validation error with duplicate queue_number" do
104-
assert_no_difference "ItemTag.count" do
105-
post api_v1_shopkeeper_shop_item_tags_url(@shop),
106-
params: {item_tag: {queue_number: @item_tag.queue_number}},
107-
headers: @shopkeeper.create_new_auth_token
108-
end
109-
110-
assert_response :unprocessable_entity
111-
assert_equal 422, response.parsed_body["code"]
112-
end
113-
114-
test "create returns validation error with invalid queue_number format" do
115-
assert_no_difference "ItemTag.count" do
103+
test "create allows duplicate name within the same shop" do
104+
assert_difference "ItemTag.count", 1 do
116105
post api_v1_shopkeeper_shop_item_tags_url(@shop),
117-
params: {item_tag: {queue_number: "A"}},
106+
params: {item_tag: {name: @item_tag.name}},
118107
headers: @shopkeeper.create_new_auth_token
119108
end
120109

121-
assert_response :unprocessable_entity
122-
assert_equal 422, response.parsed_body["code"]
110+
assert_response :created
123111
end
124112

125113
# update
126-
test "update succeeds with valid queue_number" do
114+
test "update succeeds with valid name" do
127115
patch api_v1_shopkeeper_item_tag_url(@item_tag),
128-
params: {item_tag: {queue_number: "X99"}},
116+
params: {item_tag: {name: "Buy bread"}},
129117
headers: @shopkeeper.create_new_auth_token
130118

131119
assert_response :success
132-
assert_equal "X99", @item_tag.reload.queue_number
120+
assert_equal "Buy bread", @item_tag.reload.name
133121
end
134122

135-
test "update returns validation error with invalid queue_number" do
123+
test "update returns validation error with blank name" do
136124
patch api_v1_shopkeeper_item_tag_url(@item_tag),
137-
params: {item_tag: {queue_number: "A"}},
125+
params: {item_tag: {name: ""}},
138126
headers: @shopkeeper.create_new_auth_token
139127

140128
assert_response :unprocessable_entity
@@ -167,21 +155,21 @@ class Api::V1::Shopkeeper::ItemTagsControllerTest < ActionDispatch::IntegrationT
167155
assert @item_tag.reload.completed?
168156
end
169157

170-
test "complete sets already_completed when already completed" do
158+
test "complete is a no-op when item_tag is already completed" do
171159
@item_tag.complete!
172160
assert @item_tag.reload.completed?
173161

174162
patch complete_api_v1_shopkeeper_item_tag_url(@item_tag), headers: @shopkeeper.create_new_auth_token
175163
assert_response :success
176-
assert @item_tag.reload.already_completed
164+
assert @item_tag.reload.completed?
177165
end
178166

179-
# reset
180-
test "reset resets an item_tag" do
167+
# idle
168+
test "idle resets an item_tag" do
181169
@item_tag.complete!
182170
assert @item_tag.reload.completed?
183171

184-
patch reset_api_v1_shopkeeper_item_tag_url(@item_tag), headers: @shopkeeper.create_new_auth_token
172+
patch idle_api_v1_shopkeeper_item_tag_url(@item_tag), headers: @shopkeeper.create_new_auth_token
185173
assert_response :success
186174
assert @item_tag.reload.idled?
187175
end

test/controllers/api/v1/shopkeeper/shops_controller_test.rb

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,4 @@ class Api::V1::Shopkeeper::ShopsControllerTest < ActionDispatch::IntegrationTest
8181
assert_response :success
8282
end
8383

84-
# reset
85-
test "reset resets all item_tags in shop" do
86-
item_tag = @shop.item_tags.first
87-
item_tag.complete!
88-
assert item_tag.reload.completed?
89-
90-
delete reset_api_v1_shopkeeper_shop_url(@shop),
91-
headers: @shopkeeper.create_new_auth_token
92-
93-
assert_response :success
94-
assert item_tag.reload.idled?
95-
end
9684
end

test/controllers/shopkeeper_auth/registrations_controller_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class ShopkeeperAuth::RegistrationsControllerTest < ActionDispatch::IntegrationT
3636

3737
ActsAsTenant.with_tenant(account) do
3838
shop = account.shops.create!(name: "Test Shop", created_by: shopkeeper)
39-
shop.item_tags.create!(queue_number: "A1", account: account, completed_by: shopkeeper)
39+
shop.item_tags.create!(name: "Buy milk", account: account, completed_by: shopkeeper)
4040
end
4141

4242
assert_difference "Shopkeeper.count", -1 do

0 commit comments

Comments
 (0)