forked from solidusio/solidus
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request solidusio#6033 from MadelineCollier/admin-user-sto…
…re-credit-refactor [Admin][Users] Add new admin store credits edit_memo flow
- Loading branch information
Showing
13 changed files
with
328 additions
and
160 deletions.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
admin/app/components/solidus_admin/users/store_credits/edit_amount/component.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
en: | ||
title: Edit Store Credit | ||
title: Edit Store Credit Amount | ||
cancel: Cancel | ||
submit: Update Store Credit | ||
choose_reason: Choose Reason For Changing Amount |
16 changes: 16 additions & 0 deletions
16
admin/app/components/solidus_admin/users/store_credits/edit_memo/component.html.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<%= turbo_frame_tag :edit_memo_modal do %> | ||
<%= render component("ui/modal").new(title: t(".title")) do |modal| %> | ||
<%= form_for @store_credit, url: solidus_admin.update_memo_user_store_credit_path(@user, @store_credit), method: :put, html: { id: form_id } do |f| %> | ||
<div class="flex flex-col gap-6 pb-4"> | ||
<%= render component("ui/forms/field").text_field(f, :memo) %> | ||
</div> | ||
<% modal.with_actions do %> | ||
<form method="dialog"> | ||
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %> | ||
</form> | ||
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %> | ||
<% end %> | ||
<% end %> | ||
<% end %> | ||
<% end %> | ||
<%= render component("users/store_credits/show").new(user: @user, store_credit: @store_credit, events: @store_credit_events) %> |
13 changes: 13 additions & 0 deletions
13
admin/app/components/solidus_admin/users/store_credits/edit_memo/component.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# frozen_string_literal: true | ||
|
||
class SolidusAdmin::Users::StoreCredits::EditMemo::Component < SolidusAdmin::BaseComponent | ||
def initialize(user:, store_credit:, events:) | ||
@user = user | ||
@store_credit = store_credit | ||
@store_credit_events = events | ||
end | ||
|
||
def form_id | ||
dom_id(@store_credit, "#{stimulus_id}_edit_memo_form") | ||
end | ||
end |
4 changes: 4 additions & 0 deletions
4
admin/app/components/solidus_admin/users/store_credits/edit_memo/component.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
en: | ||
title: Edit Store Credit Memo | ||
cancel: Cancel | ||
submit: Update Store Credit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -51,6 +51,7 @@ def tabs | |
def turbo_frames | ||
%w[ | ||
edit_amount_modal | ||
edit_memo_modal | ||
] | ||
end | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -57,6 +57,8 @@ | |
member do | ||
get :edit_amount | ||
put :update_amount | ||
get :edit_memo | ||
put :update_memo | ||
end | ||
end | ||
end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
# frozen_string_literal: true | ||
|
||
require "spec_helper" | ||
|
||
describe "StoreCredits", :js, type: :feature do | ||
let(:admin) { create(:admin_user, email: "[email protected]") } | ||
|
||
before do | ||
sign_in admin | ||
end | ||
|
||
context "when a user has no store credits" do | ||
before do | ||
create(:user, email: "[email protected]") | ||
visit "/admin/users" | ||
find_row("[email protected]").click | ||
click_on "Store Credit" | ||
end | ||
|
||
it "shows the store credits page" do | ||
expect(page).to have_content("Users / [email protected] / Store Credit") | ||
expect(page).to have_content("Lifetime Stats") | ||
expect(page).to have_content("Store Credit") | ||
expect(page).to be_axe_clean | ||
end | ||
|
||
it "shows the appropriate content" do | ||
expect(page).to have_content("No Store Credits found.") | ||
end | ||
end | ||
|
||
context "when a user has store credits" do | ||
let!(:store_credit) { create(:store_credit, amount: 199.00, currency: "USD") } | ||
let!(:store_credit_reason) { create(:store_credit_reason, name: "credit given in error") } | ||
|
||
before do | ||
store_credit.user.update(email: "[email protected]") | ||
|
||
visit "/admin/users" | ||
find_row("[email protected]").click | ||
click_on "Store Credit" | ||
end | ||
|
||
it "shows the store credits page" do | ||
expect(page).to have_content("Users / [email protected] / Store Credit") | ||
expect(page).to have_content("Lifetime Stats") | ||
expect(page).to have_content("Store Credit") | ||
expect(page).to be_axe_clean | ||
end | ||
|
||
it "lists the user's store credit" do | ||
expect(page).to have_content("Current balance: $199.00") | ||
expect(page).to have_content("Credited") | ||
expect(page).to have_content("Authorized") | ||
expect(page).to have_content("Used") | ||
expect(page).to have_content("Type") | ||
expect(page).to have_content("Created by") | ||
expect(page).to have_content("Issued on") | ||
expect(page).to have_content("Invalidated") | ||
expect(page).not_to have_content("No Store Credits found.") | ||
end | ||
|
||
context "when clicking through to a single store credit" do | ||
let!(:store_credit_reason) { create(:store_credit_reason, name: "credit given in error") } | ||
|
||
before do | ||
stub_authorization!(admin) | ||
find_row("$199.00").click | ||
end | ||
|
||
it "shows individual store credit details" do | ||
expect(page).to have_content("Users / [email protected] / Store Credit / $199.00") | ||
expect(page).to have_content("Store Credit History") | ||
expect(page).to have_content("Action") | ||
expect(page).to have_content("Added") | ||
end | ||
|
||
it "allows invalidating of the store credit" do | ||
click_on "Invalidate" | ||
select "credit given in error", from: "store_credit_reason_id" | ||
click_on "Invalidate" | ||
expect(page).to have_content("Store Credit History") | ||
expect(page).to have_content("Action") | ||
expect(page).to have_content("Added") | ||
expect(page).to have_content("Invalidated") | ||
expect(page).to have_content("Reason for updating") | ||
expect(page).to have_content("credit given in error") | ||
end | ||
|
||
context "when editing the store credit amount" do | ||
context "with invalid amount" do | ||
it "shows the appropriate error message" do | ||
click_on "Edit Amount" | ||
expect(page).to have_selector("dialog", wait: 5) | ||
expect(page).to have_content("Edit Store Credit Amount") | ||
|
||
within("dialog") do | ||
fill_in "Amount", with: "" | ||
click_on "Update Store Credit" | ||
expect(page).to have_content("must be greater than 0") | ||
click_on "Cancel" | ||
end | ||
end | ||
end | ||
|
||
context "without a valid reason" do | ||
it "shows the appropriate error message" do | ||
click_on "Edit Amount" | ||
expect(page).to have_selector("dialog", wait: 5) | ||
expect(page).to have_content("Edit Store Credit Amount") | ||
|
||
within("dialog") do | ||
fill_in "Amount", with: "100" | ||
click_on "Update Store Credit" | ||
expect(page).to have_content("Store Credit reason must be provided") | ||
click_on "Cancel" | ||
end | ||
end | ||
end | ||
|
||
context "with valid params" do | ||
it "allows editing of the store credit amount" do | ||
click_on "Edit Amount" | ||
expect(page).to have_selector("dialog", wait: 5) | ||
expect(page).to have_content("Edit Store Credit Amount") | ||
|
||
within("dialog") do | ||
fill_in "Amount", with: "666" | ||
select "credit given in error", from: "store_credit[store_credit_reason_id]" | ||
click_on "Update Store Credit" | ||
end | ||
|
||
expect(page).to have_content("Users / [email protected] / Store Credit / $666.00") | ||
expect(page).to have_content("Adjustment") | ||
expect(page).to have_content("credit given in error") | ||
end | ||
end | ||
end | ||
|
||
context "when editing the store credit memo" do | ||
it "allows editing of the store credit memo" do | ||
click_on "Edit Memo" | ||
expect(page).to have_selector("dialog", wait: 5) | ||
expect(page).to have_content("Edit Store Credit Memo") | ||
|
||
within("dialog") do | ||
fill_in "Memo", with: "dogtown" | ||
click_on "Update Store Credit" | ||
end | ||
|
||
expect(page).to have_content("Store credit was successfully updated.") | ||
expect(page).to have_content("dogtown") | ||
end | ||
end | ||
end | ||
end | ||
end |
Oops, something went wrong.