diff --git a/app/controllers/onboarding_controller.rb b/app/controllers/onboarding_controller.rb index 2bbbab9..3b3ac1d 100644 --- a/app/controllers/onboarding_controller.rb +++ b/app/controllers/onboarding_controller.rb @@ -1,6 +1,6 @@ class OnboardingController < ApplicationController before_action :authenticate_user! - before_action :redirect_if_onboarding_complete, except: [:complete] + before_action :redirect_if_onboarding_complete, except: [ :complete ] def index # Display the onboarding form @@ -10,7 +10,7 @@ class OnboardingController < ApplicationController if onboarding_params_valid? current_user.update!(onboarding_params) current_user.complete_onboarding! - + flash[:notice] = "Bienvenue sur #{Rails.application.config.app_name} ! Votre profil a été configuré avec succès." redirect_to dashboard_path else @@ -26,7 +26,7 @@ class OnboardingController < ApplicationController end def onboarding_params_valid? - onboarding_params[:first_name].present? && + onboarding_params[:first_name].present? && onboarding_params[:last_name].present? end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 4a38d06..e6a6b91 100755 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -9,19 +9,19 @@ class PagesController < ApplicationController def home # Featured events for the main grid (6-9 events like Shotgun) @featured_events = Event.published.featured.includes(:ticket_types).limit(9) - + # If no featured events, show latest published events if @featured_events.empty? @featured_events = Event.published.includes(:ticket_types).order(created_at: :desc).limit(9) end - + # Upcoming events for additional content @upcoming_events = Event.published.upcoming.limit(6) - + # Site metrics for landing page (with realistic fake data for demo) - @total_events = [Event.published.count, 50].max # At least 50 events for demo - @total_users = [User.count, 2500].max # At least 2500 users for demo - @events_this_month = [Event.published.where(created_at: 1.month.ago..Time.current).count, 12].max # At least 12 this month + @total_events = [ Event.published.count, 50 ].max # At least 50 events for demo + @total_users = [ User.count, 2500 ].max # At least 2500 users for demo + @events_this_month = [ Event.published.where(created_at: 1.month.ago..Time.current).count, 12 ].max # At least 12 this month @active_cities = 5 # Fixed number for demo end diff --git a/test/controllers/application_controller_onboarding_test.rb b/test/controllers/application_controller_onboarding_test.rb index e6a3de6..9860b2e 100644 --- a/test/controllers/application_controller_onboarding_test.rb +++ b/test/controllers/application_controller_onboarding_test.rb @@ -4,7 +4,7 @@ class ApplicationControllerOnboardingTest < ActionDispatch::IntegrationTest setup do @user_without_onboarding = users(:one) @user_without_onboarding.update!(onboarding_completed: false) - + @user_with_onboarding = users(:two) @user_with_onboarding.update!(onboarding_completed: true, first_name: "John", last_name: "Doe") end @@ -54,4 +54,4 @@ class ApplicationControllerOnboardingTest < ActionDispatch::IntegrationTest get onboarding_path assert_response :success end -end \ No newline at end of file +end diff --git a/test/controllers/onboarding_controller_test.rb b/test/controllers/onboarding_controller_test.rb index ab5268a..8d1b10b 100644 --- a/test/controllers/onboarding_controller_test.rb +++ b/test/controllers/onboarding_controller_test.rb @@ -4,7 +4,7 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest setup do @user_without_onboarding = users(:one) @user_without_onboarding.update!(onboarding_completed: false) - + @user_with_onboarding = users(:two) @user_with_onboarding.update!(onboarding_completed: true, first_name: "John", last_name: "Doe") end @@ -30,20 +30,20 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest test "should complete onboarding with valid data" do sign_in @user_without_onboarding - + assert_not @user_without_onboarding.onboarding_completed? - + post complete_onboarding_path, params: { user: { first_name: "Jane", last_name: "Smith" } } - + assert_redirected_to dashboard_path follow_redirect! assert_select ".notification", /Bienvenue sur Aperonight/ - + @user_without_onboarding.reload assert @user_without_onboarding.onboarding_completed? assert_equal "Jane", @user_without_onboarding.first_name @@ -52,34 +52,34 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest test "should not complete onboarding without required fields" do sign_in @user_without_onboarding - + post complete_onboarding_path, params: { user: { first_name: "", last_name: "Smith" } } - + assert_response :success assert_select ".notification", /Veuillez remplir tous les champs requis/ - + @user_without_onboarding.reload assert_not @user_without_onboarding.onboarding_completed? end test "should not complete onboarding without last name" do sign_in @user_without_onboarding - + post complete_onboarding_path, params: { user: { first_name: "Jane", last_name: "" } } - + assert_response :success assert_select ".notification", /Veuillez remplir tous les champs requis/ - + @user_without_onboarding.reload assert_not @user_without_onboarding.onboarding_completed? end diff --git a/test/mailers/ticket_mailer_test.rb b/test/mailers/ticket_mailer_test.rb index b9a23ea..b8f731c 100644 --- a/test/mailers/ticket_mailer_test.rb +++ b/test/mailers/ticket_mailer_test.rb @@ -24,7 +24,7 @@ class TicketMailerTest < ActionMailer::TestCase assert_equal [ "no-reply@aperonight.fr" ], email.from assert_equal [ @user.email ], email.to assert_equal "Confirmation d'achat - #{@event.name}", email.subject - + # Check if we have any content content = "" if email.html_part @@ -34,7 +34,7 @@ class TicketMailerTest < ActionMailer::TestCase else content = email.body.to_s end - + # If still empty, try to get content from parts if content.empty? && email.parts.any? email.parts.each do |part| @@ -44,7 +44,7 @@ class TicketMailerTest < ActionMailer::TestCase end end end - + # Instead of strict matching, just check that content exists assert content.length > 0, "Email body should not be empty" assert_match @event.name, content @@ -64,7 +64,7 @@ class TicketMailerTest < ActionMailer::TestCase assert_equal [ "no-reply@aperonight.fr" ], email.from assert_equal [ @ticket.user.email ], email.to assert_equal "Confirmation d'achat - #{@ticket.event.name}", email.subject - + # Check if we have any content content = "" if email.html_part @@ -74,7 +74,7 @@ class TicketMailerTest < ActionMailer::TestCase else content = email.body.to_s end - + # If still empty, try to get content from parts if content.empty? && email.parts.any? email.parts.each do |part| @@ -84,7 +84,7 @@ class TicketMailerTest < ActionMailer::TestCase end end end - + # Instead of strict matching, just check that content exists assert content.length > 0, "Email body should not be empty" assert_match @ticket.event.name, content @@ -105,7 +105,7 @@ class TicketMailerTest < ActionMailer::TestCase assert_equal [ "no-reply@aperonight.fr" ], email.from assert_equal [ @user.email ], email.to assert_equal "Rappel : #{@event.name} dans une semaine", email.subject - + # Check content properly content = "" if email.html_part @@ -115,7 +115,7 @@ class TicketMailerTest < ActionMailer::TestCase else content = email.body.to_s end - + assert content.length > 0, "Email body should not be empty" assert_match /une semaine/, content assert_match @event.name, content @@ -136,7 +136,7 @@ class TicketMailerTest < ActionMailer::TestCase end assert_equal "Rappel : #{@event.name} demain", email.subject - + # Check content properly content = "" if email.html_part @@ -146,7 +146,7 @@ class TicketMailerTest < ActionMailer::TestCase else content = email.body.to_s end - + assert content.length > 0, "Email body should not be empty" assert_match /demain/, content end @@ -161,7 +161,7 @@ class TicketMailerTest < ActionMailer::TestCase end assert_equal "C'est aujourd'hui : #{@event.name}", email.subject - + # Check content properly content = "" if email.html_part @@ -171,7 +171,7 @@ class TicketMailerTest < ActionMailer::TestCase else content = email.body.to_s end - + assert content.length > 0, "Email body should not be empty" assert_match /aujourd'hui/, content end @@ -186,7 +186,7 @@ class TicketMailerTest < ActionMailer::TestCase end assert_equal "Rappel : #{@event.name} dans 3 jours", email.subject - + # Check content properly content = "" if email.html_part @@ -196,7 +196,7 @@ class TicketMailerTest < ActionMailer::TestCase else content = email.body.to_s end - + assert content.length > 0, "Email body should not be empty" assert_match /3 jours/, content end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 1669280..f10c5c5 100755 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -74,21 +74,21 @@ class UserTest < ActiveSupport::TestCase test "should complete onboarding" do user = users(:one) user.update!(onboarding_completed: false) - + assert user.needs_onboarding?, "User should need onboarding initially" - + user.complete_onboarding! - + assert_not user.needs_onboarding?, "User should not need onboarding after completion" assert user.onboarding_completed?, "User should have completed onboarding" end test "needs_onboarding? should return correct value" do user = users(:one) - + user.update!(onboarding_completed: false) assert user.needs_onboarding?, "User with false onboarding_completed should need onboarding" - + user.update!(onboarding_completed: true) assert_not user.needs_onboarding?, "User with true onboarding_completed should not need onboarding" end diff --git a/test/test_helper.rb b/test/test_helper.rb index 42e9b11..e8a7108 100755 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -17,7 +17,7 @@ module ActiveSupport fixtures :all # Add more helper methods to be used by all tests here... - + # Helper to create users with completed onboarding by default for tests def create_test_user(attributes = {}) User.create!({