-
Notifications
You must be signed in to change notification settings - Fork 6.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: rescheduling round robin events (emails and calendar events) #12469
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
4 Ignored Deployments
|
Thank you for following the naming conventions! 🙏 Feel free to join our discord and post your PR link to collect XP and win prizes! |
📦 Next.js Bundle Analysis for @calcom/webThis analysis was generated by the Next.js Bundle Analysis action. 🤖 This PR introduced no changes to the JavaScript bundle! 🙌 |
Current Playwright Test Results Summary✅ 327 Passing - Run may still be in progress, this comment will be updated as current testing workflow or job completes... (Last updated on 11/27/2023 05:20:55pm UTC) Run DetailsRunning Workflow PR Update on Github Actions Commit: 6fcff69 Started: 11/27/2023 05:12:01pm UTC
|
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
Booking with Seats Attendees can cancel a seated event time slot
Retry 1 • Initial Attempt |
0% (0)0 / 270 runsfailed over last 7 days |
1.85% (5)5 / 270 runsflaked over last 7 days |
📄 apps/web/playwright/locale.e2e.ts • 13 Flakes
Top 1 Common Error Messages
|
13 Test Cases Affected |
Test Case Results
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
unauthorized user sees correct translations (de) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.87% (-99)-99 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
unauthorized user sees correct translations (ar) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.87% (-99)-99 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
unauthorized user sees correct translations (zh) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.87% (-99)-99 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
unauthorized user sees correct translations (zh-CN) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.87% (-99)-99 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
unauthorized user sees correct translations (zh-TW) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.87% (-99)-99 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
unauthorized user sees correct translations (pt) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.87% (-99)-99 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
unauthorized user sees correct translations (pt-br) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.51% (-98)-98 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
unauthorized user sees correct translations (es-419) should use correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-35.87% (-99)-99 / 276 runsfailed over last 7 days |
35.87% (99)99 / 276 runsflaked over last 7 days |
authorized user sees correct translations (de) should return correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-34.31% (-94)-94 / 274 runsfailed over last 7 days |
36.13% (99)99 / 274 runsflaked over last 7 days |
authorized user sees correct translations (pt-br) should return correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-34.57% (-93)-93 / 269 runsfailed over last 7 days |
36.80% (99)99 / 269 runsflaked over last 7 days |
authorized user sees correct translations (ar) should return correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-36.88% (-97)-97 / 263 runsfailed over last 7 days |
37.26% (98)98 / 263 runsflaked over last 7 days |
authorized user sees changed translations (de->ar) should return correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-13.79% (-36)-36 / 261 runsfailed over last 7 days |
27.59% (72)72 / 261 runsflaked over last 7 days |
authorized user sees changed translations (de->pt-BR) [locale1] should return correct translations and html attributes
Retry 2 • Retry 1 • Initial Attempt |
-14.22% (-32)-32 / 225 runsfailed over last 7 days |
24.89% (56)56 / 225 runsflaked over last 7 days |
📄 apps/web/playwright/webhook.e2e.ts • 1 Flake
Test Case Results
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
FORM_SUBMITTED on submitting user form, triggers user webhook
Retry 1 • Initial Attempt |
1.76% (5)5 / 284 runsfailed over last 7 days |
5.28% (15)15 / 284 runsflaked over last 7 days |
📄 apps/web/playwright/teams.e2e.ts • 2 Flakes
Top 1 Common Error Messages
|
2 Test Cases Affected |
Test Case Results
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
Teams - NonOrg Non admin team members cannot create team in org
Retry 1 • Initial Attempt |
3.40% (10)10 / 294 runsfailed over last 7 days |
29.93% (88)88 / 294 runsflaked over last 7 days |
Teams - Org Can create teams via Wizard
Retry 1 • Initial Attempt |
7.12% (21)21 / 295 runsfailed over last 7 days |
9.83% (29)29 / 295 runsflaked over last 7 days |
📄 packages/embeds/embed-core/playwright/tests/action-based.e2e.ts • 4 Flakes
Top 1 Common Error Messages
|
4 Test Cases Affected |
Test Case Results
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
Popup Tests should be able to reschedule
Retry 2 • Retry 1 • Initial Attempt |
10.85% (32)32 / 295 runsfailed over last 7 days |
85.42% (252)252 / 295 runsflaked over last 7 days |
Popup Tests should open embed iframe on click - Configured with light theme
Retry 1 • Initial Attempt |
0.68% (2)2 / 295 runsfailed over last 7 days |
54.24% (160)160 / 295 runsflaked over last 7 days |
Popup Tests Floating Button Popup Pro User - Configured in App with default setting of system theme should open embed iframe according to system theme when no theme is configured through Embed API
Retry 1 • Initial Attempt |
1.35% (4)4 / 297 runsfailed over last 7 days |
68.69% (204)204 / 297 runsflaked over last 7 days |
Popup Tests should open Routing Forms embed on click
Retry 1 • Initial Attempt |
2.03% (6)6 / 296 runsfailed over last 7 days |
30.07% (89)89 / 296 runsflaked over last 7 days |
📄 apps/web/playwright/settings/upload-avatar.e2e.ts • 1 Flake
Test Case Results
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
UploadAvatar can upload an image
Retry 2 • Retry 1 • Initial Attempt |
0% (0)0 / 272 runsfailed over last 7 days |
8.09% (22)22 / 272 runsflaked over last 7 days |
📄 apps/web/playwright/embed-code-generator.e2e.ts • 2 Flakes
Top 1 Common Error Messages
|
2 Test Cases Affected |
Test Case Results
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
Embed Code Generator Tests Event Types Page open Embed Dialog and choose element-click for First Event Type
Retry 1 • Initial Attempt |
1.02% (3)3 / 295 runsfailed over last 7 days |
3.05% (9)9 / 295 runsflaked over last 7 days |
Embed Code Generator Tests Event Types Page open Embed Dialog and choose floating-popup for First Event Type
Retry 1 • Initial Attempt |
1.02% (3)3 / 294 runsfailed over last 7 days |
3.40% (10)10 / 294 runsflaked over last 7 days |
📄 apps/web/playwright/managed-event-types.e2e.ts • 1 Flake
Test Case Results
Test Case | Last 7 days Failures | Last 7 days Flakes |
---|---|---|
Managed Event Types tests Can create managed event type
Retry 1 • Initial Attempt |
8.87% (26)26 / 293 runsfailed over last 7 days |
8.53% (25)25 / 293 runsflaked over last 7 days |
log.debug("RescheduleOrganizerChanged: Deleting Event and Meeting for previous booking"); | ||
await this.deleteEventsAndMeetings({ booking, event }); | ||
// New event is created in handleNewBooking | ||
} else { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
else part is normal rescheduled logic, nothing changed here
evt.location = updatedEvent.url; | ||
if (changedOrganizer) { | ||
log.debug("RescheduleOrganizerChanged: Deleting Event and Meeting for previous booking"); | ||
await this.deleteEventsAndMeetings({ booking, event }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the organizer changes:
- delete event
- create event with new organizer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once this is merged, we should consider the effect on #12122. Since a completely new calendar event is being created.
|
||
const updatedEvt = { | ||
...evt, | ||
destinationCalendar: originalRescheduledBooking?.destinationCalendar |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If organizer has changed, the destinationCalendar
of evt
would be the new organizer otherwise
@@ -48,619 +49,441 @@ describe("handleNewBooking", () => { | |||
setupAndTeardown(); | |||
|
|||
describe("Reschedule", () => { | |||
test( | |||
`should rechedule an existing booking successfully with Cal Video(Daily Video) | |||
describe("User event-type", () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing changed for User event-type tests
); | ||
}); | ||
}); | ||
describe("Team event-type", () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added new tests here
@@ -2373,7 +2581,7 @@ async function handler( | |||
|
|||
const metadata = videoCallUrl | |||
? { | |||
videoCallUrl: getVideoCallUrlFromCalEvent(evt), | |||
videoCallUrl: getVideoCallUrlFromCalEvent(evt) || videoCallUrl, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes sure that Google Meet links is saved in metadata
expectBookingRequestedEmails({ | ||
booker, | ||
organizer, | ||
expectSuccessfulRoudRobinReschedulingEmails({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expects that roundRobinHost1 receives cancelation email and roundRobinHost2 to receive scheduling email
expectSuccessfulBookingRescheduledEmails({ | ||
booker, | ||
organizer, | ||
expectSuccessfulRoudRobinReschedulingEmails({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expects that round roundRobinHost1 recieves rescheduling email
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes are looking good.
I just had a question about saving the Google Meet links in the metadata. I thought we were trying to move away from relying on metadata. Should the new Meet link be saved as a bookingReference
?
evt.location = updatedEvent.url; | ||
if (changedOrganizer) { | ||
log.debug("RescheduleOrganizerChanged: Deleting Event and Meeting for previous booking"); | ||
await this.deleteEventsAndMeetings({ booking, event }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once this is merged, we should consider the effect on #12122. Since a completely new calendar event is being created.
if (updatedEvent) { | ||
evt.videoCallData = updatedEvent; | ||
evt.location = updatedEvent.url; | ||
if (changedOrganizer) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure how I feel about calling the event manager reschedule and the create methods back to back. How do we feel about calling only one event manager method and handling the deletion and creation of the calendar events?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. IMO reschedule should handle event recreation. But could be done in a follow up
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Totally agree with that, I will do a follow-up.
@joeauyeung We should have it in both booking reference and metadata. I know we are trying to move away from metadata but right now we are still using it for getting the videocall url in webhooks, workflows, etc. |
…lcom#12469) * send the correct booking email for round robin rescheduling * fixing originalBookingMemberEmails * fix calendar event (needs some code refactoring) * refactor rescheduling code * code clean up * add comment * fix event name if host changes * add tests for rr rescheduling emails * fix videoCallUrl of google meet * code clean up * fix destinationCalendar for new booking --------- Co-authored-by: CarinaWolli <wollencarina@gmail.com>
…m#12574) ## What does this PR do? Follow up for calcom#12469 Event creation is now already handled in the reschedule function of EventManager. ## Type of change - [x] Chore (refactoring code, technical debt, workflow improvements) ## How should this be tested? - Same as in calcom#12469
…lcom#12469) * send the correct booking email for round robin rescheduling * fixing originalBookingMemberEmails * fix calendar event (needs some code refactoring) * refactor rescheduling code * code clean up * add comment * fix event name if host changes * add tests for rr rescheduling emails * fix videoCallUrl of google meet * code clean up * fix destinationCalendar for new booking --------- Co-authored-by: CarinaWolli <wollencarina@gmail.com>
…m#12574) ## What does this PR do? Follow up for calcom#12469 Event creation is now already handled in the reschedule function of EventManager. ## Type of change - [x] Chore (refactoring code, technical debt, workflow improvements) ## How should this be tested? - Same as in calcom#12469
What does this PR do?
Fixes issues with rescheduling round-robin events when they are assigned to a new host.
Also fixes that Google Meet link wasn't saved in metadata (videoCallUrl)
Fixes #12350
Fixes #11547
Fixes #12341
Loom Video: https://www.loom.com/share/e8964cbd58d44877a138c9c0b4a9f4e0
Type of change
How should this be tested?
Mandatory Tasks