develop #3
@@ -22,7 +22,7 @@ class OnboardingController < ApplicationController
|
||||
private
|
||||
|
||||
def onboarding_params
|
||||
params.require(:user).permit(:first_name, :last_name, :company_name)
|
||||
params.require(:user).permit(:first_name, :last_name)
|
||||
end
|
||||
|
||||
def onboarding_params_valid?
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
import { Controller } from "@hotwired/stimulus"
|
||||
|
||||
// Connects to data-controller="toggle-section"
|
||||
export default class extends Controller {
|
||||
static targets = ["section", "icon"]
|
||||
|
||||
connect() {
|
||||
// Ensure the section starts hidden
|
||||
this.sectionTarget.classList.add("hidden")
|
||||
}
|
||||
|
||||
toggle() {
|
||||
const isHidden = this.sectionTarget.classList.contains("hidden")
|
||||
|
||||
if (isHidden) {
|
||||
// Show the section
|
||||
this.sectionTarget.classList.remove("hidden")
|
||||
this.iconTarget.classList.add("rotate-180")
|
||||
} else {
|
||||
// Hide the section
|
||||
this.sectionTarget.classList.add("hidden")
|
||||
this.iconTarget.classList.remove("rotate-180")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,40 +63,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Company Information Section (Optional) -->
|
||||
<div data-controller="toggle-section">
|
||||
<!-- Toggle Button -->
|
||||
<button type="button"
|
||||
data-action="click->toggle-section#toggle"
|
||||
class="w-full flex items-center justify-between p-4 bg-gray-50 hover:bg-gray-100 rounded-lg transition-colors duration-200 border border-gray-200">
|
||||
<div class="flex items-center">
|
||||
<svg class="w-5 h-5 mr-2 text-purple-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"/>
|
||||
</svg>
|
||||
<span class="text-lg font-semibold text-gray-900">Ajouter des informations d'entreprise</span>
|
||||
<span class="ml-2 text-sm font-normal text-gray-500">(optionnel)</span>
|
||||
</div>
|
||||
<svg data-toggle-section-target="icon" class="w-5 h-5 text-gray-400 transform transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<!-- Company Form Section (Hidden by default) -->
|
||||
<div data-toggle-section-target="section" class="mt-4 p-4 bg-white border border-gray-200 rounded-lg">
|
||||
<h3 class="text-lg font-medium text-gray-900 mb-4">Informations professionnelles</h3>
|
||||
|
||||
<div>
|
||||
<%= form.label :company_name, "Nom de l'entreprise", class: "block text-sm font-medium text-gray-700 mb-2" %>
|
||||
<%= form.text_field :company_name,
|
||||
value: current_user.company_name,
|
||||
class: "w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors",
|
||||
placeholder: "Nom de votre entreprise" %>
|
||||
<p class="mt-2 text-sm text-gray-500">
|
||||
Cette information peut être utile si vous organisez des événements professionnels.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Submit Button -->
|
||||
|
||||
@@ -18,7 +18,7 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest
|
||||
sign_in @user_without_onboarding
|
||||
get onboarding_path
|
||||
assert_response :success
|
||||
assert_select "h1", "Bienvenue sur AperoNight !"
|
||||
assert_select "h1", /Bienvenue sur.*!/
|
||||
assert_select "form"
|
||||
end
|
||||
|
||||
@@ -36,8 +36,7 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest
|
||||
post complete_onboarding_path, params: {
|
||||
user: {
|
||||
first_name: "Jane",
|
||||
last_name: "Smith",
|
||||
company_name: "Test Company"
|
||||
last_name: "Smith"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,23 +48,6 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest
|
||||
assert @user_without_onboarding.onboarding_completed?
|
||||
assert_equal "Jane", @user_without_onboarding.first_name
|
||||
assert_equal "Smith", @user_without_onboarding.last_name
|
||||
assert_equal "Test Company", @user_without_onboarding.company_name
|
||||
end
|
||||
|
||||
test "should complete onboarding without optional company name" do
|
||||
sign_in @user_without_onboarding
|
||||
|
||||
post complete_onboarding_path, params: {
|
||||
user: {
|
||||
first_name: "Jane",
|
||||
last_name: "Smith",
|
||||
company_name: ""
|
||||
}
|
||||
}
|
||||
|
||||
assert_redirected_to dashboard_path
|
||||
@user_without_onboarding.reload
|
||||
assert @user_without_onboarding.onboarding_completed?
|
||||
end
|
||||
|
||||
test "should not complete onboarding without required fields" do
|
||||
|
||||
Reference in New Issue
Block a user