-
Nice, it looks like you’re done here!
+
Nice, it looks like you're done here!
Complete the exercise to unlock new concepts and exercises.{' '}
diff --git a/app/javascript/components/student/mentoring-session/DiscussionActions.tsx b/app/javascript/components/student/mentoring-session/DiscussionActions.tsx
index 8eaa0bad19..6ff2c69a73 100644
--- a/app/javascript/components/student/mentoring-session/DiscussionActions.tsx
+++ b/app/javascript/components/student/mentoring-session/DiscussionActions.tsx
@@ -1,12 +1,7 @@
import React from 'react'
+import { DiscussionLinks, MentorDiscussion } from '@/components/types'
import { FinishButton } from './FinishButton'
-import { DonationLinks, MentorDiscussion } from '../../types'
-import { GraphicalIcon } from '../../common'
-
-export type DiscussionLinks = {
- exercise: string
- donation: DonationLinks
-}
+import GraphicalIcon from '@/components/common/GraphicalIcon'
export const DiscussionActions = ({
discussion,
diff --git a/app/javascript/components/student/mentoring-session/DiscussionInfo.tsx b/app/javascript/components/student/mentoring-session/DiscussionInfo.tsx
index 3c539ffd11..57fe6f75e6 100644
--- a/app/javascript/components/student/mentoring-session/DiscussionInfo.tsx
+++ b/app/javascript/components/student/mentoring-session/DiscussionInfo.tsx
@@ -9,10 +9,7 @@ import { Mentor } from '../MentoringSession'
import { GraphicalIcon } from '../../common'
import { FinishButton } from './FinishButton'
import { QueryStatus } from 'react-query'
-
-type Links = {
- exercise: string
-}
+import { DiscussionLinks } from './DiscussionActions'
export const DiscussionInfo = ({
discussion,
@@ -28,7 +25,7 @@ export const DiscussionInfo = ({
userHandle: string
iterations: readonly Iteration[]
onIterationScroll: (iteration: Iteration) => void
- links: Links
+ links: DiscussionLinks
status: QueryStatus
}): JSX.Element => {
return (
diff --git a/app/javascript/components/student/mentoring-session/FinishButton.tsx b/app/javascript/components/student/mentoring-session/FinishButton.tsx
index 71094b11d3..51bf47470d 100644
--- a/app/javascript/components/student/mentoring-session/FinishButton.tsx
+++ b/app/javascript/components/student/mentoring-session/FinishButton.tsx
@@ -1,8 +1,7 @@
import React, { useState } from 'react'
import { FinishMentorDiscussionModal } from '../../modals/student/FinishMentorDiscussionModal'
import { ConfirmFinishMentorDiscussionModal } from '../../modals/student/ConfirmFinishMentorDiscussionModal'
-import { MentorDiscussion } from '../../types'
-import { DiscussionLinks } from './DiscussionActions'
+import { DiscussionLinks, MentorDiscussion } from '../../types'
type Status = 'initialized' | 'confirming' | 'finishing'
diff --git a/app/javascript/components/student/mentoring-session/MentoringRequest.tsx b/app/javascript/components/student/mentoring-session/MentoringRequest.tsx
index fabda79c36..cc23ab552b 100644
--- a/app/javascript/components/student/mentoring-session/MentoringRequest.tsx
+++ b/app/javascript/components/student/mentoring-session/MentoringRequest.tsx
@@ -6,16 +6,10 @@ import {
MentorSessionRequest as Request,
MentorSessionTrack as Track,
MentorSessionExercise as Exercise,
-} from '../../types'
+ DiscussionLinks,
+} from '@/components/types'
import { Video } from '../MentoringSession'
-type Links = {
- learnMoreAboutPrivateMentoring: string
- privateMentoring: string
- mentoringGuide: string
- createMentorRequest: string
-}
-
export const MentoringRequest = ({
trackObjectives,
track,
@@ -32,7 +26,7 @@ export const MentoringRequest = ({
request?: Request
latestIteration: Iteration
videos: Video[]
- links: Links
+ links: DiscussionLinks
onCreate: (mentorRequest: Request) => void
}): JSX.Element => {
return request ? (
diff --git a/app/javascript/components/student/mentoring-session/mentoring-request/MentoringRequestForm.tsx b/app/javascript/components/student/mentoring-session/mentoring-request/MentoringRequestForm.tsx
index c62de8467e..7fc0330173 100644
--- a/app/javascript/components/student/mentoring-session/mentoring-request/MentoringRequestForm.tsx
+++ b/app/javascript/components/student/mentoring-session/mentoring-request/MentoringRequestForm.tsx
@@ -4,14 +4,12 @@ import { MedianWaitTime } from '@/components/common/MedianWaitTime'
import CopyToClipboardButton from '@/components/common/CopyToClipboardButton'
import { FormButton } from '@/components/common/FormButton'
import { FetchingBoundary } from '@/components/FetchingBoundary'
-import {
- type Links,
- useMentoringRequest,
-} from './MentoringRequestFormComponents'
+import { useMentoringRequest } from './MentoringRequestFormComponents'
import type {
MentorSessionTrack as Track,
MentorSessionExercise as Exercise,
MentorSessionRequest as Request,
+ DiscussionLinks,
} from '@/components/types'
import {
TrackObjectivesTextArea,
@@ -30,7 +28,7 @@ export const MentoringRequestForm = ({
trackObjectives: string
track: Track
exercise: Exercise
- links: Links
+ links: DiscussionLinks
onSuccess: (mentorRequest: Request) => void
}): JSX.Element => {
const {
diff --git a/app/javascript/components/types.ts b/app/javascript/components/types.ts
index 1d83114d42..f879aef6c1 100644
--- a/app/javascript/components/types.ts
+++ b/app/javascript/components/types.ts
@@ -445,6 +445,19 @@ export type MentorDiscussion = {
}
}
+export type DiscussionLinks = {
+ exercise: string
+ donationLinks: DonationLinks
+} & MentoringRequestLinks
+
+export type MentoredTrackExercise = {
+ slug: string
+ title: string
+ iconUrl: string
+ count: number
+ completedByMentor: boolean
+}
+
export type DonationLinks = {
request: {
endpoint: string
@@ -452,6 +465,7 @@ export type DonationLinks = {
initialData: string
}
}
+ showDonationModal: boolean
userSignedIn: boolean
captchaRequired: boolean
recaptchaSiteKey: string
@@ -460,12 +474,12 @@ export type DonationLinks = {
donate: string
}
}
-export type MentoredTrackExercise = {
- slug: string
- title: string
- iconUrl: string
- count: number
- completedByMentor: boolean
+
+export type MentoringRequestLinks = {
+ learnMoreAboutPrivateMentoring: string
+ privateMentoring: string
+ mentoringGuide: string
+ createMentorRequest: string
}
export type MentoredTrack = {
diff --git a/test/helpers/react_components/student/mentoring_session_test.rb b/test/helpers/react_components/student/mentoring_session_test.rb
index c5113db921..7d1e3b5717 100644
--- a/test/helpers/react_components/student/mentoring_session_test.rb
+++ b/test/helpers/react_components/student/mentoring_session_test.rb
@@ -59,10 +59,11 @@ class ReactComponents::Student::MentoringSessionTest < ReactComponentTestCase
private_mentoring: solution.external_mentoring_request_url,
mentoring_guide: Exercism::Routes.doc_path(:using, "feedback/guide-to-being-mentored"),
donation_links: {
+ show_donation_modal: true,
request: {
- endpoint: Exercism::Routes.api_donations_active_subscription_url,
+ endpoint: Exercism::Routes.current_api_payments_subscriptions_url,
options: {
- initial_data: AssembleActiveSubscription.(student)
+ initial_data: AssembleCurrentSubscription.(student)
}
},
user_signed_in: true,
@@ -87,7 +88,7 @@ class ReactComponents::Student::MentoringSessionTest < ReactComponentTestCase
comment_markdown: "Hello",
updated_at: Time.utc(2016, 12, 25)
- iteration = create :iteration, solution: solution
+ iteration = create(:iteration, solution:)
component = ReactComponents::Student::MentoringSession.new(solution, mentor_request, nil)
component.stubs(current_user: student)
@@ -122,10 +123,11 @@ class ReactComponents::Student::MentoringSessionTest < ReactComponentTestCase
private_mentoring: solution.external_mentoring_request_url,
mentoring_guide: Exercism::Routes.doc_path(:using, "feedback/guide-to-being-mentored"),
donation_links: {
+ show_donation_modal: true,
request: {
- endpoint: Exercism::Routes.api_donations_active_subscription_url,
+ endpoint: Exercism::Routes.current_api_payments_subscriptions_url,
options: {
- initial_data: AssembleActiveSubscription.(student)
+ initial_data: AssembleCurrentSubscription.(student)
}
},
user_signed_in: true,
@@ -139,4 +141,41 @@ class ReactComponents::Student::MentoringSessionTest < ReactComponentTestCase
}
}
end
+
+ test "sets show_donation_modal correctly" do
+ student = create :user
+ solution = create :concept_solution, user: student
+ create(:iteration, solution:)
+ mentor_request = create(:mentor_request, solution:)
+
+ generate_data = proc do
+ component = ReactComponents::Student::MentoringSession.new(solution, mentor_request, nil)
+ component.stubs(current_user: student)
+ component.stubs(user_signed_in?: true)
+ component.to_h
+ end
+
+ # No testimonials shows model
+ assert generate_data.().dig(:links, :donation_links, :show_donation_modal)
+
+ # 1/2/3 testimonials doesn't
+ 3.times do
+ create(:mentor_testimonial, student:)
+ refute generate_data.().dig(:links, :donation_links, :show_donation_modal)
+ end
+
+ # 4 testimonials does
+ create(:mentor_testimonial, student:)
+ assert generate_data.().dig(:links, :donation_links, :show_donation_modal)
+
+ # 5/6/7/8 testimonials doesn't
+ 4.times do
+ create(:mentor_testimonial, student:)
+ refute generate_data.().dig(:links, :donation_links, :show_donation_modal)
+ end
+
+ # 9 testimonials does
+ create(:mentor_testimonial, student:)
+ assert generate_data.().dig(:links, :donation_links, :show_donation_modal)
+ end
end
diff --git a/test/system/flows/student/finish_mentor_discussion/happy_test.rb b/test/system/flows/student/finish_mentor_discussion/happy_test.rb
index 2f29a51fdb..5ba0755346 100644
--- a/test/system/flows/student/finish_mentor_discussion/happy_test.rb
+++ b/test/system/flows/student/finish_mentor_discussion/happy_test.rb
@@ -30,9 +30,9 @@ class HappyTest < ApplicationSystemTestCase
click_on "It was good!"
fill_in "Leave #{discussion.mentor.handle} a testimonial (optional)", with: "Good mentor!"
click_on "Finish"
- click_on "Back to the exercise"
+ click_on "Continue to exercise"
- assert_text "Nice, it looks like you’re done here!"
+ assert_text "Nice, it looks like you're done here!"
end
end
@@ -58,7 +58,7 @@ class HappyTest < ApplicationSystemTestCase
click_on "Skip"
wait_for_redirect
- assert_text "Nice, it looks like you’re done here!"
+ assert_text "Nice, it looks like you're done here!"
end
end
end
diff --git a/test/system/flows/student/finish_mentor_discussion/satisfied_test.rb b/test/system/flows/student/finish_mentor_discussion/satisfied_test.rb
index 9af3bcdef3..9e555d724b 100644
--- a/test/system/flows/student/finish_mentor_discussion/satisfied_test.rb
+++ b/test/system/flows/student/finish_mentor_discussion/satisfied_test.rb
@@ -31,7 +31,7 @@ class SatisfiedTest < ApplicationSystemTestCase
click_on "No thanks"
wait_for_redirect
- assert_text "Nice, it looks like you’re done here!"
+ assert_text "Nice, it looks like you're done here!"
end
end
diff --git a/test/system/flows/student/mentor_finished_discussion_test.rb b/test/system/flows/student/mentor_finished_discussion_test.rb
index c436a2fbc9..4d6005c33e 100644
--- a/test/system/flows/student/mentor_finished_discussion_test.rb
+++ b/test/system/flows/student/mentor_finished_discussion_test.rb
@@ -48,9 +48,9 @@ class MentorFinishedDiscussionTest < ApplicationSystemTestCase
click_on "It was good!"
fill_in "Leave #{discussion.mentor.handle} a testimonial (optional)", with: "Good mentor!"
click_on "Finish"
- click_on "Back to the exercise"
+ click_on "Continue to exercise"
- assert_text "Nice, it looks like you’re done here!"
+ assert_text "Want to try another mentor?"
end
end
end