|
60975
|
1314
|
12
|
2026-04-21T06:28:26.946749+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752906946_m1.jpg...
|
Firefox
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira — Work...
|
True
|
jiminny.atlassian.net/jira/software/c/projects/JY/ jiminny.atlassian.net/jira/software/c/projects/JY/boards/37...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
1 Notification
1 Notification
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Link contributing teams
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
Deployments
Deployments
Archived work items
Archived work items
Docs
Docs
Shortcuts
Shortcuts
Slack integration
Slack integration
Reporting Center
Reporting Center
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
7
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
Cost-effective and faster nudges, Edit Parent
COST-EFFECTIVE AND FASTER NUDGES
Backlog
JY-20489
JY-20489
5
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ REPORTS
Backlog
JY-20372
JY-20372
6
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
AJ Reports, Edit Parent
AJ REPORTS
Backlog
JY-20157
JY-20157
2
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
Backlog
JY-20352
JY-20352
4
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
In DEV
IN DEV
2
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-9712
JY-9712
4.5
pull request
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
Code Review
CODE REVIEW
3
Create work item
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
AUTO-DETECTED ACTIVITY TYPE
Code Review
JY-19798
JY-19798
1
pull request
Create work item
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
Platform Stability, Edit Parent
PLATFORM STABILITY
Code Review
JY-20553
JY-20553
3.5
merged pull request
Create work item
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
Edit summary
Edit summary
Support tickets, Edit Parent
SUPPORT TICKETS...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Space navigation","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Space navigation","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 Notification","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Platform Team","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform Team","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link contributing teams","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Board actions","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Share","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Automation","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give feedback","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Give feedback","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Enter full screen","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enter full screen","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Summary","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Timeline","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timeline","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Backlog","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Backlog","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Active sprints","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active sprints","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Calendar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Testing Board","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Testing Board","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"List","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"List","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forms","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forms","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Components","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Components","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Development","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Development","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Releases","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Releases","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deployments","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deployments","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Docs","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Docs","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Shortcuts","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shortcuts","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add to navigation","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"As you type to search or apply filters, the board updates with work items to match.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search on current page","depth":11,"placeholder":"Search board","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Filter by assignee","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Filter assignees by Lukas Kovalik","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Ivanov","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Nikolov","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Yankov","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Steliyan Georgiev","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Unassigned","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Epic","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Epic","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Type","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Type","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Label","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Label","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Quick filters","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Quick filters","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Complete sprint","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Complete sprint","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Sprint details","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint details","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Group by Queries","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Group","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":": Queries","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sprint insights","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint insights","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View settings","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View settings","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Ready For DEV","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"READY FOR DEV","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rework Nudges - Phase 2 - change Nudges to use the indexed_at period","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cost-effective and faster nudges, Edit Parent","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Investigate and fix why exceed Fontawesome package limits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ready for Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20564","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20564","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Reports > Empty page design and promotion","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Send email notification when the report is not generated","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"AJ Reports, Edit Parent","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AJ REPORTS","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notify a user before the AJ Report expires","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20508","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20508","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sync opportunities without a local owner (user_id is null)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20352","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20352","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.0,"top":0.0,"width":0.0055555557,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Upgrade BE libraries - Apr","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19957","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19957","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.0,"top":0.06388889,"width":0.0034722222,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"In DEV","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IN DEV","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Change forever nudges to 1 year expiration","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4.5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Review - Q1 - Summary/Action items/Key Points","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GROWTH - MAINTAIN OUR COMPETITIVE POSITION","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20566","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20566","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Code Review","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CODE REVIEW","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Evaluation for AI Activity Types","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AUTO-DETECTED ACTIVITY TYPE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19798","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19798","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-20553 Delays in CRM Sync. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delays in CRM Sync","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Platform Stability, Edit Parent","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20553","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Les Mills activity types not pulling in","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit summary","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit summary","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Support tickets, Edit Parent","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8533556861848701035
|
1358240646877925583
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
1 Notification
1 Notification
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Link contributing teams
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
Deployments
Deployments
Archived work items
Archived work items
Docs
Docs
Shortcuts
Shortcuts
Slack integration
Slack integration
Reporting Center
Reporting Center
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
7
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
Cost-effective and faster nudges, Edit Parent
COST-EFFECTIVE AND FASTER NUDGES
Backlog
JY-20489
JY-20489
5
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ REPORTS
Backlog
JY-20372
JY-20372
6
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
AJ Reports, Edit Parent
AJ REPORTS
Backlog
JY-20157
JY-20157
2
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
Backlog
JY-20352
JY-20352
4
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
In DEV
IN DEV
2
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-9712
JY-9712
4.5
pull request
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
Code Review
CODE REVIEW
3
Create work item
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
AUTO-DETECTED ACTIVITY TYPE
Code Review
JY-19798
JY-19798
1
pull request
Create work item
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
Platform Stability, Edit Parent
PLATFORM STABILITY
Code Review
JY-20553
JY-20553
3.5
merged pull request
Create work item
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
Edit summary
Edit summary
Support tickets, Edit Parent
SUPPORT TICKETS...
|
NULL
|
|
10428
|
206
|
23
|
2026-04-14T08:42:28.873276+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776156148873_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpall• Support Daily • in 3 h 18 m100% <47Tue 14 Apr 11:42:28Jiminny ...# Starred8platform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan Georgiev84MessagesAdd canvas+SANCOTAUVURE 20.00 AIтова ще гледа всичко applicable за днес (ако не понедлник или Today ~лесец е само daily)крон го пуска през нощтака че мануално пусни при тестванеако трябва да тестваме други репорти може да променя команда за тестване да приема параметьр за report template и д си пускамеопределен когато тествамеNikolay Yankov 10:41 AMможеш ли да я рьннеш ти командатаLukas Kovalik 10:43 AMдаNikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result нo e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasNewMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa...
|
NULL
|
-8533190337212252611
|
NULL
|
click
|
ocr
|
NULL
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpall• Support Daily • in 3 h 18 m100% <47Tue 14 Apr 11:42:28Jiminny ...# Starred8platform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan Georgiev84MessagesAdd canvas+SANCOTAUVURE 20.00 AIтова ще гледа всичко applicable за днес (ако не понедлник или Today ~лесец е само daily)крон го пуска през нощтака че мануално пусни при тестванеако трябва да тестваме други репорти може да променя команда за тестване да приема параметьр за report template и д си пускамеопределен когато тествамеNikolay Yankov 10:41 AMможеш ли да я рьннеш ти командатаLukas Kovalik 10:43 AMдаNikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result нo e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasNewMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa...
|
NULL
|
|
66967
|
NULL
|
0
|
2026-04-21T15:20:00.435618+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776784800435_m2.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - Jiminny Inc - 2 new items - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Aneliya Angelova
Mario Georgiev
Nikolay Yankov
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Ves
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Aneliya Angelova
Today at 5:45:34 PM
5:45 PM
@Nikolay Yankov
@Nikolay Yankov
Ники има една промяна която Галя иска в колоната SHARED
значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като "Shared With"
Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна
Today at 5:45:41 PM
5:45
тази промяна за теб ли е
Nikolay Yankov
Today at 5:48:38 PM
5:48 PM
ами от BE идва инфото какво да се покаже в тази колона -
recipients
полето
Today at 5:49:13 PM
5:49
Лукаш, можеш ли да го промениш
Aneliya Angelova
Today at 5:49:18 PM
5:49 PM
oki
Today at 5:49:35 PM
5:49
ще го опиша в сторито и това
Lukas Kovalik
Today at 5:50:29 PM
5:50 PM
да може
Today at 5:51:41 PM
5:51
това е само при Ask Jiminny или всички
Aneliya Angelova
Today at 5:52:05 PM
5:52 PM
Ask Jiminny
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 5:55:21 PM
5:55 PM
kiosk-нах се с Аделина да видя за
Shared By
и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)
Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато
какво мислите?
Untitled.png
Toggle file
Untitled.png
Download Untitled.png
Share file: Untitled.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 6:15:00 PM
6:15 PM
съгласна съм с Ники
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 6:18:27 PM
6:18 PM
аз няма претенции, мога да ги пропусна ако user не е creator
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
is typing
Todor Stamatov, Direct Message, 1 of 15 suggestions
Nikolay Yankov is typing...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.0056515955,"top":0.058260176,"width":0.011968086,"height":0.028731046},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.0029920214,"top":0.10055866,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.0066489363,"top":0.13806863,"width":0.009973404,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.0029920214,"top":0.15482841,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.0076462766,"top":0.19233839,"width":0.007978723,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.0029920214,"top":0.20909816,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.004986702,"top":0.24660814,"width":0.012965426,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.0029920214,"top":0.26336792,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0076462766,"top":0.3008779,"width":0.0076462766,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.0029920214,"top":0.31763768,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.00731383,"top":0.35514766,"width":0.008643617,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.0029920214,"top":0.3719074,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.006981383,"top":0.4094174,"width":0.008976064,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.042220745,"top":0.09736632,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.042220745,"top":0.11971269,"width":0.03856383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.042220745,"top":0.14205906,"width":0.01662234,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.042220745,"top":0.16440542,"width":0.01761968,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.042220745,"top":0.1867518,"width":0.016954787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.042220745,"top":0.20909816,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.042220745,"top":0.23144454,"width":0.04488032,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.28411812,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.07945479,"top":0.28411812,"width":0.0063164895,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.08211436,"top":0.28411812,"width":0.014295213,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.09607713,"top":0.30167598,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.09607713,"top":0.30167598,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.3064645,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"bounds":{"left":0.042220745,"top":0.32881084,"width":0.033909574,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.042220745,"top":0.35115722,"width":0.032912236,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.042220745,"top":0.3735036,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"bounds":{"left":0.042220745,"top":0.39584997,"width":0.03523936,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"bounds":{"left":0.042220745,"top":0.41819632,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.042220745,"top":0.4405427,"width":0.026263298,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.042220745,"top":0.46288908,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.042220745,"top":0.48523542,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.042220745,"top":0.50758183,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.042220745,"top":0.52992815,"width":0.030585106,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.042220745,"top":0.5522745,"width":0.028922873,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"bounds":{"left":0.042220745,"top":0.5746209,"width":0.031914894,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"bounds":{"left":0.042220745,"top":0.5969673,"width":0.0076462766,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.042220745,"top":0.64964086,"width":0.022273935,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.042220745,"top":0.67198724,"width":0.011635638,"height":0.014365523},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.10206117,"top":0.09177973,"width":0.030585106,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.111369684,"top":0.10055866,"width":0.01861702,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.13397606,"top":0.09177973,"width":0.033909574,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"bounds":{"left":0.14328457,"top":0.10055866,"width":0.021941489,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.16921543,"top":0.09177973,"width":0.020944148,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.17852394,"top":0.10055866,"width":0.008976064,"height":0.012769354},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.19115691,"top":0.09177973,"width":0.010970744,"height":0.030327214},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.015625,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.0076462766,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.013962766,"height":0.0007980846},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.15026596,"top":0.12689546,"width":0.025265958,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:45:34 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:45 PM","depth":25,"role_description":"text"},{"role":"AXLink","text":"@Nikolay Yankov","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"@Nikolay Yankov","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Ники има една промяна която Галя иска в колоната SHARED","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като \"Shared With\"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:45:41 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:45","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"тази промяна за теб ли е","depth":25,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:48:38 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:48 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"ами от BE идва инфото какво да се покаже в тази колона -","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"recipients","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"полето","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:13 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, можеш ли да го промениш","depth":25,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:18 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"oki","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:35 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"ще го опиша в сторито и това","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:50:29 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:50 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"да може","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:51:41 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:51","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"това е само при Ask Jiminny или всички","depth":25,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"bounds":{"left":0.11801862,"top":0.121308856,"width":0.038896278,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.15658244,"top":0.12290503,"width":0.0029920214,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Today at 5:52:05 PM","depth":24,"bounds":{"left":0.15924202,"top":0.12529927,"width":0.015292553,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:52 PM","depth":25,"bounds":{"left":0.15924202,"top":0.12529927,"width":0.015292553,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"Ask Jiminny","depth":25,"bounds":{"left":0.11801862,"top":0.14046289,"width":0.025930852,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.13730054,"top":0.11572227,"width":0.010638298,"height":0.018355945},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"bounds":{"left":0.14793883,"top":0.11572227,"width":0.010638298,"height":0.018355945},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"bounds":{"left":0.15857713,"top":0.11572227,"width":0.010638298,"height":0.018355945},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.16921543,"top":0.11572227,"width":0.010638298,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"bounds":{"left":0.17985372,"top":0.11572227,"width":0.010638298,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"bounds":{"left":0.22340426,"top":0.11572227,"width":0.0003324468,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"bounds":{"left":0.22340426,"top":0.11572227,"width":0.0003324468,"height":0.018355945},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"bounds":{"left":0.22340426,"top":0.11572227,"width":0.0003324468,"height":0.018355945},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"bounds":{"left":0.11801862,"top":0.16280925,"width":0.034242023,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.15226063,"top":0.16440542,"width":0.0026595744,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Today at 5:55:21 PM","depth":24,"bounds":{"left":0.1549202,"top":0.16679968,"width":0.014960106,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:55 PM","depth":25,"bounds":{"left":0.1549202,"top":0.16679968,"width":0.014960106,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"kiosk-нах се с Аделина да видя за","depth":25,"bounds":{"left":0.11801862,"top":0.1819633,"width":0.078457445,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"Shared By","depth":26,"bounds":{"left":0.1974734,"top":0.18435754,"width":0.021941489,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)","depth":25,"bounds":{"left":0.11801862,"top":0.19952115,"width":0.10139628,"height":0.06783719},"role_description":"text"},{"role":"AXStaticText","text":"Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато","depth":25,"bounds":{"left":0.11801862,"top":0.2697526,"width":0.10073138,"height":0.05027933},"role_description":"text"},{"role":"AXStaticText","text":"какво мислите?","depth":25,"bounds":{"left":0.11801862,"top":0.32242617,"width":0.035904255,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"Untitled.png","depth":25,"bounds":{"left":0.11801862,"top":0.34397447,"width":0.023603724,"height":0.013567438},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.14128989,"top":0.34317636,"width":0.0016622341,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"bounds":{"left":0.14261968,"top":0.3423783,"width":0.006981383,"height":0.016759777},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Untitled.png","depth":27,"bounds":{"left":0.11801862,"top":0.3623304,"width":0.1043883,"height":0.118914604},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download Untitled.png","depth":28,"bounds":{"left":0.17519946,"top":0.3735036,"width":0.010638298,"height":0.026336791},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share file: Untitled.png","depth":28,"bounds":{"left":0.18583776,"top":0.3735036,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View canvas details","depth":28,"bounds":{"left":0.19647606,"top":0.3735036,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":28,"bounds":{"left":0.20711437,"top":0.3735036,"width":0.010638298,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.13730054,"top":0.14924182,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"bounds":{"left":0.14793883,"top":0.14924182,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"bounds":{"left":0.15857713,"top":0.14924182,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.16921543,"top":0.14924182,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"bounds":{"left":0.17985372,"top":0.14924182,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"bounds":{"left":0.22340426,"top":0.14924182,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"bounds":{"left":0.22340426,"top":0.14924182,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"bounds":{"left":0.22340426,"top":0.14924182,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":22,"bounds":{"left":0.21343085,"top":0.48044693,"width":0.00930851,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"bounds":{"left":0.11801862,"top":0.49002394,"width":0.038896278,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.15658244,"top":0.49162012,"width":0.0029920214,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Today at 6:15:00 PM","depth":24,"bounds":{"left":0.15924202,"top":0.49401435,"width":0.015292553,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6:15 PM","depth":25,"bounds":{"left":0.15924202,"top":0.49401435,"width":0.015292553,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"съгласна съм с Ники","depth":25,"bounds":{"left":0.11801862,"top":0.509178,"width":0.04720745,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.13730054,"top":0.4764565,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"bounds":{"left":0.14793883,"top":0.4764565,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"bounds":{"left":0.15857713,"top":0.4764565,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.16921543,"top":0.4764565,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"bounds":{"left":0.17985372,"top":0.4764565,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"bounds":{"left":0.22340426,"top":0.4764565,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"bounds":{"left":0.22340426,"top":0.4764565,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"bounds":{"left":0.22340426,"top":0.4764565,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.11801862,"top":0.53152436,"width":0.030917553,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.14860372,"top":0.5331205,"width":0.0029920214,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Today at 6:18:27 PM","depth":24,"bounds":{"left":0.1512633,"top":0.5355148,"width":0.015292553,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6:18 PM","depth":25,"bounds":{"left":0.1512633,"top":0.5355148,"width":0.015292553,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"аз няма претенции, мога да ги пропусна ако user не е creator","depth":25,"bounds":{"left":0.11801862,"top":0.5506784,"width":0.10139628,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"bounds":{"left":0.11801862,"top":0.58739024,"width":0.014295213,"height":0.019952115},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"bounds":{"left":0.12732713,"top":0.5913807,"width":0.0023271276,"height":0.011971269},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.13331117,"top":0.58739024,"width":0.011635638,"height":0.019952115},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.13730054,"top":0.5179569,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"bounds":{"left":0.14793883,"top":0.5179569,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"bounds":{"left":0.15857713,"top":0.5179569,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.16921543,"top":0.5179569,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"bounds":{"left":0.17985372,"top":0.5179569,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"bounds":{"left":0.22340426,"top":0.5179569,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"bounds":{"left":0.22340426,"top":0.5179569,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"bounds":{"left":0.22340426,"top":0.5179569,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":23,"bounds":{"left":0.10372341,"top":0.6272945,"width":0.118351065,"height":0.030327214},"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Yankov","depth":19,"bounds":{"left":0.107380316,"top":0.6943336,"width":0.023603724,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"is typing","depth":19,"bounds":{"left":0.1306516,"top":0.6943336,"width":0.013962766,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov, Direct Message, 1 of 15 suggestions","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.026263298,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov is typing","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.015625,"height":0.0007980846},"role_description":"text"}]...
|
-8533084208619472249
|
-1207786247622066063
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Aneliya Angelova
Mario Georgiev
Nikolay Yankov
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Ves
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Aneliya Angelova
Today at 5:45:34 PM
5:45 PM
@Nikolay Yankov
@Nikolay Yankov
Ники има една промяна която Галя иска в колоната SHARED
значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като "Shared With"
Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна
Today at 5:45:41 PM
5:45
тази промяна за теб ли е
Nikolay Yankov
Today at 5:48:38 PM
5:48 PM
ами от BE идва инфото какво да се покаже в тази колона -
recipients
полето
Today at 5:49:13 PM
5:49
Лукаш, можеш ли да го промениш
Aneliya Angelova
Today at 5:49:18 PM
5:49 PM
oki
Today at 5:49:35 PM
5:49
ще го опиша в сторито и това
Lukas Kovalik
Today at 5:50:29 PM
5:50 PM
да може
Today at 5:51:41 PM
5:51
това е само при Ask Jiminny или всички
Aneliya Angelova
Today at 5:52:05 PM
5:52 PM
Ask Jiminny
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 5:55:21 PM
5:55 PM
kiosk-нах се с Аделина да видя за
Shared By
и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)
Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато
какво мислите?
Untitled.png
Toggle file
Untitled.png
Download Untitled.png
Share file: Untitled.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 6:15:00 PM
6:15 PM
съгласна съм с Ники
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 6:18:27 PM
6:18 PM
аз няма претенции, мога да ги пропусна ако user не е creator
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
is typing
Todor Stamatov, Direct Message, 1 of 15 suggestions
Nikolay Yankov is typing
HomeActivitsMoreSlackcalVIewJiminny ...# platform-tickets# product launchesa random# releases# support# thank-yous# the people of iimi.ó Direct messages(3 Aneliya Angelova, ...f. Aneliya AngelovaMario Georgiev• Nikolav YankovSs: Todor StamatovP Gabriela DurevalPetko Kashinski8 Vasil VasilevNikolav NikolovGalya DimitrovaA Stefka Stovanova#Ctovan TomowStovan TaneyNikolav IvanovVes::: AppsJira CloudTostRecordSelector.phoT ResolvecompanvNameByEmaC) TimePeriod terator.ono> Mimport›M InternallKioskv N AutomatedRenortsC) ActivitvTvoeService.ohoC) Ask.liminnvRenortActivitvS(c) AutomatedRenortsCallbackC AutomatedReportsService.(C) Dea|StadecService nhn(C) RecinientsService nhnmistonWindowhelp@ Describe what you are looking for* Aneliya Angelova, ...MessagesAdd canvaUr FilesAhellya Angelc TodayAsk JiminnyNikolay Yankov 5:55PMkiosk-нaх cе с Аделина да видя за Shared вукогото е шеонато, тя вижла и всичкиостанли с които е шернато (в response-a нarequest-a, нe в UDМисля си, че ще е лобре ла го запечатаметова ла не expose-ва информация за всички.с които е шернатокакво мислитеUntitled.ongaкepoпskepository.onp(C) Service.php© Field.phpervice.phpOkeporcontroller.onpC)AutomatedReportsSendcommano.ong©) AutomatedReportsServiceTest.php©)ActivityLogged.php© AutomatedReportsCallbackService.phg© RequestGenerateAskJi:Results(Collection SautomatedReportResults): arraythis->transformReportType(Sreport->getTypeO)).chis->oenerarekeporckesulcUown LoadurL saucomareokeporckesuLco>generateReportResultViewUrl(SautomatedReportResult)automatedReportResult->getbeneratedAto?->to1so8601Strina0.Aneliya Angelova 6:15 PMсьгласна сьм с никиLukas Kovalik 6:18 PMаз няма претенции, мога да ги пропусна акоuser He e creatorMessage Aneliya Angetova, Nikolay Yankov, Steli..+ Aa €'sAutomatedRenort Srenort): arravl-Cnpator 02->aetllund0array_filterdents(Sreport->getRecipientsO).fient): bool => Srecipient['id'] !== $creatorUuid,Report)) {... arrayvalues(sth1s->transtormbroupsteam: Sreport-›getreamo, groupsids: Sreport->getbroupso0)...Sreciplents)3 usagespublic function hasCallTypeConference(AutomatedReport $report): bool{...;3 usaaespublic function hasCallTypeDialer(AutomatedReport $report): boolf...}tnansformens1 usageprivate function transformTeam(Team Steam): array{...}A102 X3 X34 ^ V Q 161166175177—179182_184=1891 187_193192— 194196200204=custom.log4 SF [jiminny@localhost] X# concole [ppon1A ho_local Uiminny@localnostA console (EU]report-not-generated.blade.phgC) sendreportNotGenerateamallJob.phpA console [STAGING]e jiminnyFELECT * FROM activity_searches whereELECT * FROM activity search filters WiEKe aLLvi SEN-D18 A14 22 24 ME"ELECT * FROM automated_reports where 1d = 68)IPDATE automated_reports set playbook categories = NULL where id¡ELECT * FROM automated_report_results where id = 275;¡ELECT * FROM automated_reports order by id desc;ELECT * FROM automated_report_results order by id desc;ielect * from activity_searches where user_id = 143;elect * From ask anvthina nromnts.¡ELECT * FROM groups WHERE id = 1439;ELECT * FROM users WHERE group_id = 1439;ielect * from permissions; # 158elect x tron roleselect * from permission_roleielect * from teams where id = 1:ielect * from groups q JOIN playbooks p 1..n<->1: on g.playbook idelect * trom qroups where 1d = 281ielect * from playbooks where team id = 1:elect * trom playbooks where 10 = 1791ielect * from playbook categories where id = 1391:elect * trom users where 10 = 1451ielect * from crm profiles where user 1d = 145%elect * from activities where crm_configuration_id = 39 and typend crm orovider id IS NOT NULL ORDER by id desc:elect * from activities where id = 422003: # 00U04000000B6foMACELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeROM automated renont results anOIN automated_reports a ON a.id = ar.report.idTHERE a.type ='ask_jiminnyITMTT 10•HELECTautomated_report_results.* FROMNNEP IOTM 'automatod nonontelMHEpsautomated_report_results'.'report_id' = automated_reports"automatod nonont noculte' 'aononatod at'TC MOT MuLIANDautomated_reports'.'team_id' = 1AND JSON_CONTAINS('automated_reports'.'recipients'. 1635, '$."yAsk anvthina (84-D+ « Code IClaude Qnus 4.7 Medium100% SzTue 21 Apr 18:20:00CascadeReview Planhat IntearAutomated Reports RCalendar Multi-Domal+O •run tests and fix if not passingdeste/umt/Reposcor/es/Au tona tedheportsReposttorytest.php lest5/inst/Pol1ctes/CanAcCe3sA.Reportstest. php/tects/linit/Policies/GanAcceccAiRenortsTect.ohn 2>61PHPUnit 11.5.55 by Sebastian Beramann and contrilbutors.PhP 0.3:30Configuration: /home/jaminny/phpunit.xml95 4 452 127939 / 453 ( 419A|| 453 tests pass (6 pre-existina skiooed. 5 unrelated PHPUnit deprecation notices). No fixes needed.Teal aePo. 4 spac...
|
66965
|
|
66968
|
NULL
|
0
|
2026-04-21T15:20:00.435559+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776784800435_m1.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - Jiminny Inc - 2 new items - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Aneliya Angelova
Mario Georgiev
Nikolay Yankov
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Ves
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Aneliya Angelova
Today at 5:45:34 PM
5:45 PM
@Nikolay Yankov
@Nikolay Yankov
Ники има една промяна която Галя иска в колоната SHARED
значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като "Shared With"
Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна
Today at 5:45:41 PM
5:45
тази промяна за теб ли е
Nikolay Yankov
Today at 5:48:38 PM
5:48 PM
ами от BE идва инфото какво да се покаже в тази колона -
recipients
полето
Today at 5:49:13 PM
5:49
Лукаш, можеш ли да го промениш
Aneliya Angelova
Today at 5:49:18 PM
5:49 PM
oki
Today at 5:49:35 PM
5:49
ще го опиша в сторито и това
Lukas Kovalik
Today at 5:50:29 PM
5:50 PM
да може
Today at 5:51:41 PM
5:51
това е само при Ask Jiminny или всички
Aneliya Angelova
Today at 5:52:05 PM
5:52 PM
Ask Jiminny
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 5:55:21 PM
5:55 PM
kiosk-нах се с Аделина да видя за
Shared By
и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)
Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато
какво мислите?
Untitled.png
Toggle file
Untitled.png
Download Untitled.png
Share file: Untitled.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 6:15:00 PM
6:15 PM
съгласна съм с Ники
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 6:18:27 PM
6:18 PM
аз няма претенции, мога да ги пропусна ако user не е creator
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
is typing
Todor Stamatov, Direct Message, 1 of 15 suggestions
Nikolay Yankov is typing...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:45:34 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:45 PM","depth":25,"role_description":"text"},{"role":"AXLink","text":"@Nikolay Yankov","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"@Nikolay Yankov","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Ники има една промяна която Галя иска в колоната SHARED","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като \"Shared With\"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:45:41 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:45","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"тази промяна за теб ли е","depth":25,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:48:38 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:48 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"ами от BE идва инфото какво да се покаже в тази колона -","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"recipients","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"полето","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:13 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, можеш ли да го промениш","depth":25,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:18 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"oki","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:35 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"ще го опиша в сторито и това","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:50:29 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:50 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"да може","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:51:41 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:51","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"това е само при Ask Jiminny или всички","depth":25,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:52:05 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:52 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Ask Jiminny","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:55:21 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:55 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"kiosk-нах се с Аделина да видя за","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Shared By","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"какво мислите?","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Untitled.png","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Untitled.png","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download Untitled.png","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share file: Untitled.png","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View canvas details","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":28,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":22,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 6:15:00 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6:15 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"съгласна съм с Ники","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 6:18:27 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6:18 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"аз няма претенции, мога да ги пропусна ако user не е creator","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Yankov","depth":19,"role_description":"text"},{"role":"AXStaticText","text":"is typing","depth":19,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov, Direct Message, 1 of 15 suggestions","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov is typing","depth":11,"role_description":"text"}]...
|
-8533084208619472249
|
-1207786247622066063
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Aneliya Angelova
Mario Georgiev
Nikolay Yankov
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Ves
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Aneliya Angelova
Today at 5:45:34 PM
5:45 PM
@Nikolay Yankov
@Nikolay Yankov
Ники има една промяна която Галя иска в колоната SHARED
значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като "Shared With"
Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна
Today at 5:45:41 PM
5:45
тази промяна за теб ли е
Nikolay Yankov
Today at 5:48:38 PM
5:48 PM
ами от BE идва инфото какво да се покаже в тази колона -
recipients
полето
Today at 5:49:13 PM
5:49
Лукаш, можеш ли да го промениш
Aneliya Angelova
Today at 5:49:18 PM
5:49 PM
oki
Today at 5:49:35 PM
5:49
ще го опиша в сторито и това
Lukas Kovalik
Today at 5:50:29 PM
5:50 PM
да може
Today at 5:51:41 PM
5:51
това е само при Ask Jiminny или всички
Aneliya Angelova
Today at 5:52:05 PM
5:52 PM
Ask Jiminny
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 5:55:21 PM
5:55 PM
kiosk-нах се с Аделина да видя за
Shared By
и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)
Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато
какво мислите?
Untitled.png
Toggle file
Untitled.png
Download Untitled.png
Share file: Untitled.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 6:15:00 PM
6:15 PM
съгласна съм с Ники
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 6:18:27 PM
6:18 PM
аз няма претенции, мога да ги пропусна ако user не е creator
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
is typing
Todor Stamatov, Direct Message, 1 of 15 suggestions
Nikolay Yankov is typing
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpБГ100% <78-zsh* Build full day activity...• *4|DOCKER-zshworker-nudges:worker-nudges_00: started₴2-zshscreenpipe*What's next:Try Docker Debug for seamless, persistent debugging tools in any container or image + docker debug docker_lamp_1Learn moreat [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfixdockerexec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime:8.3.30Running analysis on 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfigdefault from-php-cs-fixer.dist.php".5609/5609100%= 285-zsh86Tue 21 Apr 18:20:00APP (-zsh)T₴1+Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ||...
|
66966
|
|
66977
|
1509
|
3
|
2026-04-21T15:21:04.194009+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776784864194_m1.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - Jiminny Inc - 2 new items - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Aneliya Angelova
Mario Georgiev
Nikolay Yankov
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Ves
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Aneliya Angelova
Today at 5:45:34 PM
5:45 PM
@Nikolay Yankov
@Nikolay Yankov
Ники има една промяна която Галя иска в колоната SHARED
значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като "Shared With"
Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна
Today at 5:45:41 PM
5:45
тази промяна за теб ли е
Nikolay Yankov
Today at 5:48:38 PM
5:48 PM
ами от BE идва инфото какво да се покаже в тази колона -
recipients
полето
Today at 5:49:13 PM
5:49
Лукаш, можеш ли да го промениш
Aneliya Angelova
Today at 5:49:18 PM
5:49 PM
oki
Today at 5:49:35 PM
5:49
ще го опиша в сторито и това
Lukas Kovalik
Today at 5:50:29 PM
5:50 PM
да може
Today at 5:51:41 PM
5:51
това е само при Ask Jiminny или всички
Aneliya Angelova
Today at 5:52:05 PM
5:52 PM
Ask Jiminny
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 5:55:21 PM
5:55 PM
kiosk-нах се с Аделина да видя за
Shared By
и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)
Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато
какво мислите?
Untitled.png
Toggle file
Untitled.png
Download Untitled.png
Share file: Untitled.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 6:15:00 PM
6:15 PM
съгласна съм с Ники
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 6:18:27 PM
6:18 PM
аз няма претенции, мога да ги пропусна ако user не е creator
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
is typing
Todor Stamatov, Direct Message, 1 of 15 suggestions
Nikolay Yankov is typing...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:45:34 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:45 PM","depth":25,"role_description":"text"},{"role":"AXLink","text":"@Nikolay Yankov","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"@Nikolay Yankov","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Ники има една промяна която Галя иска в колоната SHARED","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като \"Shared With\"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:45:41 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:45","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"тази промяна за теб ли е","depth":25,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:48:38 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:48 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"ами от BE идва инфото какво да се покаже в тази колона -","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"recipients","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"полето","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:13 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, можеш ли да го промениш","depth":25,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:18 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"oki","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:49:35 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:49","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"ще го опиша в сторито и това","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:50:29 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:50 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"да може","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 5:51:41 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:51","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"това е само при Ask Jiminny или всички","depth":25,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:52:05 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:52 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Ask Jiminny","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 5:55:21 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5:55 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"kiosk-нах се с Аделина да видя за","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Shared By","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"какво мислите?","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Untitled.png","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Untitled.png","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download Untitled.png","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share file: Untitled.png","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View canvas details","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":28,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":22,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 6:15:00 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6:15 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"съгласна съм с Ники","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 6:18:27 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6:18 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"аз няма претенции, мога да ги пропусна ако user не е creator","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Yankov","depth":19,"role_description":"text"},{"role":"AXStaticText","text":"is typing","depth":19,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov, Direct Message, 1 of 15 suggestions","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov is typing","depth":11,"role_description":"text"}]...
|
-8533084208619472249
|
-1207786247622066063
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Aneliya Angelova
Mario Georgiev
Nikolay Yankov
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Ves
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Aneliya Angelova
Today at 5:45:34 PM
5:45 PM
@Nikolay Yankov
@Nikolay Yankov
Ники има една промяна която Галя иска в колоната SHARED
значи създателя на темплейта на АИ Репортс страницата вижда винаги и себе си като "Shared With"
Галя иска да се махне creator-a ot Shared With i ако не е шернал с никого, то колоната ще е празна
Today at 5:45:41 PM
5:45
тази промяна за теб ли е
Nikolay Yankov
Today at 5:48:38 PM
5:48 PM
ами от BE идва инфото какво да се покаже в тази колона -
recipients
полето
Today at 5:49:13 PM
5:49
Лукаш, можеш ли да го промениш
Aneliya Angelova
Today at 5:49:18 PM
5:49 PM
oki
Today at 5:49:35 PM
5:49
ще го опиша в сторито и това
Lukas Kovalik
Today at 5:50:29 PM
5:50 PM
да може
Today at 5:51:41 PM
5:51
това е само при Ask Jiminny или всички
Aneliya Angelova
Today at 5:52:05 PM
5:52 PM
Ask Jiminny
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 5:55:21 PM
5:55 PM
kiosk-нах се с Аделина да видя за
Shared By
и ми направи впечатление, че тя като user, с когото е шернато, тя вижда и всички останли с които е шернато (в response-a на request-a, не в UI)
Мисля си, че ще е добре да го запечатаме това да не expose-ва информация за всички с които е шернато
какво мислите?
Untitled.png
Toggle file
Untitled.png
Download Untitled.png
Share file: Untitled.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 6:15:00 PM
6:15 PM
съгласна съм с Ники
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 6:18:27 PM
6:18 PM
аз няма претенции, мога да ги пропусна ако user не е creator
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
is typing
Todor Stamatov, Direct Message, 1 of 15 suggestions
Nikolay Yankov is typing
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh* Build full day activity...• *4|DOCKER- ₴81-zshworker-nudges:worker-nudges_00: started₴2-zshscreenpipe*What's next:Try Docker Debug for seamless, persistent debugging tools in any container or image + docker debug docker_lamp_1Learn moreat [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfixdockerexec -it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime:8.3.30Running analysis on 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfigdefault from-php-cs-fixer.dist.php".5609/5609100%• ₴5-zsh100% <7886Tue 21 Apr 18:21:04APP (-zsh)T₴1+Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ||...
|
66975
|
|
25674
|
550
|
28
|
2026-04-15T12:58:59.941602+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776257939941_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
56229756718747/55Castle AgeGame Paused (P)Monk wit 56229756718747/55Castle AgeGame Paused (P)Monk with Relic7 0/0kovalfklukas (Britous))30/305 Magnus Olafsson: 2663/26632 Rajyapala: 2654/26544 Louis VI: 2616/26167 Maximilian of Habsburg: 2509/25098 Almish Yiltawar: 2486/24863 Huascár: 2393/23936 László I: 2276/22761 kovaliklukas: 2202/2202BBBBBBBE...
|
NULL
|
-8532974770388140749
|
NULL
|
click
|
ocr
|
NULL
|
56229756718747/55Castle AgeGame Paused (P)Monk wit 56229756718747/55Castle AgeGame Paused (P)Monk with Relic7 0/0kovalfklukas (Britous))30/305 Magnus Olafsson: 2663/26632 Rajyapala: 2654/26544 Louis VI: 2616/26167 Maximilian of Habsburg: 2509/25098 Almish Yiltawar: 2486/24863 Huascár: 2393/23936 László I: 2276/22761 kovaliklukas: 2202/2202BBBBBBBE...
|
NULL
|
|
67622
|
1523
|
11
|
2026-04-21T15:52:29.365807+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776786749365_m2.jpg...
|
PhpStorm
|
faVsco.js – console [STAGING]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Jiminny\Traits\RequiresUUID;
/**
* Jiminny\Models\AutomatedReportResult
*
* @property int $id
* @property string $uuid
* @property int $report_id
* @property string|null $name
* @property int $status
* @property int $reason
* @property string $media_type
* @property int|null $parent_id
* @property array|null $payload
* @property array|null $response
* @property Carbon|null $requested_at
* @property Carbon|null $generated_at
* @property Carbon|null $sent_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read \Jiminny\Models\AutomatedReport $report
* @property-read AutomatedReportResult|null $parent
* @property-read \Illuminate\Database\Eloquent\Collection<int, AutomatedReportResult> $children
*/
class AutomatedReportResult extends Model
{
use RequiresUUID;
/**
* Status constants
*/
public const int STATUS_DEFAULT = 0;
public const int STATUS_REQUESTED = 1;
public const int STATUS_GENERATED = 2;
public const int STATUS_SENT = 3;
public const int STATUS_FAILED = 4;
/**
* Reason constants
*/
public const int REASON_DEFAULT = 0;
public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;
public const int REASON_PROPHET_API_ERROR = 2;
protected $table = 'automated_report_results';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'report_id',
'name',
'status',
'reason',
'media_type',
'parent_id',
'payload',
'response',
'requested_at',
'generated_at',
'sent_at',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'payload' => 'array',
'response' => 'array',
'requested_at' => 'datetime',
'generated_at' => 'datetime',
'sent_at' => 'datetime',
];
}
/**
* Get the automated report that owns this result.
*
* @return BelongsTo
*/
public function report(): BelongsTo
{
return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();
}
/**
* Get the parent report result.
*
* @return BelongsTo
*/
public function parent(): BelongsTo
{
return $this->belongsTo(self::class, 'parent_id');
}
/**
* Get the child report results.
*
* @return HasMany
*/
public function children(): HasMany
{
return $this->hasMany(self::class, 'parent_id');
}
/**
* Get the ID of the automated report result.
*
* @return int
*/
public function getId(): int
{
return $this->getAttribute('id');
}
/**
* Get the UUID of the automated report result.
*
* @return string
*/
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
/**
* Get the report ID of the automated report result.
*
* @return int
*/
public function getReportId(): int
{
return $this->getAttribute('report_id');
}
/**
* Get the name of the automated report result.
*
* @return ?string
*/
public function getName(): ?string
{
return $this->getAttribute('name');
}
/**
* Get the status of the automated report result.
*
* @return int
*/
public function getStatus(): int
{
return $this->getAttribute('status');
}
/**
* Get the reason of the automated report result.
*
* @return int
*/
public function getReason(): int
{
return $this->getAttribute('reason');
}
/**
* Get the media type of the automated report result.
*
* @return string
*/
public function getMediaType(): ?string
{
return $this->getAttribute('media_type');
}
/**
* Get the parent ID of the automated report result.
*
* @return int|null
*/
public function getParentId(): ?int
{
return $this->getAttribute('parent_id');
}
/**
* Get the payload of the automated report result.
*
* @return array|null
*/
public function getPayload(): ?array
{
return $this->getAttribute('payload');
}
/**
* Get the response of the automated report result.
*
* @return array|null
*/
public function getResponse(): ?array
{
return $this->getAttribute('response');
}
/**
* Get the requested at date of the automated report result.
*
* @return Carbon|null
*/
public function getRequestedAt(): ?Carbon
{
return $this->getAttribute('requested_at');
}
/**
* Get the generated at date of the automated report result.
*
* @return Carbon|null
*/
public function getGeneratedAt(): ?Carbon
{
return $this->getAttribute('generated_at');
}
/**
* Get the sent at date of the automated report result.
*
* @return Carbon|null
*/
public function getSentAt(): ?Carbon
{
return $this->getAttribute('sent_at');
}
/**
* Get the created at date of the automated report result.
*
* @return Carbon
*/
public function getCreatedAt(): Carbon
{
return $this->getAttribute('created_at');
}
/**
* Get the updated at date of the automated report result.
*
* @return Carbon
*/
public function getUpdatedAt(): Carbon
{
return $this->getAttribute('updated_at');
}
/**
* Check if the report result is in requested status.
*
* @return bool
*/
public function isRequested(): bool
{
return $this->getStatus() === self::STATUS_REQUESTED;
}
/**
* Check if the report result is in generated status.
*
* @return bool
*/
public function isGenerated(): bool
{
return $this->getStatus() === self::STATUS_GENERATED;
}
/**
* Check if the report result is in sent status.
*
* @return bool
*/
public function isSent(): bool
{
return $this->getStatus() === self::STATUS_SENT;
}
/**
* Check if the report result is in failed status.
*
* @return bool
*/
public function isFailed(): bool
{
return $this->getStatus() === self::STATUS_FAILED;
}
public function getStatusLabel(): string
{
return match ($this->getStatus()) {
self::STATUS_REQUESTED => 'Requested',
self::STATUS_GENERATED => 'Generated',
self::STATUS_SENT => 'Sent',
self::STATUS_FAILED => 'Failed',
default => 'Default',
};
}
public function getReport(): AutomatedReport
{
return $this->getAttribute('report');
}
public function getFromDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['from_date'])) {
return null;
}
return Carbon::parse($payload['from_date']);
}
public function getToDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['to_date'])) {
return null;
}
return Carbon::parse($payload['to_date']);
}
public function getReportType(): ?string
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['report_type'])) {
return null;
}
return $payload['report_type'];
}
public function getGroups(): array
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['group_ids'])) {
return [];
}
return $payload['group_ids'];
}
public function getPdfUrl(): ?string
{
$response = $this->getResponse();
return $response['pdf_url'] ?? null;
}
public function getPodcastAudioUrl(): ?string
{
$response = $this->getResponse();
return $response['podcast_audio_url'] ?? null;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
19
17
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
select * from users where group_id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
SELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"bounds":{"left":0.58144945,"top":0.15003991,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.59142286,"top":0.15003991,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.6007314,"top":0.15003991,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6097075,"top":0.14844373,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61702126,"top":0.14844373,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Traits\\RequiresUUID;\n\n/**\n * Jiminny\\Models\\AutomatedReportResult\n *\n * @property int $id\n * @property string $uuid\n * @property int $report_id\n * @property string|null $name\n * @property int $status\n * @property int $reason\n * @property string $media_type\n * @property int|null $parent_id\n * @property array|null $payload\n * @property array|null $response\n * @property Carbon|null $requested_at\n * @property Carbon|null $generated_at\n * @property Carbon|null $sent_at\n * @property Carbon|null $created_at\n * @property Carbon|null $updated_at\n * @property-read \\Jiminny\\Models\\AutomatedReport $report\n * @property-read AutomatedReportResult|null $parent\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AutomatedReportResult> $children\n */\nclass AutomatedReportResult extends Model\n{\n use RequiresUUID;\n\n /**\n * Status constants\n */\n public const int STATUS_DEFAULT = 0;\n public const int STATUS_REQUESTED = 1;\n public const int STATUS_GENERATED = 2;\n public const int STATUS_SENT = 3;\n public const int STATUS_FAILED = 4;\n\n /**\n * Reason constants\n */\n public const int REASON_DEFAULT = 0;\n public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;\n public const int REASON_PROPHET_API_ERROR = 2;\n\n protected $table = 'automated_report_results';\n\n /**\n * The attributes that are mass assignable.\n *\n * @var array<int, string>\n */\n protected $fillable = [\n 'report_id',\n 'name',\n 'status',\n 'reason',\n 'media_type',\n 'parent_id',\n 'payload',\n 'response',\n 'requested_at',\n 'generated_at',\n 'sent_at',\n ];\n\n /**\n * Get the attributes that should be cast.\n *\n * @return array<string, string>\n */\n protected function casts(): array\n {\n return [\n 'payload' => 'array',\n 'response' => 'array',\n 'requested_at' => 'datetime',\n 'generated_at' => 'datetime',\n 'sent_at' => 'datetime',\n ];\n }\n\n /**\n * Get the automated report that owns this result.\n *\n * @return BelongsTo\n */\n public function report(): BelongsTo\n {\n return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();\n }\n\n /**\n * Get the parent report result.\n *\n * @return BelongsTo\n */\n public function parent(): BelongsTo\n {\n return $this->belongsTo(self::class, 'parent_id');\n }\n\n /**\n * Get the child report results.\n *\n * @return HasMany\n */\n public function children(): HasMany\n {\n return $this->hasMany(self::class, 'parent_id');\n }\n\n /**\n * Get the ID of the automated report result.\n *\n * @return int\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n /**\n * Get the UUID of the automated report result.\n *\n * @return string\n */\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n /**\n * Get the report ID of the automated report result.\n *\n * @return int\n */\n public function getReportId(): int\n {\n return $this->getAttribute('report_id');\n }\n\n /**\n * Get the name of the automated report result.\n *\n * @return ?string\n */\n public function getName(): ?string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * Get the status of the automated report result.\n *\n * @return int\n */\n public function getStatus(): int\n {\n return $this->getAttribute('status');\n }\n\n /**\n * Get the reason of the automated report result.\n *\n * @return int\n */\n public function getReason(): int\n {\n return $this->getAttribute('reason');\n }\n\n /**\n * Get the media type of the automated report result.\n *\n * @return string\n */\n public function getMediaType(): ?string\n {\n return $this->getAttribute('media_type');\n }\n\n /**\n * Get the parent ID of the automated report result.\n *\n * @return int|null\n */\n public function getParentId(): ?int\n {\n return $this->getAttribute('parent_id');\n }\n\n /**\n * Get the payload of the automated report result.\n *\n * @return array|null\n */\n public function getPayload(): ?array\n {\n return $this->getAttribute('payload');\n }\n\n /**\n * Get the response of the automated report result.\n *\n * @return array|null\n */\n public function getResponse(): ?array\n {\n return $this->getAttribute('response');\n }\n\n /**\n * Get the requested at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getRequestedAt(): ?Carbon\n {\n return $this->getAttribute('requested_at');\n }\n\n /**\n * Get the generated at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getGeneratedAt(): ?Carbon\n {\n return $this->getAttribute('generated_at');\n }\n\n /**\n * Get the sent at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getSentAt(): ?Carbon\n {\n return $this->getAttribute('sent_at');\n }\n\n /**\n * Get the created at date of the automated report result.\n *\n * @return Carbon\n */\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n /**\n * Get the updated at date of the automated report result.\n *\n * @return Carbon\n */\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n /**\n * Check if the report result is in requested status.\n *\n * @return bool\n */\n public function isRequested(): bool\n {\n return $this->getStatus() === self::STATUS_REQUESTED;\n }\n\n /**\n * Check if the report result is in generated status.\n *\n * @return bool\n */\n public function isGenerated(): bool\n {\n return $this->getStatus() === self::STATUS_GENERATED;\n }\n\n /**\n * Check if the report result is in sent status.\n *\n * @return bool\n */\n public function isSent(): bool\n {\n return $this->getStatus() === self::STATUS_SENT;\n }\n\n /**\n * Check if the report result is in failed status.\n *\n * @return bool\n */\n public function isFailed(): bool\n {\n return $this->getStatus() === self::STATUS_FAILED;\n }\n\n public function getStatusLabel(): string\n {\n return match ($this->getStatus()) {\n self::STATUS_REQUESTED => 'Requested',\n self::STATUS_GENERATED => 'Generated',\n self::STATUS_SENT => 'Sent',\n self::STATUS_FAILED => 'Failed',\n default => 'Default',\n };\n }\n\n public function getReport(): AutomatedReport\n {\n return $this->getAttribute('report');\n }\n\n public function getFromDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['from_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['from_date']);\n }\n\n public function getToDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['to_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['to_date']);\n }\n\n public function getReportType(): ?string\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['report_type'])) {\n return null;\n }\n\n return $payload['report_type'];\n }\n\n public function getGroups(): array\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['group_ids'])) {\n return [];\n }\n\n return $payload['group_ids'];\n }\n\n public function getPdfUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['pdf_url'] ?? null;\n }\n\n public function getPodcastAudioUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['podcast_audio_url'] ?? null;\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Traits\\RequiresUUID;\n\n/**\n * Jiminny\\Models\\AutomatedReportResult\n *\n * @property int $id\n * @property string $uuid\n * @property int $report_id\n * @property string|null $name\n * @property int $status\n * @property int $reason\n * @property string $media_type\n * @property int|null $parent_id\n * @property array|null $payload\n * @property array|null $response\n * @property Carbon|null $requested_at\n * @property Carbon|null $generated_at\n * @property Carbon|null $sent_at\n * @property Carbon|null $created_at\n * @property Carbon|null $updated_at\n * @property-read \\Jiminny\\Models\\AutomatedReport $report\n * @property-read AutomatedReportResult|null $parent\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AutomatedReportResult> $children\n */\nclass AutomatedReportResult extends Model\n{\n use RequiresUUID;\n\n /**\n * Status constants\n */\n public const int STATUS_DEFAULT = 0;\n public const int STATUS_REQUESTED = 1;\n public const int STATUS_GENERATED = 2;\n public const int STATUS_SENT = 3;\n public const int STATUS_FAILED = 4;\n\n /**\n * Reason constants\n */\n public const int REASON_DEFAULT = 0;\n public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;\n public const int REASON_PROPHET_API_ERROR = 2;\n\n protected $table = 'automated_report_results';\n\n /**\n * The attributes that are mass assignable.\n *\n * @var array<int, string>\n */\n protected $fillable = [\n 'report_id',\n 'name',\n 'status',\n 'reason',\n 'media_type',\n 'parent_id',\n 'payload',\n 'response',\n 'requested_at',\n 'generated_at',\n 'sent_at',\n ];\n\n /**\n * Get the attributes that should be cast.\n *\n * @return array<string, string>\n */\n protected function casts(): array\n {\n return [\n 'payload' => 'array',\n 'response' => 'array',\n 'requested_at' => 'datetime',\n 'generated_at' => 'datetime',\n 'sent_at' => 'datetime',\n ];\n }\n\n /**\n * Get the automated report that owns this result.\n *\n * @return BelongsTo\n */\n public function report(): BelongsTo\n {\n return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();\n }\n\n /**\n * Get the parent report result.\n *\n * @return BelongsTo\n */\n public function parent(): BelongsTo\n {\n return $this->belongsTo(self::class, 'parent_id');\n }\n\n /**\n * Get the child report results.\n *\n * @return HasMany\n */\n public function children(): HasMany\n {\n return $this->hasMany(self::class, 'parent_id');\n }\n\n /**\n * Get the ID of the automated report result.\n *\n * @return int\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n /**\n * Get the UUID of the automated report result.\n *\n * @return string\n */\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n /**\n * Get the report ID of the automated report result.\n *\n * @return int\n */\n public function getReportId(): int\n {\n return $this->getAttribute('report_id');\n }\n\n /**\n * Get the name of the automated report result.\n *\n * @return ?string\n */\n public function getName(): ?string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * Get the status of the automated report result.\n *\n * @return int\n */\n public function getStatus(): int\n {\n return $this->getAttribute('status');\n }\n\n /**\n * Get the reason of the automated report result.\n *\n * @return int\n */\n public function getReason(): int\n {\n return $this->getAttribute('reason');\n }\n\n /**\n * Get the media type of the automated report result.\n *\n * @return string\n */\n public function getMediaType(): ?string\n {\n return $this->getAttribute('media_type');\n }\n\n /**\n * Get the parent ID of the automated report result.\n *\n * @return int|null\n */\n public function getParentId(): ?int\n {\n return $this->getAttribute('parent_id');\n }\n\n /**\n * Get the payload of the automated report result.\n *\n * @return array|null\n */\n public function getPayload(): ?array\n {\n return $this->getAttribute('payload');\n }\n\n /**\n * Get the response of the automated report result.\n *\n * @return array|null\n */\n public function getResponse(): ?array\n {\n return $this->getAttribute('response');\n }\n\n /**\n * Get the requested at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getRequestedAt(): ?Carbon\n {\n return $this->getAttribute('requested_at');\n }\n\n /**\n * Get the generated at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getGeneratedAt(): ?Carbon\n {\n return $this->getAttribute('generated_at');\n }\n\n /**\n * Get the sent at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getSentAt(): ?Carbon\n {\n return $this->getAttribute('sent_at');\n }\n\n /**\n * Get the created at date of the automated report result.\n *\n * @return Carbon\n */\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n /**\n * Get the updated at date of the automated report result.\n *\n * @return Carbon\n */\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n /**\n * Check if the report result is in requested status.\n *\n * @return bool\n */\n public function isRequested(): bool\n {\n return $this->getStatus() === self::STATUS_REQUESTED;\n }\n\n /**\n * Check if the report result is in generated status.\n *\n * @return bool\n */\n public function isGenerated(): bool\n {\n return $this->getStatus() === self::STATUS_GENERATED;\n }\n\n /**\n * Check if the report result is in sent status.\n *\n * @return bool\n */\n public function isSent(): bool\n {\n return $this->getStatus() === self::STATUS_SENT;\n }\n\n /**\n * Check if the report result is in failed status.\n *\n * @return bool\n */\n public function isFailed(): bool\n {\n return $this->getStatus() === self::STATUS_FAILED;\n }\n\n public function getStatusLabel(): string\n {\n return match ($this->getStatus()) {\n self::STATUS_REQUESTED => 'Requested',\n self::STATUS_GENERATED => 'Generated',\n self::STATUS_SENT => 'Sent',\n self::STATUS_FAILED => 'Failed',\n default => 'Default',\n };\n }\n\n public function getReport(): AutomatedReport\n {\n return $this->getAttribute('report');\n }\n\n public function getFromDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['from_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['from_date']);\n }\n\n public function getToDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['to_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['to_date']);\n }\n\n public function getReportType(): ?string\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['report_type'])) {\n return null;\n }\n\n return $payload['report_type'];\n }\n\n public function getGroups(): array\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['group_ids'])) {\n return [];\n }\n\n return $payload['group_ids'];\n }\n\n public function getPdfUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['pdf_url'] ?? null;\n }\n\n public function getPodcastAudioUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['podcast_audio_url'] ?? null;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.6256649,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.6343085,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.6452792,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.65392286,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"bounds":{"left":0.6625665,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.67353725,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.68450797,"top":0.09896249,"width":0.024268618,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.71110374,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.72207445,"top":0.09896249,"width":0.029587766,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.9587766,"top":0.09896249,"width":0.02825798,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"19","depth":4,"bounds":{"left":0.93982714,"top":0.123703115,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.95146275,"top":0.123703115,"width":0.00930851,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"13","depth":4,"bounds":{"left":0.96276593,"top":0.123703115,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.12210695,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.98138297,"top":0.12210695,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\nselect * from users where group_id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;\nSELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;","depth":4,"value":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\nselect * from users where group_id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;\nSELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8532946324181678566
|
6686367698084312173
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Jiminny\Traits\RequiresUUID;
/**
* Jiminny\Models\AutomatedReportResult
*
* @property int $id
* @property string $uuid
* @property int $report_id
* @property string|null $name
* @property int $status
* @property int $reason
* @property string $media_type
* @property int|null $parent_id
* @property array|null $payload
* @property array|null $response
* @property Carbon|null $requested_at
* @property Carbon|null $generated_at
* @property Carbon|null $sent_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read \Jiminny\Models\AutomatedReport $report
* @property-read AutomatedReportResult|null $parent
* @property-read \Illuminate\Database\Eloquent\Collection<int, AutomatedReportResult> $children
*/
class AutomatedReportResult extends Model
{
use RequiresUUID;
/**
* Status constants
*/
public const int STATUS_DEFAULT = 0;
public const int STATUS_REQUESTED = 1;
public const int STATUS_GENERATED = 2;
public const int STATUS_SENT = 3;
public const int STATUS_FAILED = 4;
/**
* Reason constants
*/
public const int REASON_DEFAULT = 0;
public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;
public const int REASON_PROPHET_API_ERROR = 2;
protected $table = 'automated_report_results';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'report_id',
'name',
'status',
'reason',
'media_type',
'parent_id',
'payload',
'response',
'requested_at',
'generated_at',
'sent_at',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'payload' => 'array',
'response' => 'array',
'requested_at' => 'datetime',
'generated_at' => 'datetime',
'sent_at' => 'datetime',
];
}
/**
* Get the automated report that owns this result.
*
* @return BelongsTo
*/
public function report(): BelongsTo
{
return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();
}
/**
* Get the parent report result.
*
* @return BelongsTo
*/
public function parent(): BelongsTo
{
return $this->belongsTo(self::class, 'parent_id');
}
/**
* Get the child report results.
*
* @return HasMany
*/
public function children(): HasMany
{
return $this->hasMany(self::class, 'parent_id');
}
/**
* Get the ID of the automated report result.
*
* @return int
*/
public function getId(): int
{
return $this->getAttribute('id');
}
/**
* Get the UUID of the automated report result.
*
* @return string
*/
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
/**
* Get the report ID of the automated report result.
*
* @return int
*/
public function getReportId(): int
{
return $this->getAttribute('report_id');
}
/**
* Get the name of the automated report result.
*
* @return ?string
*/
public function getName(): ?string
{
return $this->getAttribute('name');
}
/**
* Get the status of the automated report result.
*
* @return int
*/
public function getStatus(): int
{
return $this->getAttribute('status');
}
/**
* Get the reason of the automated report result.
*
* @return int
*/
public function getReason(): int
{
return $this->getAttribute('reason');
}
/**
* Get the media type of the automated report result.
*
* @return string
*/
public function getMediaType(): ?string
{
return $this->getAttribute('media_type');
}
/**
* Get the parent ID of the automated report result.
*
* @return int|null
*/
public function getParentId(): ?int
{
return $this->getAttribute('parent_id');
}
/**
* Get the payload of the automated report result.
*
* @return array|null
*/
public function getPayload(): ?array
{
return $this->getAttribute('payload');
}
/**
* Get the response of the automated report result.
*
* @return array|null
*/
public function getResponse(): ?array
{
return $this->getAttribute('response');
}
/**
* Get the requested at date of the automated report result.
*
* @return Carbon|null
*/
public function getRequestedAt(): ?Carbon
{
return $this->getAttribute('requested_at');
}
/**
* Get the generated at date of the automated report result.
*
* @return Carbon|null
*/
public function getGeneratedAt(): ?Carbon
{
return $this->getAttribute('generated_at');
}
/**
* Get the sent at date of the automated report result.
*
* @return Carbon|null
*/
public function getSentAt(): ?Carbon
{
return $this->getAttribute('sent_at');
}
/**
* Get the created at date of the automated report result.
*
* @return Carbon
*/
public function getCreatedAt(): Carbon
{
return $this->getAttribute('created_at');
}
/**
* Get the updated at date of the automated report result.
*
* @return Carbon
*/
public function getUpdatedAt(): Carbon
{
return $this->getAttribute('updated_at');
}
/**
* Check if the report result is in requested status.
*
* @return bool
*/
public function isRequested(): bool
{
return $this->getStatus() === self::STATUS_REQUESTED;
}
/**
* Check if the report result is in generated status.
*
* @return bool
*/
public function isGenerated(): bool
{
return $this->getStatus() === self::STATUS_GENERATED;
}
/**
* Check if the report result is in sent status.
*
* @return bool
*/
public function isSent(): bool
{
return $this->getStatus() === self::STATUS_SENT;
}
/**
* Check if the report result is in failed status.
*
* @return bool
*/
public function isFailed(): bool
{
return $this->getStatus() === self::STATUS_FAILED;
}
public function getStatusLabel(): string
{
return match ($this->getStatus()) {
self::STATUS_REQUESTED => 'Requested',
self::STATUS_GENERATED => 'Generated',
self::STATUS_SENT => 'Sent',
self::STATUS_FAILED => 'Failed',
default => 'Default',
};
}
public function getReport(): AutomatedReport
{
return $this->getAttribute('report');
}
public function getFromDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['from_date'])) {
return null;
}
return Carbon::parse($payload['from_date']);
}
public function getToDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['to_date'])) {
return null;
}
return Carbon::parse($payload['to_date']);
}
public function getReportType(): ?string
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['report_type'])) {
return null;
}
return $payload['report_type'];
}
public function getGroups(): array
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['group_ids'])) {
return [];
}
return $payload['group_ids'];
}
public function getPdfUrl(): ?string
{
$response = $this->getResponse();
return $response['pdf_url'] ?? null;
}
public function getPodcastAudioUrl(): ?string
{
$response = $this->getResponse();
return $response['podcast_audio_url'] ?? null;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
19
17
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
select * from users where group_id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
SELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
67621
|
|
67623
|
1522
|
7
|
2026-04-21T15:52:29.365837+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776786749365_m1.jpg...
|
PhpStorm
|
faVsco.js – console [STAGING]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Jiminny\Traits\RequiresUUID;
/**
* Jiminny\Models\AutomatedReportResult
*
* @property int $id
* @property string $uuid
* @property int $report_id
* @property string|null $name
* @property int $status
* @property int $reason
* @property string $media_type
* @property int|null $parent_id
* @property array|null $payload
* @property array|null $response
* @property Carbon|null $requested_at
* @property Carbon|null $generated_at
* @property Carbon|null $sent_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read \Jiminny\Models\AutomatedReport $report
* @property-read AutomatedReportResult|null $parent
* @property-read \Illuminate\Database\Eloquent\Collection<int, AutomatedReportResult> $children
*/
class AutomatedReportResult extends Model
{
use RequiresUUID;
/**
* Status constants
*/
public const int STATUS_DEFAULT = 0;
public const int STATUS_REQUESTED = 1;
public const int STATUS_GENERATED = 2;
public const int STATUS_SENT = 3;
public const int STATUS_FAILED = 4;
/**
* Reason constants
*/
public const int REASON_DEFAULT = 0;
public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;
public const int REASON_PROPHET_API_ERROR = 2;
protected $table = 'automated_report_results';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'report_id',
'name',
'status',
'reason',
'media_type',
'parent_id',
'payload',
'response',
'requested_at',
'generated_at',
'sent_at',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'payload' => 'array',
'response' => 'array',
'requested_at' => 'datetime',
'generated_at' => 'datetime',
'sent_at' => 'datetime',
];
}
/**
* Get the automated report that owns this result.
*
* @return BelongsTo
*/
public function report(): BelongsTo
{
return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();
}
/**
* Get the parent report result.
*
* @return BelongsTo
*/
public function parent(): BelongsTo
{
return $this->belongsTo(self::class, 'parent_id');
}
/**
* Get the child report results.
*
* @return HasMany
*/
public function children(): HasMany
{
return $this->hasMany(self::class, 'parent_id');
}
/**
* Get the ID of the automated report result.
*
* @return int
*/
public function getId(): int
{
return $this->getAttribute('id');
}
/**
* Get the UUID of the automated report result.
*
* @return string
*/
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
/**
* Get the report ID of the automated report result.
*
* @return int
*/
public function getReportId(): int
{
return $this->getAttribute('report_id');
}
/**
* Get the name of the automated report result.
*
* @return ?string
*/
public function getName(): ?string
{
return $this->getAttribute('name');
}
/**
* Get the status of the automated report result.
*
* @return int
*/
public function getStatus(): int
{
return $this->getAttribute('status');
}
/**
* Get the reason of the automated report result.
*
* @return int
*/
public function getReason(): int
{
return $this->getAttribute('reason');
}
/**
* Get the media type of the automated report result.
*
* @return string
*/
public function getMediaType(): ?string
{
return $this->getAttribute('media_type');
}
/**
* Get the parent ID of the automated report result.
*
* @return int|null
*/
public function getParentId(): ?int
{
return $this->getAttribute('parent_id');
}
/**
* Get the payload of the automated report result.
*
* @return array|null
*/
public function getPayload(): ?array
{
return $this->getAttribute('payload');
}
/**
* Get the response of the automated report result.
*
* @return array|null
*/
public function getResponse(): ?array
{
return $this->getAttribute('response');
}
/**
* Get the requested at date of the automated report result.
*
* @return Carbon|null
*/
public function getRequestedAt(): ?Carbon
{
return $this->getAttribute('requested_at');
}
/**
* Get the generated at date of the automated report result.
*
* @return Carbon|null
*/
public function getGeneratedAt(): ?Carbon
{
return $this->getAttribute('generated_at');
}
/**
* Get the sent at date of the automated report result.
*
* @return Carbon|null
*/
public function getSentAt(): ?Carbon
{
return $this->getAttribute('sent_at');
}
/**
* Get the created at date of the automated report result.
*
* @return Carbon
*/
public function getCreatedAt(): Carbon
{
return $this->getAttribute('created_at');
}
/**
* Get the updated at date of the automated report result.
*
* @return Carbon
*/
public function getUpdatedAt(): Carbon
{
return $this->getAttribute('updated_at');
}
/**
* Check if the report result is in requested status.
*
* @return bool
*/
public function isRequested(): bool
{
return $this->getStatus() === self::STATUS_REQUESTED;
}
/**
* Check if the report result is in generated status.
*
* @return bool
*/
public function isGenerated(): bool
{
return $this->getStatus() === self::STATUS_GENERATED;
}
/**
* Check if the report result is in sent status.
*
* @return bool
*/
public function isSent(): bool
{
return $this->getStatus() === self::STATUS_SENT;
}
/**
* Check if the report result is in failed status.
*
* @return bool
*/
public function isFailed(): bool
{
return $this->getStatus() === self::STATUS_FAILED;
}
public function getStatusLabel(): string
{
return match ($this->getStatus()) {
self::STATUS_REQUESTED => 'Requested',
self::STATUS_GENERATED => 'Generated',
self::STATUS_SENT => 'Sent',
self::STATUS_FAILED => 'Failed',
default => 'Default',
};
}
public function getReport(): AutomatedReport
{
return $this->getAttribute('report');
}
public function getFromDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['from_date'])) {
return null;
}
return Carbon::parse($payload['from_date']);
}
public function getToDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['to_date'])) {
return null;
}
return Carbon::parse($payload['to_date']);
}
public function getReportType(): ?string
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['report_type'])) {
return null;
}
return $payload['report_type'];
}
public function getGroups(): array
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['group_ids'])) {
return [];
}
return $payload['group_ids'];
}
public function getPdfUrl(): ?string
{
$response = $this->getResponse();
return $response['pdf_url'] ?? null;
}
public function getPodcastAudioUrl(): ?string
{
$response = $this->getResponse();
return $response['podcast_audio_url'] ?? null;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
19
17
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
select * from users where group_id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
SELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Traits\\RequiresUUID;\n\n/**\n * Jiminny\\Models\\AutomatedReportResult\n *\n * @property int $id\n * @property string $uuid\n * @property int $report_id\n * @property string|null $name\n * @property int $status\n * @property int $reason\n * @property string $media_type\n * @property int|null $parent_id\n * @property array|null $payload\n * @property array|null $response\n * @property Carbon|null $requested_at\n * @property Carbon|null $generated_at\n * @property Carbon|null $sent_at\n * @property Carbon|null $created_at\n * @property Carbon|null $updated_at\n * @property-read \\Jiminny\\Models\\AutomatedReport $report\n * @property-read AutomatedReportResult|null $parent\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AutomatedReportResult> $children\n */\nclass AutomatedReportResult extends Model\n{\n use RequiresUUID;\n\n /**\n * Status constants\n */\n public const int STATUS_DEFAULT = 0;\n public const int STATUS_REQUESTED = 1;\n public const int STATUS_GENERATED = 2;\n public const int STATUS_SENT = 3;\n public const int STATUS_FAILED = 4;\n\n /**\n * Reason constants\n */\n public const int REASON_DEFAULT = 0;\n public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;\n public const int REASON_PROPHET_API_ERROR = 2;\n\n protected $table = 'automated_report_results';\n\n /**\n * The attributes that are mass assignable.\n *\n * @var array<int, string>\n */\n protected $fillable = [\n 'report_id',\n 'name',\n 'status',\n 'reason',\n 'media_type',\n 'parent_id',\n 'payload',\n 'response',\n 'requested_at',\n 'generated_at',\n 'sent_at',\n ];\n\n /**\n * Get the attributes that should be cast.\n *\n * @return array<string, string>\n */\n protected function casts(): array\n {\n return [\n 'payload' => 'array',\n 'response' => 'array',\n 'requested_at' => 'datetime',\n 'generated_at' => 'datetime',\n 'sent_at' => 'datetime',\n ];\n }\n\n /**\n * Get the automated report that owns this result.\n *\n * @return BelongsTo\n */\n public function report(): BelongsTo\n {\n return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();\n }\n\n /**\n * Get the parent report result.\n *\n * @return BelongsTo\n */\n public function parent(): BelongsTo\n {\n return $this->belongsTo(self::class, 'parent_id');\n }\n\n /**\n * Get the child report results.\n *\n * @return HasMany\n */\n public function children(): HasMany\n {\n return $this->hasMany(self::class, 'parent_id');\n }\n\n /**\n * Get the ID of the automated report result.\n *\n * @return int\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n /**\n * Get the UUID of the automated report result.\n *\n * @return string\n */\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n /**\n * Get the report ID of the automated report result.\n *\n * @return int\n */\n public function getReportId(): int\n {\n return $this->getAttribute('report_id');\n }\n\n /**\n * Get the name of the automated report result.\n *\n * @return ?string\n */\n public function getName(): ?string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * Get the status of the automated report result.\n *\n * @return int\n */\n public function getStatus(): int\n {\n return $this->getAttribute('status');\n }\n\n /**\n * Get the reason of the automated report result.\n *\n * @return int\n */\n public function getReason(): int\n {\n return $this->getAttribute('reason');\n }\n\n /**\n * Get the media type of the automated report result.\n *\n * @return string\n */\n public function getMediaType(): ?string\n {\n return $this->getAttribute('media_type');\n }\n\n /**\n * Get the parent ID of the automated report result.\n *\n * @return int|null\n */\n public function getParentId(): ?int\n {\n return $this->getAttribute('parent_id');\n }\n\n /**\n * Get the payload of the automated report result.\n *\n * @return array|null\n */\n public function getPayload(): ?array\n {\n return $this->getAttribute('payload');\n }\n\n /**\n * Get the response of the automated report result.\n *\n * @return array|null\n */\n public function getResponse(): ?array\n {\n return $this->getAttribute('response');\n }\n\n /**\n * Get the requested at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getRequestedAt(): ?Carbon\n {\n return $this->getAttribute('requested_at');\n }\n\n /**\n * Get the generated at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getGeneratedAt(): ?Carbon\n {\n return $this->getAttribute('generated_at');\n }\n\n /**\n * Get the sent at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getSentAt(): ?Carbon\n {\n return $this->getAttribute('sent_at');\n }\n\n /**\n * Get the created at date of the automated report result.\n *\n * @return Carbon\n */\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n /**\n * Get the updated at date of the automated report result.\n *\n * @return Carbon\n */\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n /**\n * Check if the report result is in requested status.\n *\n * @return bool\n */\n public function isRequested(): bool\n {\n return $this->getStatus() === self::STATUS_REQUESTED;\n }\n\n /**\n * Check if the report result is in generated status.\n *\n * @return bool\n */\n public function isGenerated(): bool\n {\n return $this->getStatus() === self::STATUS_GENERATED;\n }\n\n /**\n * Check if the report result is in sent status.\n *\n * @return bool\n */\n public function isSent(): bool\n {\n return $this->getStatus() === self::STATUS_SENT;\n }\n\n /**\n * Check if the report result is in failed status.\n *\n * @return bool\n */\n public function isFailed(): bool\n {\n return $this->getStatus() === self::STATUS_FAILED;\n }\n\n public function getStatusLabel(): string\n {\n return match ($this->getStatus()) {\n self::STATUS_REQUESTED => 'Requested',\n self::STATUS_GENERATED => 'Generated',\n self::STATUS_SENT => 'Sent',\n self::STATUS_FAILED => 'Failed',\n default => 'Default',\n };\n }\n\n public function getReport(): AutomatedReport\n {\n return $this->getAttribute('report');\n }\n\n public function getFromDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['from_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['from_date']);\n }\n\n public function getToDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['to_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['to_date']);\n }\n\n public function getReportType(): ?string\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['report_type'])) {\n return null;\n }\n\n return $payload['report_type'];\n }\n\n public function getGroups(): array\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['group_ids'])) {\n return [];\n }\n\n return $payload['group_ids'];\n }\n\n public function getPdfUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['pdf_url'] ?? null;\n }\n\n public function getPodcastAudioUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['podcast_audio_url'] ?? null;\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Traits\\RequiresUUID;\n\n/**\n * Jiminny\\Models\\AutomatedReportResult\n *\n * @property int $id\n * @property string $uuid\n * @property int $report_id\n * @property string|null $name\n * @property int $status\n * @property int $reason\n * @property string $media_type\n * @property int|null $parent_id\n * @property array|null $payload\n * @property array|null $response\n * @property Carbon|null $requested_at\n * @property Carbon|null $generated_at\n * @property Carbon|null $sent_at\n * @property Carbon|null $created_at\n * @property Carbon|null $updated_at\n * @property-read \\Jiminny\\Models\\AutomatedReport $report\n * @property-read AutomatedReportResult|null $parent\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AutomatedReportResult> $children\n */\nclass AutomatedReportResult extends Model\n{\n use RequiresUUID;\n\n /**\n * Status constants\n */\n public const int STATUS_DEFAULT = 0;\n public const int STATUS_REQUESTED = 1;\n public const int STATUS_GENERATED = 2;\n public const int STATUS_SENT = 3;\n public const int STATUS_FAILED = 4;\n\n /**\n * Reason constants\n */\n public const int REASON_DEFAULT = 0;\n public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;\n public const int REASON_PROPHET_API_ERROR = 2;\n\n protected $table = 'automated_report_results';\n\n /**\n * The attributes that are mass assignable.\n *\n * @var array<int, string>\n */\n protected $fillable = [\n 'report_id',\n 'name',\n 'status',\n 'reason',\n 'media_type',\n 'parent_id',\n 'payload',\n 'response',\n 'requested_at',\n 'generated_at',\n 'sent_at',\n ];\n\n /**\n * Get the attributes that should be cast.\n *\n * @return array<string, string>\n */\n protected function casts(): array\n {\n return [\n 'payload' => 'array',\n 'response' => 'array',\n 'requested_at' => 'datetime',\n 'generated_at' => 'datetime',\n 'sent_at' => 'datetime',\n ];\n }\n\n /**\n * Get the automated report that owns this result.\n *\n * @return BelongsTo\n */\n public function report(): BelongsTo\n {\n return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();\n }\n\n /**\n * Get the parent report result.\n *\n * @return BelongsTo\n */\n public function parent(): BelongsTo\n {\n return $this->belongsTo(self::class, 'parent_id');\n }\n\n /**\n * Get the child report results.\n *\n * @return HasMany\n */\n public function children(): HasMany\n {\n return $this->hasMany(self::class, 'parent_id');\n }\n\n /**\n * Get the ID of the automated report result.\n *\n * @return int\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n /**\n * Get the UUID of the automated report result.\n *\n * @return string\n */\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n /**\n * Get the report ID of the automated report result.\n *\n * @return int\n */\n public function getReportId(): int\n {\n return $this->getAttribute('report_id');\n }\n\n /**\n * Get the name of the automated report result.\n *\n * @return ?string\n */\n public function getName(): ?string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * Get the status of the automated report result.\n *\n * @return int\n */\n public function getStatus(): int\n {\n return $this->getAttribute('status');\n }\n\n /**\n * Get the reason of the automated report result.\n *\n * @return int\n */\n public function getReason(): int\n {\n return $this->getAttribute('reason');\n }\n\n /**\n * Get the media type of the automated report result.\n *\n * @return string\n */\n public function getMediaType(): ?string\n {\n return $this->getAttribute('media_type');\n }\n\n /**\n * Get the parent ID of the automated report result.\n *\n * @return int|null\n */\n public function getParentId(): ?int\n {\n return $this->getAttribute('parent_id');\n }\n\n /**\n * Get the payload of the automated report result.\n *\n * @return array|null\n */\n public function getPayload(): ?array\n {\n return $this->getAttribute('payload');\n }\n\n /**\n * Get the response of the automated report result.\n *\n * @return array|null\n */\n public function getResponse(): ?array\n {\n return $this->getAttribute('response');\n }\n\n /**\n * Get the requested at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getRequestedAt(): ?Carbon\n {\n return $this->getAttribute('requested_at');\n }\n\n /**\n * Get the generated at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getGeneratedAt(): ?Carbon\n {\n return $this->getAttribute('generated_at');\n }\n\n /**\n * Get the sent at date of the automated report result.\n *\n * @return Carbon|null\n */\n public function getSentAt(): ?Carbon\n {\n return $this->getAttribute('sent_at');\n }\n\n /**\n * Get the created at date of the automated report result.\n *\n * @return Carbon\n */\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n /**\n * Get the updated at date of the automated report result.\n *\n * @return Carbon\n */\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n /**\n * Check if the report result is in requested status.\n *\n * @return bool\n */\n public function isRequested(): bool\n {\n return $this->getStatus() === self::STATUS_REQUESTED;\n }\n\n /**\n * Check if the report result is in generated status.\n *\n * @return bool\n */\n public function isGenerated(): bool\n {\n return $this->getStatus() === self::STATUS_GENERATED;\n }\n\n /**\n * Check if the report result is in sent status.\n *\n * @return bool\n */\n public function isSent(): bool\n {\n return $this->getStatus() === self::STATUS_SENT;\n }\n\n /**\n * Check if the report result is in failed status.\n *\n * @return bool\n */\n public function isFailed(): bool\n {\n return $this->getStatus() === self::STATUS_FAILED;\n }\n\n public function getStatusLabel(): string\n {\n return match ($this->getStatus()) {\n self::STATUS_REQUESTED => 'Requested',\n self::STATUS_GENERATED => 'Generated',\n self::STATUS_SENT => 'Sent',\n self::STATUS_FAILED => 'Failed',\n default => 'Default',\n };\n }\n\n public function getReport(): AutomatedReport\n {\n return $this->getAttribute('report');\n }\n\n public function getFromDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['from_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['from_date']);\n }\n\n public function getToDate(): ?Carbon\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['to_date'])) {\n return null;\n }\n\n return Carbon::parse($payload['to_date']);\n }\n\n public function getReportType(): ?string\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['report_type'])) {\n return null;\n }\n\n return $payload['report_type'];\n }\n\n public function getGroups(): array\n {\n $payload = $this->getPayload();\n\n if (empty($payload) || empty($payload['group_ids'])) {\n return [];\n }\n\n return $payload['group_ids'];\n }\n\n public function getPdfUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['pdf_url'] ?? null;\n }\n\n public function getPodcastAudioUrl(): ?string\n {\n $response = $this->getResponse();\n\n return $response['podcast_audio_url'] ?? null;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"19","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"13","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\nselect * from users where group_id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;\nSELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;","depth":4,"value":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\nselect * from users where group_id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;\nSELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8532946324181678566
|
6686367698084312173
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Jiminny\Traits\RequiresUUID;
/**
* Jiminny\Models\AutomatedReportResult
*
* @property int $id
* @property string $uuid
* @property int $report_id
* @property string|null $name
* @property int $status
* @property int $reason
* @property string $media_type
* @property int|null $parent_id
* @property array|null $payload
* @property array|null $response
* @property Carbon|null $requested_at
* @property Carbon|null $generated_at
* @property Carbon|null $sent_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read \Jiminny\Models\AutomatedReport $report
* @property-read AutomatedReportResult|null $parent
* @property-read \Illuminate\Database\Eloquent\Collection<int, AutomatedReportResult> $children
*/
class AutomatedReportResult extends Model
{
use RequiresUUID;
/**
* Status constants
*/
public const int STATUS_DEFAULT = 0;
public const int STATUS_REQUESTED = 1;
public const int STATUS_GENERATED = 2;
public const int STATUS_SENT = 3;
public const int STATUS_FAILED = 4;
/**
* Reason constants
*/
public const int REASON_DEFAULT = 0;
public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;
public const int REASON_PROPHET_API_ERROR = 2;
protected $table = 'automated_report_results';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'report_id',
'name',
'status',
'reason',
'media_type',
'parent_id',
'payload',
'response',
'requested_at',
'generated_at',
'sent_at',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'payload' => 'array',
'response' => 'array',
'requested_at' => 'datetime',
'generated_at' => 'datetime',
'sent_at' => 'datetime',
];
}
/**
* Get the automated report that owns this result.
*
* @return BelongsTo
*/
public function report(): BelongsTo
{
return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();
}
/**
* Get the parent report result.
*
* @return BelongsTo
*/
public function parent(): BelongsTo
{
return $this->belongsTo(self::class, 'parent_id');
}
/**
* Get the child report results.
*
* @return HasMany
*/
public function children(): HasMany
{
return $this->hasMany(self::class, 'parent_id');
}
/**
* Get the ID of the automated report result.
*
* @return int
*/
public function getId(): int
{
return $this->getAttribute('id');
}
/**
* Get the UUID of the automated report result.
*
* @return string
*/
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
/**
* Get the report ID of the automated report result.
*
* @return int
*/
public function getReportId(): int
{
return $this->getAttribute('report_id');
}
/**
* Get the name of the automated report result.
*
* @return ?string
*/
public function getName(): ?string
{
return $this->getAttribute('name');
}
/**
* Get the status of the automated report result.
*
* @return int
*/
public function getStatus(): int
{
return $this->getAttribute('status');
}
/**
* Get the reason of the automated report result.
*
* @return int
*/
public function getReason(): int
{
return $this->getAttribute('reason');
}
/**
* Get the media type of the automated report result.
*
* @return string
*/
public function getMediaType(): ?string
{
return $this->getAttribute('media_type');
}
/**
* Get the parent ID of the automated report result.
*
* @return int|null
*/
public function getParentId(): ?int
{
return $this->getAttribute('parent_id');
}
/**
* Get the payload of the automated report result.
*
* @return array|null
*/
public function getPayload(): ?array
{
return $this->getAttribute('payload');
}
/**
* Get the response of the automated report result.
*
* @return array|null
*/
public function getResponse(): ?array
{
return $this->getAttribute('response');
}
/**
* Get the requested at date of the automated report result.
*
* @return Carbon|null
*/
public function getRequestedAt(): ?Carbon
{
return $this->getAttribute('requested_at');
}
/**
* Get the generated at date of the automated report result.
*
* @return Carbon|null
*/
public function getGeneratedAt(): ?Carbon
{
return $this->getAttribute('generated_at');
}
/**
* Get the sent at date of the automated report result.
*
* @return Carbon|null
*/
public function getSentAt(): ?Carbon
{
return $this->getAttribute('sent_at');
}
/**
* Get the created at date of the automated report result.
*
* @return Carbon
*/
public function getCreatedAt(): Carbon
{
return $this->getAttribute('created_at');
}
/**
* Get the updated at date of the automated report result.
*
* @return Carbon
*/
public function getUpdatedAt(): Carbon
{
return $this->getAttribute('updated_at');
}
/**
* Check if the report result is in requested status.
*
* @return bool
*/
public function isRequested(): bool
{
return $this->getStatus() === self::STATUS_REQUESTED;
}
/**
* Check if the report result is in generated status.
*
* @return bool
*/
public function isGenerated(): bool
{
return $this->getStatus() === self::STATUS_GENERATED;
}
/**
* Check if the report result is in sent status.
*
* @return bool
*/
public function isSent(): bool
{
return $this->getStatus() === self::STATUS_SENT;
}
/**
* Check if the report result is in failed status.
*
* @return bool
*/
public function isFailed(): bool
{
return $this->getStatus() === self::STATUS_FAILED;
}
public function getStatusLabel(): string
{
return match ($this->getStatus()) {
self::STATUS_REQUESTED => 'Requested',
self::STATUS_GENERATED => 'Generated',
self::STATUS_SENT => 'Sent',
self::STATUS_FAILED => 'Failed',
default => 'Default',
};
}
public function getReport(): AutomatedReport
{
return $this->getAttribute('report');
}
public function getFromDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['from_date'])) {
return null;
}
return Carbon::parse($payload['from_date']);
}
public function getToDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['to_date'])) {
return null;
}
return Carbon::parse($payload['to_date']);
}
public function getReportType(): ?string
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['report_type'])) {
return null;
}
return $payload['report_type'];
}
public function getGroups(): array
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['group_ids'])) {
return [];
}
return $payload['group_ids'];
}
public function getPdfUrl(): ?string
{
$response = $this->getResponse();
return $response['pdf_url'] ?? null;
}
public function getPodcastAudioUrl(): ?string
{
$response = $this->getResponse();
return $response['podcast_audio_url'] ?? null;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
19
17
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
select * from users where group_id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
SELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
40661
|
860
|
7
|
2026-04-16T16:44:53.910732+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776357893910_m1.jpg...
|
iTerm2
|
sqlite3
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL\nidx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL\nidx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)\nidx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)\nidx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name)\nidx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL\nidx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL\nidx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL\nidx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id\n ON frames(elements_ref_frame_id)\n WHERE elements_ref_frame_id IS NOT NULL\nidx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)\nidx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)\nidx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)\nidx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)\nidx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)\nidx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)\nidx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)\nidx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)\nidx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)\nidx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL\nidx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)\nidx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'\nidx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)\nidx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)\nidx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)\nidx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)\nidx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)\nidx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)\nidx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)\nidx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)\nidx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL\nidx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)\nidx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)\nidx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL\nidx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)\nidx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT\n 'elements_fts' as name, COUNT(*) as rows FROM elements_fts\nUNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts\nUNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts\nUNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;\"\nelements_fts|2595462\nframes_fts|40394\nui_events_fts|51394\naudio_transcriptions_fts|3\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT name, SUM(payload) as bytes\nFROM dbstat\nWHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')\nGROUP BY name;\"\nelements_fts_data|49417125\nframes_fts_data|46211048\nui_events_fts_data|1661147\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT name, SUM(payload) as bytes\nFROM dbstat\nWHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')\nGROUP BY name;\"\nelements|334884969\nelements_fts_data|49472096\nframes|689381789\nframes_fts_data|46270876\nui_events|8354906\nui_events_fts_data|1663427\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;\"\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 1 line ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n id UNINDEXED,\n tokenize='unicode61'\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 1 line ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n)\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls\nconfig.json\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-shm\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-09.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-13.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-16.0.log\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-wal\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-11.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-14.0.log\ndb.sqlite\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpipes\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-12.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-15.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 5632584\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \ndrwx------+ 91 lukas staff 2912 16 Apr 18:54 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 5637600\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\ndrwx------+ 91 lukas staff 2912 16 Apr 19:24 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh\nzsh: command not found: screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh\nzsh: command not found: screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME\n/Users/lukas\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe\ntotal 5646848\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \ndrwx------+ 91 lukas staff 2912 16 Apr 19:24 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nzsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 5640560\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\ndrwx------+ 91 lukas staff 2912 16 Apr 19:24 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log\n-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh \nOK: NAS mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nOK: NAS mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nERROR: NAS not mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nOK: NAS mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo \"Yesterday: $DATE\"\nYesterday: 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo \"Today: $DATE_TODAY\"\nToday: 2026-04-16\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT COUNT(*) || ' frames for ' || '$DATE'\"\n1 frames for 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');\"\n886876 elements for 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';\"\n14453 ui_events for 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL\nidx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL\nidx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)\nidx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)\nidx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name)\nidx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL\nidx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL\nidx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL\nidx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id\n ON frames(elements_ref_frame_id)\n WHERE elements_ref_frame_id IS NOT NULL\nidx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)\nidx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)\nidx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)\nidx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)\nidx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)\nidx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)\nidx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)\nidx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)\nidx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)\nidx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL\nidx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)\nidx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'\nidx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)\nidx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)\nidx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)\nidx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)\nidx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)\nidx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)\nidx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)\nidx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)\nidx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL\nidx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)\nidx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)\nidx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL\nidx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)\nidx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT\n 'elements_fts' as name, COUNT(*) as rows FROM elements_fts\nUNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts\nUNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts\nUNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;\"\nelements_fts|2595462\nframes_fts|40394\nui_events_fts|51394\naudio_transcriptions_fts|3\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT name, SUM(payload) as bytes\nFROM dbstat\nWHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')\nGROUP BY name;\"\nelements_fts_data|49417125\nframes_fts_data|46211048\nui_events_fts_data|1661147\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT name, SUM(payload) as bytes\nFROM dbstat\nWHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')\nGROUP BY name;\"\nelements|334884969\nelements_fts_data|49472096\nframes|689381789\nframes_fts_data|46270876\nui_events|8354906\nui_events_fts_data|1663427\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;\"\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 1 line ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n id UNINDEXED,\n tokenize='unicode61'\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 1 line ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n)\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls\nconfig.json\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-shm\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-09.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-13.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-16.0.log\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-wal\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-11.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-14.0.log\ndb.sqlite\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpipes\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-12.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-15.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 5632584\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \ndrwx------+ 91 lukas staff 2912 16 Apr 18:54 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 5637600\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\ndrwx------+ 91 lukas staff 2912 16 Apr 19:24 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh\nzsh: command not found: screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh\nzsh: command not found: screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME\n/Users/lukas\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe\ntotal 5646848\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \ndrwx------+ 91 lukas staff 2912 16 Apr 19:24 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 25 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nzsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 5640560\ndrwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .\ndrwx------+ 91 lukas staff 2912 16 Apr 19:24 ..\n-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data\n-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log\n-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh \nOK: NAS mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nOK: NAS mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nERROR: NAS not mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh\nOK: NAS mounted\nOK: Source DB exists\n2.7G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\nINFO: archive.db does not exist yet - will be created on first sync\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo \"Yesterday: $DATE\"\nYesterday: 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo \"Today: $DATE_TODAY\"\nToday: 2026-04-16\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT COUNT(*) || ' frames for ' || '$DATE'\"\n1 frames for 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');\"\n886876 elements for 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';\"\n14453 ui_events for 2026-04-15\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.16388889,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.16388889,"top":0.05888889,"width":0.16388889,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.16805555,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.32777777,"top":0.05888889,"width":0.16388889,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33194444,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.16388889,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"sqlite3","depth":2,"bounds":{"left":0.65555555,"top":0.05888889,"width":0.16388889,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6597222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Review screenpipe usage and Boosteroid integration (node)","depth":2,"bounds":{"left":0.8194444,"top":0.05888889,"width":0.16388889,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.82361114,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":1,"bounds":{"left":0.4826389,"top":0.033333335,"width":0.034027778,"height":0.017777778},"role_description":"text"}]...
|
-8532786685220528698
|
-4006304114753475837
|
visual_change
|
accessibility
|
NULL
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
NULL
|
|
1878
|
40
|
29
|
2026-04-12T08:40:22.630483+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-12/1775 /Users/lukas/.screenpipe/data/data/2026-04-12/1775983222630_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DiaFileEditViewTabsBookmarksHistoryExtensionsWindo DiaFileEditViewTabsBookmarksHistoryExtensionsWindowHelpPersonal* Claude PlatformQuickstart - Screenpipcocs screenoloe Whar can vou co Witn Screenoloer - Screenoloe docswhat can you do withsP Western Digital Red PluS Western Digital Red PlL© М5 Max Mac Studio Red Apple Mac Studio M4 N§ Лаптопи Apple | Lapto)• New TabQ search screenpipe docs...pricingdiscordgithub* Claudelobl• Dia Browser | Latest Re100% [Z5lSun 12 Apr 11:40:22• Chatdownload›https://docs.screenpi.pe/use-casesdocumentationget startedla home4 quickstart" Installationwh casessto architectureolpes( pipe store*, build pipes• pipe permissionsconnect= mcp server- mep apps$ connections• cloud syncE cloud archive% teamsuse cases• search screen historvU, meetina transcription13 ai memorv<> for developersintegrations@ chatgpt.apple intelligenceo lama/- Claude codedeencoeevoencawapi referencewhat can you do with screenpipe?Everything you can do with screenpipe — from daily summaries to time tracking tomeeting transcription. Organized by what you're trying to accomplish.screenpipe captures your screen and audio 24/7 and makes it available to Al. here's everythingyou can do with it, organized by what you're trying to accomplish.E On this pageclose your loopsnever miss a mecuno cerellltrack your time automaticallywrite standups and reports in secondsbuild a personal knowledae basegive Al memory of your screenmonitor your Al usagemanage relationshipsautomate anythingfor teamsget startedclose your loopsyou jump between 10 projects a day, you forget where you left off. screenpipe remembers foryou.• ask Al: "what was I working on before lunch?" → get the exact file, app, and context• ask Al: "what was that API endpoint I was looking at in Chrome yesterday?" → find itInstanuy• run Day Recap pipe: get a daily summary of accomplishments, unfinished work, and whatto do next• search by time: curl "http://localhost:3030/search?start_time=2026-04-10T09:00:00Z&end_time=2026-04-10T12:00:00Z"best setup: connect Claude Desktop or Cursor via MCP → ask natural language questionsabout your screen history.never miss a meeting detailsomeone mentioned a deadline in a Zoom call but you weren't paying attention. screenpipewos.• search transcriptions: "what did John say about the deadline?" → find the exact quote• install Meeting Intelligence pipe (17 installs): Al summaries enriched with relationshiphistory, screen context, and memories - gets smarter over time• speaker identification: screenpipe identifies who said what — label speakers once,recognized forever•search ov speaker: curl "http:Localhost:3030/search?content_type=audio&speaker_name=John"...
|
NULL
|
-8532244055720723504
|
NULL
|
visual_change
|
ocr
|
NULL
|
DiaFileEditViewTabsBookmarksHistoryExtensionsWindo DiaFileEditViewTabsBookmarksHistoryExtensionsWindowHelpPersonal* Claude PlatformQuickstart - Screenpipcocs screenoloe Whar can vou co Witn Screenoloer - Screenoloe docswhat can you do withsP Western Digital Red PluS Western Digital Red PlL© М5 Max Mac Studio Red Apple Mac Studio M4 N§ Лаптопи Apple | Lapto)• New TabQ search screenpipe docs...pricingdiscordgithub* Claudelobl• Dia Browser | Latest Re100% [Z5lSun 12 Apr 11:40:22• Chatdownload›https://docs.screenpi.pe/use-casesdocumentationget startedla home4 quickstart" Installationwh casessto architectureolpes( pipe store*, build pipes• pipe permissionsconnect= mcp server- mep apps$ connections• cloud syncE cloud archive% teamsuse cases• search screen historvU, meetina transcription13 ai memorv<> for developersintegrations@ chatgpt.apple intelligenceo lama/- Claude codedeencoeevoencawapi referencewhat can you do with screenpipe?Everything you can do with screenpipe — from daily summaries to time tracking tomeeting transcription. Organized by what you're trying to accomplish.screenpipe captures your screen and audio 24/7 and makes it available to Al. here's everythingyou can do with it, organized by what you're trying to accomplish.E On this pageclose your loopsnever miss a mecuno cerellltrack your time automaticallywrite standups and reports in secondsbuild a personal knowledae basegive Al memory of your screenmonitor your Al usagemanage relationshipsautomate anythingfor teamsget startedclose your loopsyou jump between 10 projects a day, you forget where you left off. screenpipe remembers foryou.• ask Al: "what was I working on before lunch?" → get the exact file, app, and context• ask Al: "what was that API endpoint I was looking at in Chrome yesterday?" → find itInstanuy• run Day Recap pipe: get a daily summary of accomplishments, unfinished work, and whatto do next• search by time: curl "http://localhost:3030/search?start_time=2026-04-10T09:00:00Z&end_time=2026-04-10T12:00:00Z"best setup: connect Claude Desktop or Cursor via MCP → ask natural language questionsabout your screen history.never miss a meeting detailsomeone mentioned a deadline in a Zoom call but you weren't paying attention. screenpipewos.• search transcriptions: "what did John say about the deadline?" → find the exact quote• install Meeting Intelligence pipe (17 installs): Al summaries enriched with relationshiphistory, screen context, and memories - gets smarter over time• speaker identification: screenpipe identifies who said what — label speakers once,recognized forever•search ov speaker: curl "http:Localhost:3030/search?content_type=audio&speaker_name=John"...
|
1877
|
|
61961
|
1335
|
22
|
2026-04-21T07:18:26.382529+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755906382_m2.jpg...
|
Firefox
|
JY-20701 | Reschedule HubSpot Sync Objects by yalo JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11989/changes#diff-b8b github.com/jiminny/app/pull/11989/changes#diff-b8b6dffeffd9f880149efbe08aa7165b161a69611ee9fc88406f7ca73903b1a2...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
7
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Expand file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Console/Commands/Crm/SyncHubspotObjects.php
app/Console/Commands/Crm/SyncHubspotObjects.php
app/Console/Commands/Crm/SyncHubspotObjects.php
Copy file name to clipboard
Lines changed: 79 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Console/Commands/Crm/SyncObjects.php
app/Console/Commands/Crm/SyncObjects.php
app/Console/Commands/Crm/SyncObjects.php
Copy file name to clipboard
Lines changed: 41 additions & 36 deletions
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Console/Kernel.php
app/Console/Kernel.php
app/Console/Kernel.php
Copy file name to clipboard
Expand all lines: app/Console/Kernel.php
Lines changed: 4 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -133,6 +133,7 @@ class Kernel extends ConsoleKernel
133
Commands
\
Crm
\SyncProfileMetadata::class,
133
Commands
\
Crm
\SyncProfileMetadata::class,
134
Commands
\
Crm
\SyncContact::class,
134
Commands
\
Crm
\SyncContact::class,
135
Commands
\
Crm
\SyncObjects::class,
135
Commands
\
Crm
\SyncObjects::class,
136
+
Commands
\
Crm
\SyncHubspotObjects::class,
136
Commands
\
Crm
\SyncAccount::class,
137
Commands
\
Crm
\SyncAccount::class,
137
Commands
\
Crm
\ResetGovernorLimits::class,
138
Commands
\
Crm
\ResetGovernorLimits::class,
138
Commands
\
Crm
\ManageSyncStrategyCommand::class,
139
Commands
\
Crm
\ManageSyncStrategyCommand::class,
@@ -407,6 +408,9 @@ protected function scheduleEveryTwoMinutes(): void
407
protected
function
scheduleEveryFiveMinutes
():
void
408
protected
function
scheduleEveryFiveMinutes
():
void
408
{
409
{
409
$
this
->
scheduleCommand
(
'
activity:purge-stale
'
, [],
4
)->
everyFiveMinutes
();
410
$
this
->
scheduleCommand
(
'
activity:purge-stale
'
, [],
4
)->
everyFiveMinutes
();
411
+
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
412
+
$
this
->
scheduleCommand
(
'
crm:sync-hubspot-objects
'
, [],
4
)
413
+
->
cron
(
'
1,6,11,16,21,26,31,36,41,46,51,56 * * * *
'
);
410
$
this
->
scheduleCommand
(
'
mailbox:text-relay:sync
'
)->
everyFiveMinutes...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.1740359,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.3639266,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.10721409,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.48922586,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (21)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 949 additions & 97 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (22)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (11)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"bounds":{"left":0.090259306,"top":0.07581804,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.030086435,"height":0.08060654},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"bounds":{"left":0.090259306,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Open","depth":14,"bounds":{"left":0.112865694,"top":0.06943336,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"bounds":{"left":0.1314827,"top":0.058260176,"width":0.103390954,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":16,"bounds":{"left":0.1314827,"top":0.059856344,"width":0.103390954,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.23753324,"top":0.059856344,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"bounds":{"left":0.24035904,"top":0.059856344,"width":0.012965426,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.12882313,"top":0.07182761,"width":0.03374335,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All commits","depth":16,"bounds":{"left":0.13181517,"top":0.07701516,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"bounds":{"left":0.1668883,"top":0.07581804,"width":0.029920213,"height":0.014365523},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"bounds":{"left":0.1668883,"top":0.07701516,"width":0.029920213,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"bounds":{"left":0.1981383,"top":0.07701516,"width":0.060339097,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.25980717,"top":0.074221864,"width":0.018284574,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.26180187,"top":0.07741421,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.27942154,"top":0.07701516,"width":0.00880984,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"bounds":{"left":0.28956118,"top":0.074221864,"width":0.09507979,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"bounds":{"left":0.29155585,"top":0.07741421,"width":0.091090426,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.38597074,"top":0.07182761,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7","depth":15,"bounds":{"left":0.8211436,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8234708,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":15,"bounds":{"left":0.82696146,"top":0.070231445,"width":0.0038231383,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.83194816,"top":0.070231445,"width":0.013131649,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":14,"bounds":{"left":0.85339093,"top":0.0650439,"width":0.04654255,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":16,"bounds":{"left":0.8630319,"top":0.070231445,"width":0.033909574,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"bounds":{"left":0.9025931,"top":0.0650439,"width":0.03856383,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"bounds":{"left":0.9055851,"top":0.070231445,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"bounds":{"left":0.920379,"top":0.070231445,"width":0.012466756,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"bounds":{"left":0.9438165,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open overview panel","depth":14,"bounds":{"left":0.96143615,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open comments panel","depth":14,"bounds":{"left":0.97207445,"top":0.0650439,"width":0.017287234,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"bounds":{"left":0.98038566,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"bounds":{"left":0.9830452,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"bounds":{"left":0.9857048,"top":0.070231445,"width":0.0014960107,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"bounds":{"left":0.1015625,"top":0.11332801,"width":0.06815159,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"bounds":{"left":0.17270611,"top":0.112529926,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"File tree","depth":15,"bounds":{"left":0.09059176,"top":0.15083799,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"bounds":{"left":0.09059176,"top":0.15363128,"width":0.014295213,"height":0.0518755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"bounds":{"left":0.1065492,"top":0.15682362,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":21,"bounds":{"left":0.10920878,"top":0.18276137,"width":0.017453458,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands/Crm","depth":23,"bounds":{"left":0.11186835,"top":0.20830008,"width":0.03474069,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Traits","depth":25,"bounds":{"left":0.114527926,"top":0.23383878,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjectsCommandTrait.php","depth":27,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjectsCommandTrait.php","depth":28,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kernel.php","depth":23,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kernel.php","depth":24,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Http/Controllers/Webhook/Hubspot","depth":21,"bounds":{"left":0.10920878,"top":0.36193135,"width":0.07579787,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ProcessesWebhooksTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ProcessesWebhooksTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jobs/Crm","depth":21,"bounds":{"left":0.10920878,"top":0.41340783,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm/Hubspot/ServiceTraits","depth":21,"bounds":{"left":0.10920878,"top":0.49002394,"width":0.0774601,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OpportunitySyncTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OpportunitySyncTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.1065492,"top":0.54110134,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 81 additions & 0 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Viewed","depth":14,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Console/Commands/Crm/SyncHubspotObjects.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Console/Commands/Crm/SyncHubspotObjects.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Console/Commands/Crm/SyncHubspotObjects.php","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 79 additions & 0 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Viewed","depth":14,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Console/Commands/Crm/SyncObjects.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Console/Commands/Crm/SyncObjects.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Console/Commands/Crm/SyncObjects.php","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 41 additions & 36 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Viewed","depth":14,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse file","depth":14,"bounds":{"left":0.19730718,"top":0.0,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Console/Kernel.php","depth":15,"bounds":{"left":0.20794548,"top":0.0,"width":0.05285904,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Console/Kernel.php","depth":16,"bounds":{"left":0.20794548,"top":0.0,"width":0.05285904,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Console/Kernel.php","depth":18,"bounds":{"left":0.20794548,"top":0.0,"width":0.05285904,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.2634641,"top":0.0,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Expand all lines: app/Console/Kernel.php","depth":15,"bounds":{"left":0.2727726,"top":0.0,"width":0.00930851,"height":0.022346368},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 4 additions & 0 deletions","depth":15,"bounds":{"left":0.9115692,"top":0.0,"width":0.019946808,"height":0.11412609},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Viewed","depth":14,"bounds":{"left":0.93583775,"top":0.0,"width":0.026595745,"height":0.022346368},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"bounds":{"left":0.94547874,"top":0.0,"width":0.013962766,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"bounds":{"left":0.9650931,"top":0.0,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"bounds":{"left":0.97706115,"top":0.0,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Original file line number","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -133,6 +133,7 @@ class Kernel extends ConsoleKernel","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"133","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncProfileMetadata::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"133","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncProfileMetadata::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"134","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncContact::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"134","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncContact::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"135","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncObjects::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"135","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncObjects::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"136","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncHubspotObjects::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"136","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncAccount::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"137","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\SyncAccount::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"137","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\ResetGovernorLimits::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"138","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\ResetGovernorLimits::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"138","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\ManageSyncStrategyCommand::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"139","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\ManageSyncStrategyCommand::class,","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -407,6 +408,9 @@ protected function scheduleEveryTwoMinutes(): void","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"407","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"scheduleEveryFiveMinutes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"void","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"408","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"scheduleEveryFiveMinutes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"void","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"408","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"409","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"409","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"scheduleCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity:purge-stale","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", [],","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"everyFiveMinutes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"410","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"scheduleCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity:purge-stale","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", [],","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"everyFiveMinutes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"411","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"412","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"scheduleCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"crm:sync-hubspot-objects","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", [],","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"413","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"cron","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,6,11,16,21,26,31,36,41,46,51,56 * * * *","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":");","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"410","depth":16,"bounds":{"left":0.19830452,"top":0.0,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.23636968,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.23886304,"top":0.0,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.24850398,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"scheduleCommand","depth":18,"bounds":{"left":0.25332448,"top":0.0,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.28922874,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.29155585,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"mailbox:text-relay:sync","depth":18,"bounds":{"left":0.2940492,"top":0.0,"width":0.05518617,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.3492354,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")->","depth":18,"bounds":{"left":0.3515625,"top":0.0,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"everyFiveMinutes","depth":18,"bounds":{"left":0.35887632,"top":0.0,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8531411163186976919
|
-5689876397642718900
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
7
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Expand file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Console/Commands/Crm/SyncHubspotObjects.php
app/Console/Commands/Crm/SyncHubspotObjects.php
app/Console/Commands/Crm/SyncHubspotObjects.php
Copy file name to clipboard
Lines changed: 79 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Console/Commands/Crm/SyncObjects.php
app/Console/Commands/Crm/SyncObjects.php
app/Console/Commands/Crm/SyncObjects.php
Copy file name to clipboard
Lines changed: 41 additions & 36 deletions
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Console/Kernel.php
app/Console/Kernel.php
app/Console/Kernel.php
Copy file name to clipboard
Expand all lines: app/Console/Kernel.php
Lines changed: 4 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -133,6 +133,7 @@ class Kernel extends ConsoleKernel
133
Commands
\
Crm
\SyncProfileMetadata::class,
133
Commands
\
Crm
\SyncProfileMetadata::class,
134
Commands
\
Crm
\SyncContact::class,
134
Commands
\
Crm
\SyncContact::class,
135
Commands
\
Crm
\SyncObjects::class,
135
Commands
\
Crm
\SyncObjects::class,
136
+
Commands
\
Crm
\SyncHubspotObjects::class,
136
Commands
\
Crm
\SyncAccount::class,
137
Commands
\
Crm
\SyncAccount::class,
137
Commands
\
Crm
\ResetGovernorLimits::class,
138
Commands
\
Crm
\ResetGovernorLimits::class,
138
Commands
\
Crm
\ManageSyncStrategyCommand::class,
139
Commands
\
Crm
\ManageSyncStrategyCommand::class,
@@ -407,6 +408,9 @@ protected function scheduleEveryTwoMinutes(): void
407
protected
function
scheduleEveryFiveMinutes
():
void
408
protected
function
scheduleEveryFiveMinutes
():
void
408
{
409
{
409
$
this
->
scheduleCommand
(
'
activity:purge-stale
'
, [],
4
)->
everyFiveMinutes
();
410
$
this
->
scheduleCommand
(
'
activity:purge-stale
'
, [],
4
)->
everyFiveMinutes
();
411
+
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
412
+
$
this
->
scheduleCommand
(
'
crm:sync-hubspot-objects
'
, [],
4
)
413
+
->
cron
(
'
1,6,11,16,21,26,31,36,41,46,51,56 * * * *
'
);
410
$
this
->
scheduleCommand
(
'
mailbox:text-relay:sync
'
)->
everyFiveMinutes...
|
61959
|
|
46395
|
980
|
15
|
2026-04-17T10:34:21.028958+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776422061028_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorRun PhpStormFileEditViewNavigateCodeLaravelRefactorRunToolsWindowHelpFV faVsco.s vT° JY-20692-fix-integration-app-[API_KEY] socuery.selM+ README.mdê sonar-project.properties=test.py‹> Untitled Diagram.xmlIs vetur.config.jsM+ WEBHOOKHILIERING _IMPLE›n-xenal Lioares= Scratches and Consolesv _ Database ConsolesV AEUA console [EU]4 DEAL RISKS [EU]A DI [EU]A EU [EU]v A jiminny@localhostA console [jiminny@localtDI [jiminny@localhost]A HS_local [jiminny@localc srmnovolocalnosti& zono dev iminny alocaV A PROD102910302 usagesprivate function importExternalFieldData(array Sproperties, int Sopportunity1a,193$crmFields = $this->get0pportunitySyncableFields();$this->import0pportunityCrmFieldData($properties, $crmFields, $opportunity!Services© AutomatedReportsService.phpC ReportController.php© SendReportJob.phpTokenBuilder.php• Filesystem.php© Team.php© CreateHeldActivityEvent.phpC RequestGenerateReportJob.phpOpportunitySyncTrait.php© SendReportMailJob.phpc leamsetuocontroller.onpphp api.php© TrackProviderInstalledEvent.php© Opportunity.php= custom.log= laravel.logA HS_local [jiminny@localhost]A console [PROD]A console [STAGING]X:Auto vA SF [jiminny@localhost] XC scratch_1json4 console [EUlcrmenutykeposilorv.ongPlaygroundT InteractsWithPivotTable.phgOpoorunityupdated.oneOpoorunitystadeupaated.onoc) FventService?rovider.onn© RunOpportunityAiAnalysis.php( ImportBatchJobTrait.php© OpportunityPendingAiAnalysisAfterStageChanged.php© ProcessAiAutomationAnalysisResults.php(C) Service.php183© ImportOpportunityBatch.php185186SELECT ar.ig, ar-wuid, ar.mediantxpe, ar.status, a.tvReFROM automated_report_results arJOIN automated_reports a ON a.id = ar.repontoidWHERE a.txRe = 'ask_iiminnx'LIMLITO.10181928cachedStagesCcWtrait OpportunitySyncTraitA33 V2 V19 ^ v 187private function resolveForecastCategory(?string $forecastCategory): stringf=170191E192 vselect * from teamswhere id = 3143;select * from crm_configurations where id = 500;select * from users where name = 'Integration Account'; # 1695SELECT * FROM social_accounts WHERE sociable_id = 1695;# OutputB # 1695 x~ D DatabaseY A EU4 console 1 s 59 msfii crm_configurations 1 s 391 msy djiminny@localhost4 SF 756 md moocallV A PROD< console ls o0o msV A STAGINGA console& Docker3 rowsvIX. AutovICIsImtpZCI6IjVmNWFhZGFkLTQwZDktNDLkNy04ZWI2LTAzNmNLM...ДQMAФI expires T177633617617296136151776508019÷Irefresh token expires Y!O provider Y<null> google<null> zoom-phone<null> integration-app!Ostate Yfull-refreshfull-refreshconnectedV connect.vuefi crm_configurations (EU]V Onboard.vuema liminnvv09 A12 V2 V4 A V> 0{ Support Daily - in 1h 26 mAL AutomatedReportsCommandTestv100% 1Z7Fri 17 Apr 13:34:20CascadeAutomated Report RetrDebugging OpportunitUpdate Connection Loso why did you use @connect.vue#L170 connection?.disconnected in cone place andconnection.disconnected on otherNo functional reason - it's inconsistent. connect.vue already has a connection && guard so the optionalchalnine . Is recuneanttnere. Ler me alien ootn tlles lo use plaln dor notation since conneccion isalwavs checked for existence first• connect.vue+1 -1Both files now consistently use plain dot notation — connection is always null-checked before accessingits properties.wta all**ztlles t3-o%ASk anyining atl• • CodeClaude Sonnet 4.6I auth_scope Topenid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/calendar http….phone:read:admin user:read:adminReject allAccept all• :CSVvI retry_after T<nul><null><null>® B,I crea12026-0.2024-112026-01Shortcuts conflicts: Clone Caret Above and 1 more shortcut conflict with macOS shortcuts. Modify these shortcuts or change macOS system settings. // Modify Shortcuts // Don't Show Again (today 12:22)SUM: 1776508019 3:6 W Windsurf Teams 192:19 0 UTF-84 spaces...
|
NULL
|
-8531261538077565932
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorRun PhpStormFileEditViewNavigateCodeLaravelRefactorRunToolsWindowHelpFV faVsco.s vT° JY-20692-fix-integration-app-[API_KEY] socuery.selM+ README.mdê sonar-project.properties=test.py‹> Untitled Diagram.xmlIs vetur.config.jsM+ WEBHOOKHILIERING _IMPLE›n-xenal Lioares= Scratches and Consolesv _ Database ConsolesV AEUA console [EU]4 DEAL RISKS [EU]A DI [EU]A EU [EU]v A jiminny@localhostA console [jiminny@localtDI [jiminny@localhost]A HS_local [jiminny@localc srmnovolocalnosti& zono dev iminny alocaV A PROD102910302 usagesprivate function importExternalFieldData(array Sproperties, int Sopportunity1a,193$crmFields = $this->get0pportunitySyncableFields();$this->import0pportunityCrmFieldData($properties, $crmFields, $opportunity!Services© AutomatedReportsService.phpC ReportController.php© SendReportJob.phpTokenBuilder.php• Filesystem.php© Team.php© CreateHeldActivityEvent.phpC RequestGenerateReportJob.phpOpportunitySyncTrait.php© SendReportMailJob.phpc leamsetuocontroller.onpphp api.php© TrackProviderInstalledEvent.php© Opportunity.php= custom.log= laravel.logA HS_local [jiminny@localhost]A console [PROD]A console [STAGING]X:Auto vA SF [jiminny@localhost] XC scratch_1json4 console [EUlcrmenutykeposilorv.ongPlaygroundT InteractsWithPivotTable.phgOpoorunityupdated.oneOpoorunitystadeupaated.onoc) FventService?rovider.onn© RunOpportunityAiAnalysis.php( ImportBatchJobTrait.php© OpportunityPendingAiAnalysisAfterStageChanged.php© ProcessAiAutomationAnalysisResults.php(C) Service.php183© ImportOpportunityBatch.php185186SELECT ar.ig, ar-wuid, ar.mediantxpe, ar.status, a.tvReFROM automated_report_results arJOIN automated_reports a ON a.id = ar.repontoidWHERE a.txRe = 'ask_iiminnx'LIMLITO.10181928cachedStagesCcWtrait OpportunitySyncTraitA33 V2 V19 ^ v 187private function resolveForecastCategory(?string $forecastCategory): stringf=170191E192 vselect * from teamswhere id = 3143;select * from crm_configurations where id = 500;select * from users where name = 'Integration Account'; # 1695SELECT * FROM social_accounts WHERE sociable_id = 1695;# OutputB # 1695 x~ D DatabaseY A EU4 console 1 s 59 msfii crm_configurations 1 s 391 msy djiminny@localhost4 SF 756 md moocallV A PROD< console ls o0o msV A STAGINGA console& Docker3 rowsvIX. AutovICIsImtpZCI6IjVmNWFhZGFkLTQwZDktNDLkNy04ZWI2LTAzNmNLM...ДQMAФI expires T177633617617296136151776508019÷Irefresh token expires Y!O provider Y<null> google<null> zoom-phone<null> integration-app!Ostate Yfull-refreshfull-refreshconnectedV connect.vuefi crm_configurations (EU]V Onboard.vuema liminnvv09 A12 V2 V4 A V> 0{ Support Daily - in 1h 26 mAL AutomatedReportsCommandTestv100% 1Z7Fri 17 Apr 13:34:20CascadeAutomated Report RetrDebugging OpportunitUpdate Connection Loso why did you use @connect.vue#L170 connection?.disconnected in cone place andconnection.disconnected on otherNo functional reason - it's inconsistent. connect.vue already has a connection && guard so the optionalchalnine . Is recuneanttnere. Ler me alien ootn tlles lo use plaln dor notation since conneccion isalwavs checked for existence first• connect.vue+1 -1Both files now consistently use plain dot notation — connection is always null-checked before accessingits properties.wta all**ztlles t3-o%ASk anyining atl• • CodeClaude Sonnet 4.6I auth_scope Topenid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/calendar http….phone:read:admin user:read:adminReject allAccept all• :CSVvI retry_after T<nul><null><null>® B,I crea12026-0.2024-112026-01Shortcuts conflicts: Clone Caret Above and 1 more shortcut conflict with macOS shortcuts. Modify these shortcuts or change macOS system settings. // Modify Shortcuts // Don't Show Again (today 12:22)SUM: 1776508019 3:6 W Windsurf Teams 192:19 0 UTF-84 spaces...
|
NULL
|
|
32742
|
662
|
35
|
2026-04-16T07:18:57.105218+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776323937105_m1.jpg...
|
Firefox
|
Verify it’s you To help keep your account safe, Go Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more — Work...
|
True
|
mail.google.com/mail/u/0/#inbox/FMfcgzQgLPQtDQdBll mail.google.com/mail/u/0/#inbox/FMfcgzQgLPQtDQdBllVcSsKvJNdwwpTg...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Verify it’s you To help keep your account safe, Go Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more
accounts.google.com
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sandbox: Verify your identity in Salesforce - [EMAIL] - Jiminny Mail
Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more
Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more
Close tab
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Verify it’s you
Verify it’s you
To help keep your account safe, Google wants to make sure it’s really you trying to sign in.
Learn more
Learn more
[EMAIL] selected. Switch account
[EMAIL]
Choose how you want to sign in:
Choose how you want to sign in:
Get a verification code sent to your phone...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more","depth":4,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"accounts.google.com","depth":4,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sandbox: Verify your identity in Salesforce - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Verify it’s you","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Verify it’s you","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To help keep your account safe, Google wants to make sure it’s really you trying to sign in.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"integration-account@jiminny.com selected. Switch account","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"integration-account@jiminny.com","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Choose how you want to sign in:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose how you want to sign in:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get a verification code sent to your phone","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-8530759723654527075
|
-4714353466008411937
|
click
|
accessibility
|
NULL
|
Verify it’s you To help keep your account safe, Go Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more
accounts.google.com
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sandbox: Verify your identity in Salesforce - [EMAIL] - Jiminny Mail
Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more
Verify it’s you To help keep your account safe, Google wants to make sure it’s really you trying to sign in. Learn more
Close tab
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Verify it’s you
Verify it’s you
To help keep your account safe, Google wants to make sure it’s really you trying to sign in.
Learn more
Learn more
[EMAIL] selected. Switch account
[EMAIL]
Choose how you want to sign in:
Choose how you want to sign in:
Get a verification code sent to your phone...
|
32740
|
|
24242
|
525
|
18
|
2026-04-15T12:07:47.620849+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776254867620_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
CaudeFileEditViewWindowHelp• Not Secure | http://[ CaudeFileEditViewWindowHelp• Not Secure | http://[IP_ADDRESS]:8767/frames_fts_data/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I SeneticТвърд диск, Western Digital Red 6TB Plus ( 3.5". 256N* SQLite Web: db.sqlitew Screenpipe DashboardV Welcome to Steam— New |aomenoe c ne crmmial vommmialleIf you already have Terminal open, or preferusing it, you can command Finder to open thefolder for you.1. Open the Terminal app (you can find itby pressing Command + Space to openSpotlight and typing "Terminal").2. Type the following command: open~/. screenpipe3. Press Return. A new Finder window willimmediately pop up showing thecontents of the folder.Method 3: Unhide All Files in Your HomeDirectoryIf you want to be able to see the folderalongside your normal files so you can clickinto it manually.1. Open Finder.2. Go to your Home folder by pressingCommand + Shift + H (this is what the~ symbol represents).3. Press Command + Shift + . (Command,Shift, and the Period key at the sametime).4. You will see all your hidden files andfolders fade into view. Scroll down to findthe .screenpipe folder and double-click5. Note: You can press Command + Shift +• again to hide the files when you aredone to keep your folders looking clean.Eс :Ask GeminiPro vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pagesqlite-web 0.7.2 db.sqlite frames_fts_datatable name…saix miarationsaudio_chunksaudio_tagsaudio_transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_..audio_transcriptions_…audio_transcriptions_.elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxViceo cnunksIvision laosToggle helper tablesStructureContentSQLCREATE TABLE 'frames_fts_daid INTEGER PRIMARY KEY,block BLOBColumnsColumnblockIndexesnamesulite database browser vo./.L, pgChatCowork> 0CodeSupport Daily • now(A]100% C4"Wed 15 Apr 15:07:47•..n<+ New chatQ Search= CustomizeQ ChatsProjects88 ArtifactsStarredBulgarian citizenship application...Dawarich location tracking projecthecentsLinux SQLite Ul for NASClaude API 500 internal server e...Screenpipe query capabilities a...eGPU compatibility with Mac mi...Understanding OpenRouter APl ...Screenpipe 14-day retention exp...Reddit homepage feed overviewDocker container not visible in c..DIA browser RAM configurationScreenpipe company backgroundDSK Bank Bulgaria secure invest...Building a comprehensive perso...Importing Google Timeline data t...Chromecast remote volume butt...Screenpipe free version guideSelf-hosted LLM alternatives to ..Screenpipe database query setupRunning screenpipe for freeMac Studio network switch setupClaude extension in Vivaldi brow...General normarion redlestRed dots on neck causesChange approvalQuerying Screenpipe with Claud...Setting up daily backups in Ugre...Upcoming remindersAccessing tools in Open WebUlLaraver issue troublesnootingLukas KovalikPro oianLinux SQLite Ul for NAS vframes_fts_content is not here. Lets make the data againYou're right, the size query grouped by name includes index entries separately. Use theQuery tab in sqlite-web and run this — it will give clean per-table sizes only, no indexes:sqlSELECTWlallie,SUM(pgsize) / 1024 / 1024 as size_mbFROM dbstatWHERE name IN ('frames', 'ocr_text', 'elements', 'ui_events','video_chunks','audio_chunks','audio_transcriptions','memories', 'meetings', 'tags', 'vision_tags','audio_tags','speakers', 'speaker _embeddings', 'pipe_executions','frames_fts_data', 'frames_fts_content','elements_fts_data', 'audio_transcriptions_fts_data','memories_fts_data', 'ui_events_fts_data'GROUP BY nameORDER BY SUM(pgsize) DESC;And then also run this to get the actual schema for all real tables at once:sqlSELECT name, sqlFROM sqlite_masterWHERE type='table'AND name NOT LIKE"%_fts%'AND name NOT LIKE 'sqlite_%'AND name NOT LIKE_sq1x%'ORDER BY name;Paste both outputs and I'll give you the full breakdown with proper explanations per table.Reply...+Sonnet 46 vclaude is Al and can make mistakes. rlease double-cneck responses....
|
NULL
|
-8530732419294883814
|
NULL
|
click
|
ocr
|
NULL
|
CaudeFileEditViewWindowHelp• Not Secure | http://[ CaudeFileEditViewWindowHelp• Not Secure | http://[IP_ADDRESS]:8767/frames_fts_data/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I SeneticТвърд диск, Western Digital Red 6TB Plus ( 3.5". 256N* SQLite Web: db.sqlitew Screenpipe DashboardV Welcome to Steam— New |aomenoe c ne crmmial vommmialleIf you already have Terminal open, or preferusing it, you can command Finder to open thefolder for you.1. Open the Terminal app (you can find itby pressing Command + Space to openSpotlight and typing "Terminal").2. Type the following command: open~/. screenpipe3. Press Return. A new Finder window willimmediately pop up showing thecontents of the folder.Method 3: Unhide All Files in Your HomeDirectoryIf you want to be able to see the folderalongside your normal files so you can clickinto it manually.1. Open Finder.2. Go to your Home folder by pressingCommand + Shift + H (this is what the~ symbol represents).3. Press Command + Shift + . (Command,Shift, and the Period key at the sametime).4. You will see all your hidden files andfolders fade into view. Scroll down to findthe .screenpipe folder and double-click5. Note: You can press Command + Shift +• again to hide the files when you aredone to keep your folders looking clean.Eс :Ask GeminiPro vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pagesqlite-web 0.7.2 db.sqlite frames_fts_datatable name…saix miarationsaudio_chunksaudio_tagsaudio_transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_..audio_transcriptions_…audio_transcriptions_.elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxViceo cnunksIvision laosToggle helper tablesStructureContentSQLCREATE TABLE 'frames_fts_daid INTEGER PRIMARY KEY,block BLOBColumnsColumnblockIndexesnamesulite database browser vo./.L, pgChatCowork> 0CodeSupport Daily • now(A]100% C4"Wed 15 Apr 15:07:47•..n<+ New chatQ Search= CustomizeQ ChatsProjects88 ArtifactsStarredBulgarian citizenship application...Dawarich location tracking projecthecentsLinux SQLite Ul for NASClaude API 500 internal server e...Screenpipe query capabilities a...eGPU compatibility with Mac mi...Understanding OpenRouter APl ...Screenpipe 14-day retention exp...Reddit homepage feed overviewDocker container not visible in c..DIA browser RAM configurationScreenpipe company backgroundDSK Bank Bulgaria secure invest...Building a comprehensive perso...Importing Google Timeline data t...Chromecast remote volume butt...Screenpipe free version guideSelf-hosted LLM alternatives to ..Screenpipe database query setupRunning screenpipe for freeMac Studio network switch setupClaude extension in Vivaldi brow...General normarion redlestRed dots on neck causesChange approvalQuerying Screenpipe with Claud...Setting up daily backups in Ugre...Upcoming remindersAccessing tools in Open WebUlLaraver issue troublesnootingLukas KovalikPro oianLinux SQLite Ul for NAS vframes_fts_content is not here. Lets make the data againYou're right, the size query grouped by name includes index entries separately. Use theQuery tab in sqlite-web and run this — it will give clean per-table sizes only, no indexes:sqlSELECTWlallie,SUM(pgsize) / 1024 / 1024 as size_mbFROM dbstatWHERE name IN ('frames', 'ocr_text', 'elements', 'ui_events','video_chunks','audio_chunks','audio_transcriptions','memories', 'meetings', 'tags', 'vision_tags','audio_tags','speakers', 'speaker _embeddings', 'pipe_executions','frames_fts_data', 'frames_fts_content','elements_fts_data', 'audio_transcriptions_fts_data','memories_fts_data', 'ui_events_fts_data'GROUP BY nameORDER BY SUM(pgsize) DESC;And then also run this to get the actual schema for all real tables at once:sqlSELECT name, sqlFROM sqlite_masterWHERE type='table'AND name NOT LIKE"%_fts%'AND name NOT LIKE 'sqlite_%'AND name NOT LIKE_sq1x%'ORDER BY name;Paste both outputs and I'll give you the full breakdown with proper explanations per table.Reply...+Sonnet 46 vclaude is Al and can make mistakes. rlease double-cneck responses....
|
24240
|
|
38240
|
781
|
58
|
2026-04-16T13:05:38.204323+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776344738204_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ClaudeFileEditViewWindowHelpC$O l 0100% <47Thu ClaudeFileEditViewWindowHelpC$O l 0100% <47Thu 16 Apr 16:05:37-zshDOCKER881Last login: Thu Apr 16 15:48:11 on ttys009DEV (-zsh)882APP (-zsh)*3-zsh• $84-zsh85Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~S sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE "%Safari%" OR window_name LIKE "%Boostroid%"ORDER BY created_at DESC LIMIT 20;"Error: in prepare, no such column: created_atari%' OR window_name LIKE "%Boosteroid%' ORDER BY created_at DESC LIMIT 20;error here--^Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE "%Safari%' OR window_name LIKE "%Boostroid%'ORDER BYcreated_at DESC LIMIT 20;"Error: in prepare, no such column: created_atari%' OR window_name LIKE '%Boosteroid%' ORDER BY created_at DESC LIMIT 20;error here ---^lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE "%Safari%' OR window_name LIKE "%Boostroid%' ORDER BYcreated_at DESC LIMIT 20;"Error: in prepare, no such column: created_atari%' OR window_name LIKE '%Boosteroid%' ORDER BY created_at DESC LIMIT 20;error here ---лlukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ U...
|
NULL
|
-8530298852101920753
|
NULL
|
click
|
ocr
|
NULL
|
ClaudeFileEditViewWindowHelpC$O l 0100% <47Thu ClaudeFileEditViewWindowHelpC$O l 0100% <47Thu 16 Apr 16:05:37-zshDOCKER881Last login: Thu Apr 16 15:48:11 on ttys009DEV (-zsh)882APP (-zsh)*3-zsh• $84-zsh85Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~S sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE "%Safari%" OR window_name LIKE "%Boostroid%"ORDER BY created_at DESC LIMIT 20;"Error: in prepare, no such column: created_atari%' OR window_name LIKE "%Boosteroid%' ORDER BY created_at DESC LIMIT 20;error here--^Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE "%Safari%' OR window_name LIKE "%Boostroid%'ORDER BYcreated_at DESC LIMIT 20;"Error: in prepare, no such column: created_atari%' OR window_name LIKE '%Boosteroid%' ORDER BY created_at DESC LIMIT 20;error here ---^lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE "%Safari%' OR window_name LIKE "%Boostroid%' ORDER BYcreated_at DESC LIMIT 20;"Error: in prepare, no such column: created_atari%' OR window_name LIKE '%Boosteroid%' ORDER BY created_at DESC LIMIT 20;error here ---лlukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ U...
|
38235
|
|
48387
|
1027
|
17
|
2026-04-17T12:39:20.358562+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776429560358_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Term2ShellEditViewSessionScriptsProfilesWindowHelp Term2ShellEditViewSessionScriptsProfilesWindowHelpladl• Tech Day Review - in 1h 21 mAAPP (-zsh)X4-zshDOCKER• ₴1DEV (docker)APP (-zsh)X3-zsh• ₴5* Review screenp...• 286Changes notstagedfor commit:(use"git add ‹file>..to update what will becommitted)(use"git restore<files..." to discard changesin working directory)modified:./.env.localmodified:./app/Console/Commands/JiminnyDebugCommand.phpmodified:../app/Http/Controllers/API/ActivityController.phpmodified:../app/Http/Controllers/Webhook/ReportController.phpmodified::./app/Jobs/Team/SyncToIntercom.phpmodified:/app/Services/PlaybackService.phpmodified::/config/logging.phpmodified:../routes/web.phpUntracked files:Cuse"git add <files..."to include in what will be committed)'.env.nikilocal/.env.other../WEBHOOK_FILTERING_IMPLEMENTATION.md../app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php../app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php./ids.txt../raw_sql_query.sql../tests/Unit/Policies/CanAccessAiReportsTest.phpno changes addedto commit (use "git add"and/or "git commit -a")lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ git pullremote: Enumerating objects: 170,done.remote: Counting objects: 100% (147/147), done.remote: Compressing objects: 100% (35/35), done.remote:Total 170 (delta 116), reused 121 (delta 111), pack-reused 23 (from 1)Receiving objects: 100% (170/170), 55.28 KiB | 1.42 MiB/s,done.Resolving deltas: 100% (119/119), completed with 47 local objects.From github.com:jiminny/app82671d4c13..d4352c6e59JY-20291-datadog-processing-states-> origin/JY-20291-datadog-processing-states20e95bbbc9..360f12adddJY-20541-cleanup-stale-tasks-and-events-> origin/JY-20541-cleanup-stale-tasks-and-events+ 9f8d154791...01c43d2aa6 JY-20553-debug-crm-sync-delays-> origin/JY-20553-debug-crm-sync-delays (forced update)* [new branch]JY-20695-handle-no-raw-transcript-› origin/JY-20695-handle-no-raw-transcriptbe76d8ba82..9b30c928c4JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration5bb8fefcba..c04e334173master-> origin/masterUpdating aba9685c0d..08ed383c5berror: Your local changes to the following files would be overwritten by merge:app/Http/Controllers/Webhook/ReportController.phpPlease commit your changes or stash them before you merge.Abortingukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ Uec2-user@ip-10-...• 87100% <478Fri 17 Apr 15:39:191₴81ec2-user@ip-10-...• 88APP...
|
NULL
|
-8530238730048608208
|
NULL
|
click
|
ocr
|
NULL
|
Term2ShellEditViewSessionScriptsProfilesWindowHelp Term2ShellEditViewSessionScriptsProfilesWindowHelpladl• Tech Day Review - in 1h 21 mAAPP (-zsh)X4-zshDOCKER• ₴1DEV (docker)APP (-zsh)X3-zsh• ₴5* Review screenp...• 286Changes notstagedfor commit:(use"git add ‹file>..to update what will becommitted)(use"git restore<files..." to discard changesin working directory)modified:./.env.localmodified:./app/Console/Commands/JiminnyDebugCommand.phpmodified:../app/Http/Controllers/API/ActivityController.phpmodified:../app/Http/Controllers/Webhook/ReportController.phpmodified::./app/Jobs/Team/SyncToIntercom.phpmodified:/app/Services/PlaybackService.phpmodified::/config/logging.phpmodified:../routes/web.phpUntracked files:Cuse"git add <files..."to include in what will be committed)'.env.nikilocal/.env.other../WEBHOOK_FILTERING_IMPLEMENTATION.md../app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php../app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php./ids.txt../raw_sql_query.sql../tests/Unit/Policies/CanAccessAiReportsTest.phpno changes addedto commit (use "git add"and/or "git commit -a")lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ git pullremote: Enumerating objects: 170,done.remote: Counting objects: 100% (147/147), done.remote: Compressing objects: 100% (35/35), done.remote:Total 170 (delta 116), reused 121 (delta 111), pack-reused 23 (from 1)Receiving objects: 100% (170/170), 55.28 KiB | 1.42 MiB/s,done.Resolving deltas: 100% (119/119), completed with 47 local objects.From github.com:jiminny/app82671d4c13..d4352c6e59JY-20291-datadog-processing-states-> origin/JY-20291-datadog-processing-states20e95bbbc9..360f12adddJY-20541-cleanup-stale-tasks-and-events-> origin/JY-20541-cleanup-stale-tasks-and-events+ 9f8d154791...01c43d2aa6 JY-20553-debug-crm-sync-delays-> origin/JY-20553-debug-crm-sync-delays (forced update)* [new branch]JY-20695-handle-no-raw-transcript-› origin/JY-20695-handle-no-raw-transcriptbe76d8ba82..9b30c928c4JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration5bb8fefcba..c04e334173master-> origin/masterUpdating aba9685c0d..08ed383c5berror: Your local changes to the following files would be overwritten by merge:app/Http/Controllers/Webhook/ReportController.phpPlease commit your changes or stash them before you merge.Abortingukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ Uec2-user@ip-10-...• 87100% <478Fri 17 Apr 15:39:191₴81ec2-user@ip-10-...• 88APP...
|
48386
|
|
80731
|
NULL
|
0
|
2026-04-25T14:39:07.434655+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-25/1777 /Users/lukas/.screenpipe/data/data/2026-04-25/1777127947434_m2.jpg...
|
Firefox
|
Sign In — Personal
|
True
|
store.steampowered.com/login/?redir=login%2F%3Fred store.steampowered.com/login/?redir=login%2F%3Fredir%3Dapp%252F2805520%252FAge_of_Empires_II_DE__Chronicles_Battle_for_Greece%252F%253Fsnr%253D1_5_9__405%26redir_ssl%3D1&redir_ssl=1...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Save password for steampowered.com?
Username
balsa Save password for steampowered.com?
Username
balsamo84
Password
[PASSWORD_DOTS]
Not now
More actions
Save
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
Sign In
Sign In
Close tab
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Link to the Steam Homepage
STORE
STORE
COMMUNITY
COMMUNITY
ABOUT
ABOUT
SUPPORT
SUPPORT
Install Steam
Install Steam
sign in
sign in
|
language
Browse
Browse
Recommendations
Recommendations
Categories
Categories
Hardware
Hardware
Ways to Play
Ways to Play
Special Sections
Special Sections
Search the store
Search
Account:
balsamo84
You have a mobile authenticator protecting this account.
Use the
Steam Mobile App
to confirm your sign in...
Enter a code instead
Help, I no longer have access to my Steam Mobile App
Help, I no longer have access to my Steam Mobile App
New to Steam?
Create an account
Create an account
It's free and easy. Discover thousands of games to play with millions of new friends.
Learn more about Steam
Learn more about Steam
© 2026 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
VAT included in all prices where applicable.
STEAM
STEAM
About Steam
About Steam
Steam SSA
Steam SSA
Steamworks
Steamworks
Steam Distribution
Steam Distribution
Gift Cards
Gift Cards
VALVE
VALVE
About Valve
About Valve
Jobs
Jobs
Hardware
Hardware
Recycling
Recycling
LEGAL
LEGAL
Privacy
Privacy
Accessibility
Accessibility
Notices & Policies
Notices & Policies
Cookies
Cookies
Refunds
Refunds
MORE
MORE
Get Steam
Get Steam
Get Mobile Apps
Get Mobile Apps
Get Support
Get Support
My Account
My Account...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Save password for steampowered.com?","depth":4,"bounds":{"left":0.13297872,"top":0.060654428,"width":0.08344415,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Username","depth":4,"bounds":{"left":0.13297872,"top":0.08858739,"width":0.02044548,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"balsamo84","depth":3,"bounds":{"left":0.13297872,"top":0.10215483,"width":0.12333777,"height":0.023144454},"value":"balsamo84","help_text":"","placeholder":"No username","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Password","depth":4,"bounds":{"left":0.13297872,"top":0.13806863,"width":0.019281914,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"••••••••","depth":3,"bounds":{"left":0.13297872,"top":0.15203512,"width":0.12333777,"height":0.023144454},"value":"••••••••","help_text":"","role_description":"secure text field","subrole":"AXSecureTextField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not now","depth":3,"bounds":{"left":0.20146276,"top":0.17956904,"width":0.026263298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More actions","depth":3,"bounds":{"left":0.22772606,"top":0.17956904,"width":0.00930851,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Save","depth":3,"bounds":{"left":0.23886304,"top":0.17956904,"width":0.019115692,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.03856383,"top":0.0518755,"width":0.03656915,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(56) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"bounds":{"left":0.07513298,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Welcome back","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome back","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.025265958,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.053523935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.1747008,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.040724736,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.09790558,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.22556517,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.08826463,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.0,"top":0.48762968,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.013297873,"top":0.49880287,"width":0.28075132,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gitea Official Website","depth":4,"bounds":{"left":0.0,"top":0.5203512,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gitea Official Website","depth":5,"bounds":{"left":0.013297873,"top":0.53152436,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":4,"bounds":{"left":0.0,"top":0.55307263,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":5,"bounds":{"left":0.013297873,"top":0.5642458,"width":0.10555186,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.5857941,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.013297873,"top":0.5969673,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sign In","depth":4,"bounds":{"left":0.0,"top":0.61851555,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Sign In","depth":5,"bounds":{"left":0.013297873,"top":0.62968874,"width":0.011801862,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.10139628,"top":0.6256983,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.6528332,"width":0.108211435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Le Chat Mistral (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Link to the Steam Homepage","depth":8,"bounds":{"left":0.35738033,"top":0.057063047,"width":0.05851064,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"STORE","depth":8,"bounds":{"left":0.42386967,"top":0.009177973,"width":0.021609042,"height":0.057861134},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"STORE","depth":9,"bounds":{"left":0.4261968,"top":0.04349561,"width":0.016954787,"height":0.015961692},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"COMMUNITY","depth":8,"bounds":{"left":0.44547874,"top":0.009177973,"width":0.037898935,"height":0.057861134},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"COMMUNITY","depth":9,"bounds":{"left":0.44780585,"top":0.04349561,"width":0.03324468,"height":0.015961692},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ABOUT","depth":8,"bounds":{"left":0.48337767,"top":0.009177973,"width":0.023105053,"height":0.054269753},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ABOUT","depth":9,"bounds":{"left":0.48570478,"top":0.04349561,"width":0.018450798,"height":0.015961692},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUPPORT","depth":8,"bounds":{"left":0.5064827,"top":0.009177973,"width":0.028756648,"height":0.054269753},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SUPPORT","depth":9,"bounds":{"left":0.50880986,"top":0.04349561,"width":0.024102394,"height":0.015961692},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Install Steam","depth":9,"bounds":{"left":0.67386967,"top":0.01396648,"width":0.03656915,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Install Steam","depth":11,"bounds":{"left":0.68550533,"top":0.017956903,"width":0.021941489,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"sign in","depth":9,"bounds":{"left":0.7124335,"top":0.017956903,"width":0.013796543,"height":0.011173184},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sign in","depth":10,"bounds":{"left":0.7137633,"top":0.017956903,"width":0.011136968,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"|","depth":9,"bounds":{"left":0.72623,"top":0.017956903,"width":0.0051529254,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"language","depth":10,"bounds":{"left":0.7330452,"top":0.017956903,"width":0.015625,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Browse","depth":11,"bounds":{"left":0.35472074,"top":0.049481247,"width":0.027593086,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Browse","depth":13,"bounds":{"left":0.35804522,"top":0.061452515,"width":0.01462766,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recommendations","depth":11,"bounds":{"left":0.38231382,"top":0.049481247,"width":0.050531916,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recommendations","depth":13,"bounds":{"left":0.3856383,"top":0.061452515,"width":0.03756649,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Categories","depth":11,"bounds":{"left":0.43284574,"top":0.049481247,"width":0.034408245,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Categories","depth":13,"bounds":{"left":0.43617022,"top":0.061452515,"width":0.02144282,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hardware","depth":11,"bounds":{"left":0.46725398,"top":0.049481247,"width":0.032413565,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Hardware","depth":13,"bounds":{"left":0.47057846,"top":0.061452515,"width":0.019448139,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Ways to Play","depth":11,"bounds":{"left":0.49966756,"top":0.049481247,"width":0.03873005,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Ways to Play","depth":13,"bounds":{"left":0.50299203,"top":0.061452515,"width":0.025764627,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Special Sections","depth":11,"bounds":{"left":0.5383976,"top":0.049481247,"width":0.045711435,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Special Sections","depth":13,"bounds":{"left":0.54172206,"top":0.061452515,"width":0.03274601,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search the store","depth":11,"bounds":{"left":0.59773934,"top":0.054269753,"width":0.14827128,"height":0.027134877},"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search","depth":11,"bounds":{"left":0.74601066,"top":0.054269753,"width":0.011303191,"height":0.027134877},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Account:","depth":9,"bounds":{"left":0.5277593,"top":0.27573824,"width":0.026595745,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"balsamo84","depth":9,"bounds":{"left":0.554355,"top":0.27573824,"width":0.03158245,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You have a mobile authenticator protecting this account.","depth":9,"bounds":{"left":0.4945146,"top":0.3008779,"width":0.124667555,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use the","depth":9,"bounds":{"left":0.51163566,"top":0.37230647,"width":0.023105053,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steam Mobile App","depth":9,"bounds":{"left":0.5347407,"top":0.37230647,"width":0.051695477,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to confirm your sign in...","depth":9,"bounds":{"left":0.51163566,"top":0.37230647,"width":0.12034574,"height":0.037110932},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enter a code instead","depth":9,"bounds":{"left":0.5377327,"top":0.5067837,"width":0.038231384,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help, I no longer have access to my Steam Mobile App","depth":8,"bounds":{"left":0.45113033,"top":0.52952915,"width":0.21143617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help, I no longer have access to my Steam Mobile App","depth":9,"bounds":{"left":0.5063165,"top":0.5303272,"width":0.10106383,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"New to Steam?","depth":8,"bounds":{"left":0.48271278,"top":0.7378292,"width":0.048537236,"height":0.019952115},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Create an account","depth":7,"bounds":{"left":0.47257313,"top":0.76735836,"width":0.06881649,"height":0.028731046},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create an account","depth":9,"bounds":{"left":0.48587102,"top":0.7741421,"width":0.042220745,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It's free and easy. Discover thousands of games to play with millions of new friends.","depth":8,"bounds":{"left":0.5603391,"top":0.7390263,"width":0.09275266,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more about Steam","depth":8,"bounds":{"left":0.57978725,"top":0.7717478,"width":0.053856384,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more about Steam","depth":9,"bounds":{"left":0.57978725,"top":0.7717478,"width":0.053856384,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"© 2026 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.","depth":11,"bounds":{"left":0.38231382,"top":0.88667196,"width":0.112034574,"height":0.022346368},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"VAT included in all prices where applicable.","depth":11,"bounds":{"left":0.38231382,"top":0.90901834,"width":0.0731383,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"STEAM","depth":10,"bounds":{"left":0.5365692,"top":0.8359936,"width":0.03723404,"height":0.015961692},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"STEAM","depth":11,"bounds":{"left":0.5365692,"top":0.8375898,"width":0.014793883,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"About Steam","depth":10,"bounds":{"left":0.5365692,"top":0.86472464,"width":0.03723404,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"About Steam","depth":11,"bounds":{"left":0.5365692,"top":0.86632085,"width":0.026097074,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steam SSA","depth":10,"bounds":{"left":0.5365692,"top":0.8934557,"width":0.03723404,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steam SSA","depth":11,"bounds":{"left":0.5365692,"top":0.8950519,"width":0.021775266,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steamworks","depth":10,"bounds":{"left":0.5365692,"top":0.92218673,"width":0.03723404,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steamworks","depth":11,"bounds":{"left":0.5365692,"top":0.92378294,"width":0.02443484,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steam Distribution","depth":10,"bounds":{"left":0.5365692,"top":0.9509178,"width":0.03723404,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steam Distribution","depth":11,"bounds":{"left":0.5365692,"top":0.952514,"width":0.03723404,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Gift Cards","depth":10,"bounds":{"left":0.5365692,"top":0.9796488,"width":0.03723404,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gift Cards","depth":11,"bounds":{"left":0.5365692,"top":0.98124504,"width":0.019946808,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"VALVE","depth":10,"bounds":{"left":0.5950798,"top":0.8359936,"width":0.02443484,"height":0.015961692},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"VALVE","depth":11,"bounds":{"left":0.5950798,"top":0.8375898,"width":0.013464096,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"About Valve","depth":10,"bounds":{"left":0.5950798,"top":0.86472464,"width":0.02443484,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"About Valve","depth":11,"bounds":{"left":0.5950798,"top":0.86632085,"width":0.02443484,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jobs","depth":10,"bounds":{"left":0.5950798,"top":0.8934557,"width":0.02443484,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jobs","depth":11,"bounds":{"left":0.5950798,"top":0.8950519,"width":0.009142287,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hardware","depth":10,"bounds":{"left":0.5950798,"top":0.92218673,"width":0.02443484,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hardware","depth":11,"bounds":{"left":0.5950798,"top":0.92378294,"width":0.019448139,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Recycling","depth":10,"bounds":{"left":0.5950798,"top":0.9509178,"width":0.02443484,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Recycling","depth":11,"bounds":{"left":0.5950798,"top":0.952514,"width":0.019448139,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"LEGAL","depth":10,"bounds":{"left":0.64079124,"top":0.8359936,"width":0.036070477,"height":0.015961692},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"LEGAL","depth":11,"bounds":{"left":0.64079124,"top":0.8375898,"width":0.013630319,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":10,"bounds":{"left":0.64079124,"top":0.86472464,"width":0.036070477,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":11,"bounds":{"left":0.64079124,"top":0.86632085,"width":0.014295213,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Accessibility","depth":10,"bounds":{"left":0.64079124,"top":0.8934557,"width":0.036070477,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Accessibility","depth":11,"bounds":{"left":0.64079124,"top":0.8950519,"width":0.024767287,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notices & Policies","depth":10,"bounds":{"left":0.64079124,"top":0.92218673,"width":0.036070477,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notices & Policies","depth":11,"bounds":{"left":0.64079124,"top":0.92378294,"width":0.036070477,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Cookies","depth":10,"bounds":{"left":0.64079124,"top":0.9509178,"width":0.036070477,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Cookies","depth":11,"bounds":{"left":0.64079124,"top":0.952514,"width":0.015957447,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Refunds","depth":10,"bounds":{"left":0.64079124,"top":0.9796488,"width":0.036070477,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Refunds","depth":11,"bounds":{"left":0.64079124,"top":0.98124504,"width":0.016289894,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"MORE","depth":10,"bounds":{"left":0.6981383,"top":0.8359936,"width":0.03324468,"height":0.015961692},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MORE","depth":11,"bounds":{"left":0.6981383,"top":0.8375898,"width":0.012632979,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Steam","depth":10,"bounds":{"left":0.6981383,"top":0.86472464,"width":0.03324468,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Steam","depth":11,"bounds":{"left":0.6981383,"top":0.86632085,"width":0.020944148,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Mobile Apps","depth":10,"bounds":{"left":0.6981383,"top":0.8934557,"width":0.03324468,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Mobile Apps","depth":11,"bounds":{"left":0.6981383,"top":0.8950519,"width":0.03324468,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Support","depth":10,"bounds":{"left":0.6981383,"top":0.92218673,"width":0.03324468,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Support","depth":11,"bounds":{"left":0.6981383,"top":0.92378294,"width":0.024268618,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"My Account","depth":10,"bounds":{"left":0.6981383,"top":0.9509178,"width":0.03324468,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"My Account","depth":11,"bounds":{"left":0.6981383,"top":0.952514,"width":0.023936171,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8530125754694781079
|
-3975210309367882994
|
visual_change
|
accessibility
|
NULL
|
Save password for steampowered.com?
Username
balsa Save password for steampowered.com?
Username
balsamo84
Password
[PASSWORD_DOTS]
Not now
More actions
Save
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
Sign In
Sign In
Close tab
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Link to the Steam Homepage
STORE
STORE
COMMUNITY
COMMUNITY
ABOUT
ABOUT
SUPPORT
SUPPORT
Install Steam
Install Steam
sign in
sign in
|
language
Browse
Browse
Recommendations
Recommendations
Categories
Categories
Hardware
Hardware
Ways to Play
Ways to Play
Special Sections
Special Sections
Search the store
Search
Account:
balsamo84
You have a mobile authenticator protecting this account.
Use the
Steam Mobile App
to confirm your sign in...
Enter a code instead
Help, I no longer have access to my Steam Mobile App
Help, I no longer have access to my Steam Mobile App
New to Steam?
Create an account
Create an account
It's free and easy. Discover thousands of games to play with millions of new friends.
Learn more about Steam
Learn more about Steam
© 2026 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
VAT included in all prices where applicable.
STEAM
STEAM
About Steam
About Steam
Steam SSA
Steam SSA
Steamworks
Steamworks
Steam Distribution
Steam Distribution
Gift Cards
Gift Cards
VALVE
VALVE
About Valve
About Valve
Jobs
Jobs
Hardware
Hardware
Recycling
Recycling
LEGAL
LEGAL
Privacy
Privacy
Accessibility
Accessibility
Notices & Policies
Notices & Policies
Cookies
Cookies
Refunds
Refunds
MORE
MORE
Get Steam
Get Steam
Get Mobile Apps
Get Mobile Apps
Get Support
Get Support
My Account
My Account...
|
80729
|
|
80732
|
2133
|
0
|
2026-04-25T14:39:34.396791+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-25/1777 /Users/lukas/.screenpipe/data/data/2026-04-25/1777127974396_m1.jpg...
|
Firefox
|
Sign In — Personal
|
True
|
store.steampowered.com/login/?redir=login%2F%3Fred store.steampowered.com/login/?redir=login%2F%3Fredir%3Dapp%252F2805520%252FAge_of_Empires_II_DE__Chronicles_Battle_for_Greece%252F%253Fsnr%253D1_5_9__405%26redir_ssl%3D1&redir_ssl=1...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Save password for steampowered.com?
Username
balsa Save password for steampowered.com?
Username
balsamo84
Password
[PASSWORD_DOTS]
Not now
More actions
Save
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
Sign In
Sign In
Close tab
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Link to the Steam Homepage
STORE
STORE
COMMUNITY
COMMUNITY
ABOUT
ABOUT
SUPPORT
SUPPORT
Install Steam
Install Steam
sign in
sign in
|
language
Browse
Browse
Recommendations
Recommendations
Categories
Categories
Hardware
Hardware
Ways to Play
Ways to Play
Special Sections
Special Sections
Search the store
Search
Account:
balsamo84
You have a mobile authenticator protecting this account.
Use the
Steam Mobile App
to confirm your sign in...
Enter a code instead
Help, I no longer have access to my Steam Mobile App
Help, I no longer have access to my Steam Mobile App
New to Steam?
Create an account
Create an account
It's free and easy. Discover thousands of games to play with millions of new friends.
Learn more about Steam
Learn more about Steam
© 2026 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
VAT included in all prices where applicable.
STEAM
STEAM
About Steam
About Steam
Steam SSA
Steam SSA
Steamworks
Steamworks
Steam Distribution
Steam Distribution
Gift Cards
Gift Cards
VALVE
VALVE
About Valve
About Valve
Jobs
Jobs
Hardware
Hardware
Recycling
Recycling
LEGAL
LEGAL
Privacy
Privacy
Accessibility
Accessibility
Notices & Policies
Notices & Policies
Cookies
Cookies
Refunds
Refunds
MORE
MORE
Get Steam
Get Steam
Get Mobile Apps
Get Mobile Apps
Get Support
Get Support
My Account
My Account...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Save password for steampowered.com?","depth":4,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Username","depth":4,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"balsamo84","depth":3,"value":"balsamo84","help_text":"","placeholder":"No username","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Password","depth":4,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"••••••••","depth":3,"value":"••••••••","help_text":"","role_description":"secure text field","subrole":"AXSecureTextField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not now","depth":3,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More actions","depth":3,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Save","depth":3,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(56) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Welcome back","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome back","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gitea Official Website","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gitea Official Website","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sign In","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Sign In","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Le Chat Mistral (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Link to the Steam Homepage","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"STORE","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"STORE","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"COMMUNITY","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"COMMUNITY","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ABOUT","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ABOUT","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUPPORT","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SUPPORT","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Install Steam","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Install Steam","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"sign in","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sign in","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"|","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"language","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Browse","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Browse","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recommendations","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recommendations","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Categories","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Categories","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hardware","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Hardware","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Ways to Play","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Ways to Play","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Special Sections","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Special Sections","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search the store","depth":11,"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Account:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"balsamo84","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You have a mobile authenticator protecting this account.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use the","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steam Mobile App","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to confirm your sign in...","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enter a code instead","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help, I no longer have access to my Steam Mobile App","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help, I no longer have access to my Steam Mobile App","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"New to Steam?","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Create an account","depth":7,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create an account","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It's free and easy. Discover thousands of games to play with millions of new friends.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more about Steam","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more about Steam","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"© 2026 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"VAT included in all prices where applicable.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"STEAM","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"STEAM","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"About Steam","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"About Steam","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steam SSA","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steam SSA","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steamworks","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steamworks","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steam Distribution","depth":10,"bounds":{"left":0.55625,"top":0.0,"width":0.07777778,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steam Distribution","depth":11,"bounds":{"left":0.55625,"top":0.0,"width":0.07777778,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Gift Cards","depth":10,"bounds":{"left":0.55625,"top":0.0,"width":0.07777778,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gift Cards","depth":11,"bounds":{"left":0.55625,"top":0.0,"width":0.041666668,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"VALVE","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"VALVE","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"About Valve","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"About Valve","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jobs","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jobs","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hardware","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hardware","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Recycling","depth":10,"bounds":{"left":0.6784722,"top":0.0,"width":0.051041666,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Recycling","depth":11,"bounds":{"left":0.6784722,"top":0.0,"width":0.040625,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"LEGAL","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"LEGAL","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Accessibility","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Accessibility","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notices & Policies","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notices & Policies","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Cookies","depth":10,"bounds":{"left":0.7739583,"top":0.0,"width":0.07534722,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Cookies","depth":11,"bounds":{"left":0.7739583,"top":0.0,"width":0.033333335,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Refunds","depth":10,"bounds":{"left":0.7739583,"top":0.0,"width":0.07534722,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Refunds","depth":11,"bounds":{"left":0.7739583,"top":0.0,"width":0.034027778,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"MORE","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MORE","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Steam","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Steam","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Mobile Apps","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Mobile Apps","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Support","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Support","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"My Account","depth":10,"bounds":{"left":0.89375,"top":0.0,"width":0.06944445,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"My Account","depth":11,"bounds":{"left":0.89375,"top":0.0,"width":0.05,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8530125754694781079
|
-3975210309367882994
|
idle
|
accessibility
|
NULL
|
Save password for steampowered.com?
Username
balsa Save password for steampowered.com?
Username
balsamo84
Password
[PASSWORD_DOTS]
Not now
More actions
Save
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
Sign In
Sign In
Close tab
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Link to the Steam Homepage
STORE
STORE
COMMUNITY
COMMUNITY
ABOUT
ABOUT
SUPPORT
SUPPORT
Install Steam
Install Steam
sign in
sign in
|
language
Browse
Browse
Recommendations
Recommendations
Categories
Categories
Hardware
Hardware
Ways to Play
Ways to Play
Special Sections
Special Sections
Search the store
Search
Account:
balsamo84
You have a mobile authenticator protecting this account.
Use the
Steam Mobile App
to confirm your sign in...
Enter a code instead
Help, I no longer have access to my Steam Mobile App
Help, I no longer have access to my Steam Mobile App
New to Steam?
Create an account
Create an account
It's free and easy. Discover thousands of games to play with millions of new friends.
Learn more about Steam
Learn more about Steam
© 2026 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
VAT included in all prices where applicable.
STEAM
STEAM
About Steam
About Steam
Steam SSA
Steam SSA
Steamworks
Steamworks
Steam Distribution
Steam Distribution
Gift Cards
Gift Cards
VALVE
VALVE
About Valve
About Valve
Jobs
Jobs
Hardware
Hardware
Recycling
Recycling
LEGAL
LEGAL
Privacy
Privacy
Accessibility
Accessibility
Notices & Policies
Notices & Policies
Cookies
Cookies
Refunds
Refunds
MORE
MORE
Get Steam
Get Steam
Get Mobile Apps
Get Mobile Apps
Get Support
Get Support
My Account
My Account...
|
NULL
|
|
23352
|
504
|
29
|
2026-04-15T11:20:49.478434+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776252049478_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeDMsActivityFilesLater..• +SlackFileEditViewGoEDHomeDMsActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil Vasilev XSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...#: AppsJira CloudToast# releases8 22+Messages@ Files• BookmarksCircleClv 2 new messagesDeploymentsuccessrui:Project: appWhen:04/15/202609:51:25Tag:View JobGitHub APP 1:53 PM2 new commits pushed tomaster by des-d0344ab16 - JY-20151: Enhance waveformdisplay with talk-to-listen ratio and stylingadjustments3c043232 - Merge pull request #11967from jiminny/JY-20151-add-talk-to-listen-to-the-waveform( jiminny/app Added by GitHubCircleCl APP 2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobMessage #releasesAaNew(alo)Support Daily • in 40 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)VTDecoderXPCServiceFirefox GPU HelperFirefox GPU HelperFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)FirefoxCP Isolated Web ContentclaudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentClaude Helper (Renderer)iTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaudeMem...2,13 GB1,10 GB960,6 MB907,2 MB835,0 MB780,5 MB767,3 MB592,4 MB544,3 MB522,1 MB496,1 MB452,9 MB437,8 MB436,3 MB411,0 MB401,9 MB382,2 MB371,9 MB344,2 MB342,3 MB326,2 MB308,1 MB295,2 MB256,1 MB252,4 MB238,5 MB195,3 MB193,2 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 14:20:49CPUMemoryDiskThreads38212573832511272925152426242725231524132028156262760EnergyPorts61319 2481247301 20212319 451167253242127186120125122126124120172120723131252081 786122126722PID83696407429748014146644203084283701146738019367134186335480358313527643652430164817326548368985091011483583360519487856138482986049116,00 GB13,92 GB <2,03 GB3,07 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,49 GB2,97 GB5,91 GB...
|
NULL
|
-8529568211746581474
|
NULL
|
visual_change
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeDMsActivityFilesLater..• +SlackFileEditViewGoEDHomeDMsActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil Vasilev XSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...#: AppsJira CloudToast# releases8 22+Messages@ Files• BookmarksCircleClv 2 new messagesDeploymentsuccessrui:Project: appWhen:04/15/202609:51:25Tag:View JobGitHub APP 1:53 PM2 new commits pushed tomaster by des-d0344ab16 - JY-20151: Enhance waveformdisplay with talk-to-listen ratio and stylingadjustments3c043232 - Merge pull request #11967from jiminny/JY-20151-add-talk-to-listen-to-the-waveform( jiminny/app Added by GitHubCircleCl APP 2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobMessage #releasesAaNew(alo)Support Daily • in 40 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)VTDecoderXPCServiceFirefox GPU HelperFirefox GPU HelperFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)FirefoxCP Isolated Web ContentclaudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentClaude Helper (Renderer)iTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaudeMem...2,13 GB1,10 GB960,6 MB907,2 MB835,0 MB780,5 MB767,3 MB592,4 MB544,3 MB522,1 MB496,1 MB452,9 MB437,8 MB436,3 MB411,0 MB401,9 MB382,2 MB371,9 MB344,2 MB342,3 MB326,2 MB308,1 MB295,2 MB256,1 MB252,4 MB238,5 MB195,3 MB193,2 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 14:20:49CPUMemoryDiskThreads38212573832511272925152426242725231524132028156262760EnergyPorts61319 2481247301 20212319 451167253242127186120125122126124120172120723131252081 786122126722PID83696407429748014146644203084283701146738019367134186335480358313527643652430164817326548368985091011483583360519487856138482986049116,00 GB13,92 GB <2,03 GB3,07 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,49 GB2,97 GB5,91 GB...
|
23351
|
|
75393
|
1880
|
14
|
2026-04-24T06:24:16.121564+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011856121_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.32801276,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.3272147,"width":0.10837766,"height":0.015961692},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.50332445,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.51329786,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.5219415,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.5305851,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.54421544,"top":0.3264166,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.56981385,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.5784575,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.58710104,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.59574467,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.60638297,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.59541225,"top":0.3567438,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6050532,"top":0.35514766,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61236703,"top":0.35514766,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.35355148,"width":0.2393617,"height":0.6464485},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"bounds":{"left":0.63863033,"top":0.09736632,"width":0.36136967,"height":0.90263367},"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75394
|
1879
|
17
|
2026-04-24T06:24:21.524460+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011861524_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75389
|
|
75395
|
1879
|
18
|
2026-04-24T06:24:53.540193+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011893540_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75396
|
1880
|
15
|
2026-04-24T06:25:02.358874+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011902358_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.32801276,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.3272147,"width":0.10837766,"height":0.015961692},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.50332445,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.51329786,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.5219415,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.5305851,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.54421544,"top":0.3264166,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.56981385,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.5784575,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.58710104,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.59574467,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.60638297,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.59541225,"top":0.3567438,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6050532,"top":0.35514766,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61236703,"top":0.35514766,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"bounds":{"left":0.63863033,"top":0.09736632,"width":0.36136967,"height":0.90263367},"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75393
|
|
75397
|
1879
|
19
|
2026-04-24T06:25:36.521963+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011936521_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75395
|
|
75412
|
NULL
|
0
|
2026-04-24T06:26:00.527980+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011960527_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.32801276,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.3272147,"width":0.10837766,"height":0.015961692},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.50332445,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.51329786,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.5219415,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.5305851,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.54421544,"top":0.3264166,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.56981385,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.5784575,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.58710104,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.59574467,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.60638297,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.59541225,"top":0.3567438,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6050532,"top":0.35514766,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61236703,"top":0.35514766,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.17877094,"width":0.2393617,"height":0.82122904},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"bounds":{"left":0.63863033,"top":0.09736632,"width":0.36136967,"height":0.90263367},"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75410
|
|
75413
|
NULL
|
0
|
2026-04-24T06:26:04.061319+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011964061_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75411
|
|
75419
|
1882
|
4
|
2026-04-24T06:26:25.683205+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011985683_m2.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.32801276,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.3272147,"width":0.10837766,"height":0.015961692},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.50332445,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.51329786,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.5219415,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.5305851,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.54421544,"top":0.3264166,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.56981385,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.5784575,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.58710104,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.59574467,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.60638297,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.59541225,"top":0.3567438,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6050532,"top":0.35514766,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61236703,"top":0.35514766,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.17877094,"width":0.2393617,"height":0.82122904},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"bounds":{"left":0.63863033,"top":0.09417398,"width":0.36136967,"height":0.90582603},"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75420
|
1881
|
1
|
2026-04-24T06:26:33.025059+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011993025_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75416
|
|
75422
|
1881
|
3
|
2026-04-24T06:26:46.342315+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012006342_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75421
|
|
75424
|
1882
|
6
|
2026-04-24T06:26:47.921683+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012007921_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.5506784,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.54988027,"width":0.10837766,"height":0.027134877},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.45179522,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.46176863,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.47041222,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.47905585,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.49268618,"top":0.5490822,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.50398934,"top":0.58898646,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51363033,"top":0.58739024,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5209442,"top":0.58739024,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"bounds":{"left":0.5472075,"top":0.118914604,"width":0.40425533,"height":0.8810854},"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75465
|
1882
|
23
|
2026-04-24T06:28:31.188745+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012111188_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.5506784,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.54988027,"width":0.10837766,"height":0.027134877},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.45179522,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.46176863,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.47041222,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.47905585,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.49268618,"top":0.5490822,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.50398934,"top":0.58898646,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51363033,"top":0.58739024,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5209442,"top":0.58739024,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75466
|
1881
|
28
|
2026-04-24T06:28:57.206559+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012137206_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75467
|
1882
|
24
|
2026-04-24T06:29:18.854440+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012158854_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.5506784,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.54988027,"width":0.10837766,"height":0.027134877},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.45179522,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.46176863,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.47041222,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.47905585,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.49268618,"top":0.5490822,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.50398934,"top":0.58898646,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51363033,"top":0.58739024,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5209442,"top":0.58739024,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75465
|
|
75469
|
1881
|
29
|
2026-04-24T06:29:44.779708+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012184779_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75470
|
1882
|
26
|
2026-04-24T06:29:44.633840+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012184633_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.5506784,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.54988027,"width":0.10837766,"height":0.027134877},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.45179522,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.46176863,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.47041222,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.47905585,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.49268618,"top":0.5490822,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.50398934,"top":0.58898646,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51363033,"top":0.58739024,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5209442,"top":0.58739024,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75468
|
|
75471
|
1881
|
30
|
2026-04-24T06:29:50.041113+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012190041_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75472
|
1882
|
27
|
2026-04-24T06:29:50.041116+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012190041_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.5506784,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.54988027,"width":0.10837766,"height":0.027134877},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.45179522,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.46176863,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.47041222,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.47905585,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.49268618,"top":0.5490822,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.50398934,"top":0.58898646,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51363033,"top":0.58739024,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5209442,"top":0.58739024,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75476
|
1882
|
29
|
2026-04-24T06:29:56.580937+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012196580_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.5506784,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.54988027,"width":0.10837766,"height":0.027134877},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.45179522,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.46176863,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.47041222,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.47905585,"top":0.54988027,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.49268618,"top":0.5490822,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.50398934,"top":0.58898646,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51363033,"top":0.58739024,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5209442,"top":0.58739024,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75474
|
|
75477
|
1881
|
33
|
2026-04-24T06:29:58.122161+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012198122_m1.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
27752
|
NULL
|
0
|
2026-04-15T13:56:55.918870+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776261415918_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
CaudeFileEditViewWindowHelp• Not Secure | http://[ CaudeFileEditViewWindowHelp• Not Secure | http://[IP_ADDRESS]:8767/frames/content/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I SeneticТвърд диск, Western Digital Red 6TB Plus ( 3.5", 256N* SQLite Web: db.sqlitew Screenpipe DashboardV Welcome to Steam- New laomenoe c ne crmnlar vommuialteIf you already have Terminal open, or preferusing it, you can command Finder to open thefolder for you.1. Open the Terminal app (you can find itby pressing Command + Space to openSpotlight and typing "Terminal").2. Type the following command: open~/. screenpipe3. Press Return. A new Finder window willimmediately pop up showing thecontents of the folder.Method 3: Unhide All Files in Your HomeDirectoryIf you want to be able to see the folderalongside your normal files so you can clickinto it manually.1. Open Finder.2. Go to your Home folder by pressingCommand + Shift + H (this is what the~ symbol represents).3. Press Command + Shift + . (Command,Shift, and the Period key at the sametime).4. You will see all your hidden files andfolders fade into view. Scroll down to findthe .screenpipe folder and double-click5. Note: You can press Command + Shift +• again to hide the files when you aredone to keep your folders looking clean.Ask GeminiPro vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pagesqlite-web 0.7.2table name…saix miarationsaudio_chunksaudio_tagsaudio_transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_..audio_transcriptions_..elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxVice• cnunksIvision laosToggle helper tablesdb.sqlite frames 18766 rows, showing page 1StructureContentid video_chunk_id offset_inde112131415718 19 NULL10 211 212 2> 0100% CWed 15 Apr 16:56:55..1++ New chatQ SearchCustomizeQ ChatsProjects80 ArtifactsStarredBulgarian citizenship application...Dawarich location tracking projectRecentsLinux SQLite Ul for NASClaude API 500 internal server e...Screenpipe query capabilities a...eGPU compatibility with Mac mi..Understanding Openkouter Arl.Screenpipe 14-day retention exp...Reddit homepage feed overviewDocker container not visible in c...DIA browser RAM configurationScreenpipe company backgroundDSK Bank Bulgaria secure invest...Building a comprehensive perso...Importing Google Timeline data t...chromecast remote volume ouct.Screenpipe free version guideSelf-hosted LLM alternatives to …..Screenpipe database query setupRunning screenpipe for freeMac Studio network switch setupClaude extension in vivaldi brow...General intormation reguestRed dots on neck causesChange approvalQuerying Screenpipe with Claud...Setting up daily backups in Ugre…..Upcoming remindersAccessing tools in Open WebUlLaraver issue troublesnootingLukas KovalikPro oianLinux SQLite Ul for NAS vChatCoworkCodebut how come some days have no jpg only mp4 is there some transition.Review documentation and forums and try to understand how doe sit worknearchee the weoGood, now I have the full picture. Here's the definitive answer:The JPG vs MP4 question: it's a version transitionScreenpipe v2.0 was a major release where event-driven capture replaced continuous videorecording, with a new database schema and API endpoint changes. MintlifyBefore v2 (old system) → MP4 only Screenpipe recorded your screen continuously at 0.5fps, encoding everything into rolling MP4 files. Every frame was extracted from video forOCR. This is why you have 526 MP4s - that's the old system running on your earlier days.After v2 (new system) JPG only Instead of recording every second, screenpipe listens formeaningful events - app switches, clicks, typing pauses, scrolling -- and captures ascreenshot only when something actually changes. Each capture pairs a screenshot with theaccessibility tree. GitHub JPGs are the output of this new system.Your data confirms this exactly:2026-04-092026-04-112026-04-122026-04-132026-04-142026-04-15only MP4s(old continuous recording)lalXH→ mix?mostly JPGs→ only JPGs(new event-driven)You updated Screenpipe somewhere around Apr 11-12 and it switched modes. You canverify:bash# See the mix per dayfor d in -/.screenpipe/data/data/*/; doecho "$(basename $d): JPGs=$(find $d -name '*.jpg' | wc -1) MP4s=$(find $d -name 'doneWhy this matters for your dataAspect0eKMP4)New.rStorage~SUO MbrSnnText extractionOCR from videoframesAccessibility tree (faster, more accurate)Reply...+Sonnet 4.6Claude is Al ana can make mistakes. rlease aouble-cneck cited sources....
|
NULL
|
-8529323447870330258
|
NULL
|
idle
|
ocr
|
NULL
|
CaudeFileEditViewWindowHelp• Not Secure | http://[ CaudeFileEditViewWindowHelp• Not Secure | http://[IP_ADDRESS]:8767/frames/content/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I SeneticТвърд диск, Western Digital Red 6TB Plus ( 3.5", 256N* SQLite Web: db.sqlitew Screenpipe DashboardV Welcome to Steam- New laomenoe c ne crmnlar vommuialteIf you already have Terminal open, or preferusing it, you can command Finder to open thefolder for you.1. Open the Terminal app (you can find itby pressing Command + Space to openSpotlight and typing "Terminal").2. Type the following command: open~/. screenpipe3. Press Return. A new Finder window willimmediately pop up showing thecontents of the folder.Method 3: Unhide All Files in Your HomeDirectoryIf you want to be able to see the folderalongside your normal files so you can clickinto it manually.1. Open Finder.2. Go to your Home folder by pressingCommand + Shift + H (this is what the~ symbol represents).3. Press Command + Shift + . (Command,Shift, and the Period key at the sametime).4. You will see all your hidden files andfolders fade into view. Scroll down to findthe .screenpipe folder and double-click5. Note: You can press Command + Shift +• again to hide the files when you aredone to keep your folders looking clean.Ask GeminiPro vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pagesqlite-web 0.7.2table name…saix miarationsaudio_chunksaudio_tagsaudio_transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_..audio_transcriptions_..elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxVice• cnunksIvision laosToggle helper tablesdb.sqlite frames 18766 rows, showing page 1StructureContentid video_chunk_id offset_inde112131415718 19 NULL10 211 212 2> 0100% CWed 15 Apr 16:56:55..1++ New chatQ SearchCustomizeQ ChatsProjects80 ArtifactsStarredBulgarian citizenship application...Dawarich location tracking projectRecentsLinux SQLite Ul for NASClaude API 500 internal server e...Screenpipe query capabilities a...eGPU compatibility with Mac mi..Understanding Openkouter Arl.Screenpipe 14-day retention exp...Reddit homepage feed overviewDocker container not visible in c...DIA browser RAM configurationScreenpipe company backgroundDSK Bank Bulgaria secure invest...Building a comprehensive perso...Importing Google Timeline data t...chromecast remote volume ouct.Screenpipe free version guideSelf-hosted LLM alternatives to …..Screenpipe database query setupRunning screenpipe for freeMac Studio network switch setupClaude extension in vivaldi brow...General intormation reguestRed dots on neck causesChange approvalQuerying Screenpipe with Claud...Setting up daily backups in Ugre…..Upcoming remindersAccessing tools in Open WebUlLaraver issue troublesnootingLukas KovalikPro oianLinux SQLite Ul for NAS vChatCoworkCodebut how come some days have no jpg only mp4 is there some transition.Review documentation and forums and try to understand how doe sit worknearchee the weoGood, now I have the full picture. Here's the definitive answer:The JPG vs MP4 question: it's a version transitionScreenpipe v2.0 was a major release where event-driven capture replaced continuous videorecording, with a new database schema and API endpoint changes. MintlifyBefore v2 (old system) → MP4 only Screenpipe recorded your screen continuously at 0.5fps, encoding everything into rolling MP4 files. Every frame was extracted from video forOCR. This is why you have 526 MP4s - that's the old system running on your earlier days.After v2 (new system) JPG only Instead of recording every second, screenpipe listens formeaningful events - app switches, clicks, typing pauses, scrolling -- and captures ascreenshot only when something actually changes. Each capture pairs a screenshot with theaccessibility tree. GitHub JPGs are the output of this new system.Your data confirms this exactly:2026-04-092026-04-112026-04-122026-04-132026-04-142026-04-15only MP4s(old continuous recording)lalXH→ mix?mostly JPGs→ only JPGs(new event-driven)You updated Screenpipe somewhere around Apr 11-12 and it switched modes. You canverify:bash# See the mix per dayfor d in -/.screenpipe/data/data/*/; doecho "$(basename $d): JPGs=$(find $d -name '*.jpg' | wc -1) MP4s=$(find $d -name 'doneWhy this matters for your dataAspect0eKMP4)New.rStorage~SUO MbrSnnText extractionOCR from videoframesAccessibility tree (faster, more accurate)Reply...+Sonnet 4.6Claude is Al ana can make mistakes. rlease aouble-cneck cited sources....
|
27744
|
|
8681
|
166
|
37
|
2026-04-14T06:59:42.355506+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776149982355_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DiaFilelEditViewTabsBookmarksHistoryExtensionsWind DiaFilelEditViewTabsBookmarksHistoryExtensionsWindowHelpmeet.google.com / Daily - PlatformNikolay Yankov (Presenting)nboк (21SRD-677T7 (SRO-67C зy 19796( Service-cJz Font Awe• COstI CHE3 SSHEl Dutados3 Circiecjminay / app&‹> Code11 Pull requests 24ActionsCD WikiSecurity and qualityk Insights@ Settings|ActionsFix Dependabot issuessecfix.ymlAll workfiows$1NNotion[include) Database Migrations[include) Start/Stop testing environme...Refactor Slack notification handling in secfix scripts and workflowPu Dpenosootiwee# 2681d34 pushed by nikolay-yankovMandoecien8 CachesA Deployments• Attestations|EB Runners@ Usage metrics@ Performance metrics• Fix Dependabot issuesmu vepchos0otn3n con Monanh by magen• Fix Dependabot issuesFix Dependabot istues R38: Manually run by pilkolay-yankovFix Dependabot issuesFix Dependabot issues #37: Manually run by nikolay-yankor• Fix Dependabot issuesFix Dependabot issues #36: Manually run by nikolay-yankoy• Fix Dependabot issuesQ Actions :C Ct: DepeD Tиsks27 insights & CoachinD DevQ Type to searchQ Fiter workdiow runs•ux.autonate-dependabot-issue-auto300-0epc00000530Cautonate-dependabot-issue..autonate-dependabot-issue..E8 Aor 9, 10:12 PM OMT+3Ô FalureE Aor 9, 10:04 PM GMT+3© 50sỆ Apr 9, 9:48 PM GMT+3Ô em 128|68 Aor 9, 9:48 PM GMT+3(0) 150E8 Apr 9, 7:30 PM GMT+3Ô 4m 238Apr 9,7116 PM GMTe9:59 AM Daily - PlatformDaily - Platform • 6 m leftO Far DepeStefka StoyanovaSteliyan GeorgievAneliya Angelova14:178 • Tue 14 Apr 9:59:42• ChatNikolay YankovNikolay IvanovLukas Kovalik...
|
NULL
|
-8529167732228103597
|
NULL
|
visual_change
|
ocr
|
NULL
|
DiaFilelEditViewTabsBookmarksHistoryExtensionsWind DiaFilelEditViewTabsBookmarksHistoryExtensionsWindowHelpmeet.google.com / Daily - PlatformNikolay Yankov (Presenting)nboк (21SRD-677T7 (SRO-67C зy 19796( Service-cJz Font Awe• COstI CHE3 SSHEl Dutados3 Circiecjminay / app&‹> Code11 Pull requests 24ActionsCD WikiSecurity and qualityk Insights@ Settings|ActionsFix Dependabot issuessecfix.ymlAll workfiows$1NNotion[include) Database Migrations[include) Start/Stop testing environme...Refactor Slack notification handling in secfix scripts and workflowPu Dpenosootiwee# 2681d34 pushed by nikolay-yankovMandoecien8 CachesA Deployments• Attestations|EB Runners@ Usage metrics@ Performance metrics• Fix Dependabot issuesmu vepchos0otn3n con Monanh by magen• Fix Dependabot issuesFix Dependabot istues R38: Manually run by pilkolay-yankovFix Dependabot issuesFix Dependabot issues #37: Manually run by nikolay-yankor• Fix Dependabot issuesFix Dependabot issues #36: Manually run by nikolay-yankoy• Fix Dependabot issuesQ Actions :C Ct: DepeD Tиsks27 insights & CoachinD DevQ Type to searchQ Fiter workdiow runs•ux.autonate-dependabot-issue-auto300-0epc00000530Cautonate-dependabot-issue..autonate-dependabot-issue..E8 Aor 9, 10:12 PM OMT+3Ô FalureE Aor 9, 10:04 PM GMT+3© 50sỆ Apr 9, 9:48 PM GMT+3Ô em 128|68 Aor 9, 9:48 PM GMT+3(0) 150E8 Apr 9, 7:30 PM GMT+3Ô 4m 238Apr 9,7116 PM GMTe9:59 AM Daily - PlatformDaily - Platform • 6 m leftO Far DepeStefka StoyanovaSteliyan GeorgievAneliya Angelova14:178 • Tue 14 Apr 9:59:42• ChatNikolay YankovNikolay IvanovLukas Kovalik...
|
NULL
|
|
60387
|
1300
|
31
|
2026-04-20T15:35:49.295394+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776699349295_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0A100% <78-zshMon 20 Apr 18:35:49T81DOCKERDEV (-zsh)₴82APP (-zsh)lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ 11total8946240drwxr-xr-x21 lukasstaff672 20Apr18:16drwx-92 lukasstaff294420 Apr 18:28-rw-r--r--@1lukasstaff819618 Apr 16:47.DS_Store-rw-r----1 lukasstaff358 16Apr16:49config.jsondrwxr-xr-x167lukasstaff5344 18Apr14:45data-rw-r--r--@1 lukasstaff4556668928 20 Apr18:26db.sqlite-W-r=-r--1lukasstaff32768 20-rw-r-lukasstaffApr18:16db.sqlite-shm15623072 20Apr18:28db.sqlite-waldrwxr-xr-xlukasstaff288 15Apr 14:53pipeslukasstaff1327369Apr 21:27-rw-r--r--1lukasstaffscreenpipe.2026-04-09.0.10g95425 11Apr23:14screenpipe.2026-04-11.0.10g-rw-r--r--lukasstaff72332 12Apr 23:55screenpipe.2026-04-12.0.10g-rw-r--r--lukasstaff7155513Apr 19:50-rw-r--r--lukasstaffscreenpipe.2026-04-13.0.log16238914Apr19:31screenpipe.2026-04-14.0.log-rw-r--r--lukasstaff17576315Apr 18:55 screenpipe.2026-04-15.0.10g-rw-r--r--lukasstaff19699416 Apr 20:33 screenpipe. 2026-04-16.0.10g-rw-r--r--lukasstaff208424 17 Apr 21:06 screenpipe.2026-04-17.0.10g-rw-r--r--1lukasstaff61983 18 Apr 14:45 screenpipe.2026-04-18.0.10g-rw-r--r--lukasstaff346081 20 Apr 18:27 screenpipe.2026-04-20.0.10g-rwxr-xr-xelukasstaff-rw-r--r--@lukasstaff14998 18 Apr 18:35 screenpipe_sync.sh23967 19 Apr 18:31 sync.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ du -sh ~/.screenpipe9.5G/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json5.2G/Users/lukas/.screenpipe/data4.2G/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm16M/Users/lukas/.screenpipe/db.sqlite-wal36K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log96K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log72K/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.10g72K/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log160K/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.1og172K/Users/lukas/.screenpipe/screenpipe.2026-04-15.0.1og196K/Users/lukas/.screenpipe/screenpipe.2026-04-16.0.1og204K/Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log64K/Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log388K/Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log16K/Users/lukas/.screenpipe/screenpipe_sync.sh24K/Users/lukas/.screenpipe/sync.logLukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ l*3screenpipe*O ₴4ec2-user@ip-10-30-159-186:~ (...₴85-zsh...
|
NULL
|
-8528951897162941064
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0A100% <78-zshMon 20 Apr 18:35:49T81DOCKERDEV (-zsh)₴82APP (-zsh)lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ 11total8946240drwxr-xr-x21 lukasstaff672 20Apr18:16drwx-92 lukasstaff294420 Apr 18:28-rw-r--r--@1lukasstaff819618 Apr 16:47.DS_Store-rw-r----1 lukasstaff358 16Apr16:49config.jsondrwxr-xr-x167lukasstaff5344 18Apr14:45data-rw-r--r--@1 lukasstaff4556668928 20 Apr18:26db.sqlite-W-r=-r--1lukasstaff32768 20-rw-r-lukasstaffApr18:16db.sqlite-shm15623072 20Apr18:28db.sqlite-waldrwxr-xr-xlukasstaff288 15Apr 14:53pipeslukasstaff1327369Apr 21:27-rw-r--r--1lukasstaffscreenpipe.2026-04-09.0.10g95425 11Apr23:14screenpipe.2026-04-11.0.10g-rw-r--r--lukasstaff72332 12Apr 23:55screenpipe.2026-04-12.0.10g-rw-r--r--lukasstaff7155513Apr 19:50-rw-r--r--lukasstaffscreenpipe.2026-04-13.0.log16238914Apr19:31screenpipe.2026-04-14.0.log-rw-r--r--lukasstaff17576315Apr 18:55 screenpipe.2026-04-15.0.10g-rw-r--r--lukasstaff19699416 Apr 20:33 screenpipe. 2026-04-16.0.10g-rw-r--r--lukasstaff208424 17 Apr 21:06 screenpipe.2026-04-17.0.10g-rw-r--r--1lukasstaff61983 18 Apr 14:45 screenpipe.2026-04-18.0.10g-rw-r--r--lukasstaff346081 20 Apr 18:27 screenpipe.2026-04-20.0.10g-rwxr-xr-xelukasstaff-rw-r--r--@lukasstaff14998 18 Apr 18:35 screenpipe_sync.sh23967 19 Apr 18:31 sync.loglukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ du -sh ~/.screenpipe9.5G/Users/lukas/.screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ du -sh ~/.screenpipe/*4.0K/Users/lukas/.screenpipe/config.json5.2G/Users/lukas/.screenpipe/data4.2G/Users/lukas/.screenpipe/db.sqlite32K/Users/lukas/.screenpipe/db.sqlite-shm16M/Users/lukas/.screenpipe/db.sqlite-wal36K/Users/lukas/.screenpipe/pipes132K/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log96K/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log72K/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.10g72K/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log160K/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.1og172K/Users/lukas/.screenpipe/screenpipe.2026-04-15.0.1og196K/Users/lukas/.screenpipe/screenpipe.2026-04-16.0.1og204K/Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log64K/Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log388K/Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log16K/Users/lukas/.screenpipe/screenpipe_sync.sh24K/Users/lukas/.screenpipe/sync.logLukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ l*3screenpipe*O ₴4ec2-user@ip-10-30-159-186:~ (...₴85-zsh...
|
60386
|
|
26638
|
563
|
68
|
2026-04-15T13:28:36.005144+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776259716005_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
305742042112120386/135VImperial Age5 Magnus Olafss 305742042112120386/135VImperial Age5 Magnus Olafsson: 16079/16079NVRajyapala: 13235/132351 kovaliklukas: 11238/112388 Almish Yiltawar: 10880/10880ON6 László I: 10275/10275ÉIV7 Maximilian of Habsburg: 8216/8216 W IV4 Louis VI: 7925/7925 IV3 Huascár: 6432/6432 # IVTrebuchetkovalfklukas (Britons)200T 1/150Q 16s0/19u...
|
NULL
|
-8528888737426897296
|
NULL
|
click
|
ocr
|
NULL
|
305742042112120386/135VImperial Age5 Magnus Olafss 305742042112120386/135VImperial Age5 Magnus Olafsson: 16079/16079NVRajyapala: 13235/132351 kovaliklukas: 11238/112388 Almish Yiltawar: 10880/10880ON6 László I: 10275/10275ÉIV7 Maximilian of Habsburg: 8216/8216 W IV4 Louis VI: 7925/7925 IV3 Huascár: 6432/6432 # IVTrebuchetkovalfklukas (Britons)200T 1/150Q 16s0/19u...
|
NULL
|
|
49489
|
1057
|
28
|
2026-04-17T13:54:05.452117+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776434045452_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/jira/software/c/projects/JY/boards/37O JIMINNYDevelopers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM° 120216 is your HubSpot Log in CocCa CloudWatch | eu-west-1® For you• Recent# Starred0+ Apps |O, SpacesSpaces / Jiminny (New)Platform Team &• Summary& TimelineE BacklogQ Search board000New TabRecentIREADY FOR DEV7Z Configure SSH access to multiple. fix-cache-for-business-processesDashboard • Jiminny • MembraneApp "4oho CRM" • Jiminny • MemJY-20692 change confirmation par( JY-20543 add AJ reports User piloa Jiminnv8 JiminnyJiminny (New)+ ...I 0 Platform TeamID SE KanbanI Capture TeamCD Enterprise Stability I...I Processing TeamY Service-Desk= More spaces= FiltersC Dashboards@ OperationsRework Nudges - Phase 2 -cnance Nuoces to use tneiindexed_at periodBacklog[ JY-20489|oeeee-Investigate and fix why exceedFontawesome package limitsMAINTENANCEReady for DevEJY-20564 (1 870000=8Jiminny/ Exceptions|HttpBadReque@ Jiminny& Confluence8: Teams+ New Tab*= Customise sidebarAI Reports > Empty pagedesign and promotionAJ REPORTSBacklogD JY-203726 0000 =8Send email notification whenthe report is not generatedAJ REPORTSBacklogà JY-201572 .000=€Notify a user before the AJReport expiresAJ REPORTSBacklog[ JY-205081 •000=0Syad oporunties witnutaPLATFORM STABILTTYBacklogE JY-203524 .000=0Upgrade BE libraries - AprMAINTENANCEBacklogEJY-199571.000=40 lil l Tech Day Review • in 6mA*100% C4& Fri 17 Apr 16:54:05Q Search I+ CreateAsk Rovo®W Active sprints E Calendar Reports4Testing Board E List # Forms & Components % Development % Code Security & Releases P Deployments E Archived work items More 4 +Epic vType vLabel vQuick tilters vComplete sprintGroup: QueriesIN DEV 5Change forever nudges to 1year expirationCOST-EFFECTIVE AND FASTER NUDGESIn DevIJY-971245 8 •=0CODE REVIEW 2Evaluation for AI Activity TypesAUTO-DETECTED ACTIVITY TYPECode ReviewEJ-19798 11 86 0000=0BLOCKEDQA1[Part2] Automated reports withAsk JiminnyAJ REPORTSIn QA(AI) (BE FE) QA[ JY-189095 0 = 2PO ACCEPTANCEDEPLOY 4Prepare fallback with email forSSO for 'persistentname_id_formatREDUCE CHURNClosed[ JY-206321 8•=0AI Review - Q1 - Summary/Action items/Key PointsGROWTH - MAINTAIN OUR COMPETITI...In Dev# JY-205663 =2Delays in CRM SyncPLATFORM STABILITYCode Review# JY-205532 87 = 0AJ Panorama> Don't showinternal errors to customersASK ANYTHING ON ANYTHINGDeployedProphet)** JY-20278Issue with reconnecting ZohoIn DevD JY-2069210•=2Upgrade Python and libraries-AprMAINTENANCE[Tech Day] ImproveDeployedDependabot Bot & Experimentwith Github ActionsJY-1996710=8In Dev@JY-206960 =8Les Mills activity types notpulling inIn DevD JY-20698CeoE et aromatieait) filerSUPPORT TICKETSDeployedĐ JY-206810.5 12 •8...
|
NULL
|
-8528541022388810059
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/jira/software/c/projects/JY/boards/37O JIMINNYDevelopers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM° 120216 is your HubSpot Log in CocCa CloudWatch | eu-west-1® For you• Recent# Starred0+ Apps |O, SpacesSpaces / Jiminny (New)Platform Team &• Summary& TimelineE BacklogQ Search board000New TabRecentIREADY FOR DEV7Z Configure SSH access to multiple. fix-cache-for-business-processesDashboard • Jiminny • MembraneApp "4oho CRM" • Jiminny • MemJY-20692 change confirmation par( JY-20543 add AJ reports User piloa Jiminnv8 JiminnyJiminny (New)+ ...I 0 Platform TeamID SE KanbanI Capture TeamCD Enterprise Stability I...I Processing TeamY Service-Desk= More spaces= FiltersC Dashboards@ OperationsRework Nudges - Phase 2 -cnance Nuoces to use tneiindexed_at periodBacklog[ JY-20489|oeeee-Investigate and fix why exceedFontawesome package limitsMAINTENANCEReady for DevEJY-20564 (1 870000=8Jiminny/ Exceptions|HttpBadReque@ Jiminny& Confluence8: Teams+ New Tab*= Customise sidebarAI Reports > Empty pagedesign and promotionAJ REPORTSBacklogD JY-203726 0000 =8Send email notification whenthe report is not generatedAJ REPORTSBacklogà JY-201572 .000=€Notify a user before the AJReport expiresAJ REPORTSBacklog[ JY-205081 •000=0Syad oporunties witnutaPLATFORM STABILTTYBacklogE JY-203524 .000=0Upgrade BE libraries - AprMAINTENANCEBacklogEJY-199571.000=40 lil l Tech Day Review • in 6mA*100% C4& Fri 17 Apr 16:54:05Q Search I+ CreateAsk Rovo®W Active sprints E Calendar Reports4Testing Board E List # Forms & Components % Development % Code Security & Releases P Deployments E Archived work items More 4 +Epic vType vLabel vQuick tilters vComplete sprintGroup: QueriesIN DEV 5Change forever nudges to 1year expirationCOST-EFFECTIVE AND FASTER NUDGESIn DevIJY-971245 8 •=0CODE REVIEW 2Evaluation for AI Activity TypesAUTO-DETECTED ACTIVITY TYPECode ReviewEJ-19798 11 86 0000=0BLOCKEDQA1[Part2] Automated reports withAsk JiminnyAJ REPORTSIn QA(AI) (BE FE) QA[ JY-189095 0 = 2PO ACCEPTANCEDEPLOY 4Prepare fallback with email forSSO for 'persistentname_id_formatREDUCE CHURNClosed[ JY-206321 8•=0AI Review - Q1 - Summary/Action items/Key PointsGROWTH - MAINTAIN OUR COMPETITI...In Dev# JY-205663 =2Delays in CRM SyncPLATFORM STABILITYCode Review# JY-205532 87 = 0AJ Panorama> Don't showinternal errors to customersASK ANYTHING ON ANYTHINGDeployedProphet)** JY-20278Issue with reconnecting ZohoIn DevD JY-2069210•=2Upgrade Python and libraries-AprMAINTENANCE[Tech Day] ImproveDeployedDependabot Bot & Experimentwith Github ActionsJY-1996710=8In Dev@JY-206960 =8Les Mills activity types notpulling inIn DevD JY-20698CeoE et aromatieait) filerSUPPORT TICKETSDeployedĐ JY-206810.5 12 •8...
|
NULL
|
|
51835
|
1120
|
32
|
2026-04-20T06:22:35.732442+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776666155732_m1.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEvent.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME = 'automated-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, self::EVENT_NAME, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
}...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"RequestGenerateAskJiminnyReportJobTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME = 'automated-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, self::EVENT_NAME, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME = 'automated-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, self::EVENT_NAME, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
-8527875683908046703
|
-3053276149902001341
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME = 'automated-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, self::EVENT_NAME, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
}...
|
NULL
|
|
3512
|
69
|
21
|
2026-04-12T12:54:36.583488+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-12/1775 /Users/lukas/.screenpipe/data/data/2026-04-12/1775998476583_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Boosteroid‹$0 lolA100% <478Sun 12 Apr 15:54:36- Boosteroid‹$0 lolA100% <478Sun 12 Apr 15:54:36-zshDOCKERO ₴1DEV (-zsh)О 82"n": 2,"text_source": "accessibility"3,},{},{},},{},{"app_name": "Code","n": 2,"text_source": "ocr""app_name": "Finder","n": 2,"text_source": "hybrid""app_name" : "Raycast","n": 2,"text_source": "accessibility""app_name": "Preview","n": 1,"text_source": "hybrid""app_name": "QuickTime Player","n": 1,"text_source": "accessibility""app_name": "System Settings","n": 1,"text_source": "accessibility""app_name": "iTerm2","n": 1,"text_source": "hybrid""app_name": "iTerm2","n": 1,"text_source": "ocr"Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |APP (-zsh)• *3-zsh• ₴4-zsh• $5-zsh-zsh®T8O 87* Unable to acces...• *8...
|
NULL
|
-8527686913311095953
|
NULL
|
click
|
ocr
|
NULL
|
Boosteroid‹$0 lolA100% <478Sun 12 Apr 15:54:36- Boosteroid‹$0 lolA100% <478Sun 12 Apr 15:54:36-zshDOCKERO ₴1DEV (-zsh)О 82"n": 2,"text_source": "accessibility"3,},{},{},},{},{"app_name": "Code","n": 2,"text_source": "ocr""app_name": "Finder","n": 2,"text_source": "hybrid""app_name" : "Raycast","n": 2,"text_source": "accessibility""app_name": "Preview","n": 1,"text_source": "hybrid""app_name": "QuickTime Player","n": 1,"text_source": "accessibility""app_name": "System Settings","n": 1,"text_source": "accessibility""app_name": "iTerm2","n": 1,"text_source": "hybrid""app_name": "iTerm2","n": 1,"text_source": "ocr"Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |APP (-zsh)• *3-zsh• ₴4-zsh• $5-zsh-zsh®T8O 87* Unable to acces...• *8...
|
3511
|
|
23287
|
NULL
|
0
|
2026-04-15T11:18:52.262109+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776251932262_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeDMsActivityFilesLater..• +SlackFileEditViewGoEDHomeDMsActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil Vasilev XSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaP. Nikolay Nikolov ®2 Galya Dimitrova, Ni...#: AppsJira CloudToast# releases8 22+Messages@ FilesBookmarksCircleClv 2 new messagesDeploymentsuccessrui:Project: appWhen:04/15/202609:51:25Tag:View JobGitHub APP 1:53 PM2 new commits pushed tomaster by des-d0344ab16 - JY-20151: Enhance waveformdisplay with talk-to-listen ratio and stylingadjustments3c043232 - Merge pull request #11967from jiminny/JY-20151-add-talk-to-listen-to-the-waveform( jiminny/app Added by GitHubCircleCl APP 2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobMessage #releasesAaNewSupport Daily • in 42 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)VTDecoderXPCServiceFirefox GPU HelperFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)FirefoxCP Isolated Web ContentclaudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentClaude Helper (Renderer)iTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaudeMem...2,13 GB1,10 GB960,6 MB908,0 MB835,0 MB780,0 MB767,7 MB592,3 MB544,3 MB522,0 MB496,0 MB437,7 MB436,6 MB428,4 MB423,6 MB401,0 MB382,0 MB371,9 MB346,4 MB342,2 MB326,2 MB306,7 MB293,8 MB256,4 MB250,1 MB238,0 MB195,1 MB194,3 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 14:18:52CPUMemoryDiskThreads3823267584251127302524261624272523152413212815262760EnergyPorts61119 2461257311 20512419 446167254245126120124199122125125120172120723281252081 787122126722PID83696407429748014146644203084283701146738019367133548035831418633527643652430164817326548368985091011483583360519487856138482986049116,00 GB13,93 GB <2,02 GB3,07 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,55 GB3,05 GB5,78 GB...
|
NULL
|
-8527534472692009737
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeDMsActivityFilesLater..• +SlackFileEditViewGoEDHomeDMsActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil Vasilev XSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaP. Nikolay Nikolov ®2 Galya Dimitrova, Ni...#: AppsJira CloudToast# releases8 22+Messages@ FilesBookmarksCircleClv 2 new messagesDeploymentsuccessrui:Project: appWhen:04/15/202609:51:25Tag:View JobGitHub APP 1:53 PM2 new commits pushed tomaster by des-d0344ab16 - JY-20151: Enhance waveformdisplay with talk-to-listen ratio and stylingadjustments3c043232 - Merge pull request #11967from jiminny/JY-20151-add-talk-to-listen-to-the-waveform( jiminny/app Added by GitHubCircleCl APP 2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobMessage #releasesAaNewSupport Daily • in 42 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)VTDecoderXPCServiceFirefox GPU HelperFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)FirefoxCP Isolated Web ContentclaudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentClaude Helper (Renderer)iTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaudeMem...2,13 GB1,10 GB960,6 MB908,0 MB835,0 MB780,0 MB767,7 MB592,3 MB544,3 MB522,0 MB496,0 MB437,7 MB436,6 MB428,4 MB423,6 MB401,0 MB382,0 MB371,9 MB346,4 MB342,2 MB326,2 MB306,7 MB293,8 MB256,4 MB250,1 MB238,0 MB195,1 MB194,3 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 14:18:52CPUMemoryDiskThreads3823267584251127302524261624272523152413212815262760EnergyPorts61119 2461257311 20512419 446167254245126120124199122125125120172120723281252081 787122126722PID83696407429748014146644203084283701146738019367133548035831418633527643652430164817326548368985091011483583360519487856138482986049116,00 GB13,93 GB <2,02 GB3,07 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,55 GB3,05 GB5,78 GB...
|
23286
|
|
38347
|
785
|
43
|
2026-04-16T13:09:14.963601+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776344954963_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Technology TreeSiciliansInfantry and Cavalry civil Technology TreeSiciliansInfantry and Cavalry civilization• Start with +100 stone• Farm upgrades provide +125% additional food• Soldiers receive -40% bonus damage• Can build Donjon in Dark Age, replaces WatchTower-line• Fortifica ions built +50% faster; Town Centers built+100% fasterUnique Unit:Serjeant (Infantry)Unique Techs:• First Crusade (Up to 5 Town Centers spawn 5 Serjeantseach; units more resistant to conversion)• Hauberk (Knight-line +1 melee/+2 pierce armor)Team Bonus:Transport Ships +5 line of sight and cost -50%KeyUnitBuildingCommonRegionalUniqueNot AvailableUpgradeRequiredTechnologyBackDark AgeFeudal AgeCastle AgeImperial AgeArcherCrossbowmanArballesterArcheryRangcSkirmishernteSkirmisherCavalrynIcuerRIIsMilitiaMPTICATOA IISLongSwordsmanwo-randedSwordsmanChampionBarracksDuerTOHIdDakemancamhecon.SquiresScoutCavalryLezatDPOCPaladinBllondllinesBatteRa...
|
NULL
|
-8527526835441887209
|
NULL
|
visual_change
|
ocr
|
NULL
|
Technology TreeSiciliansInfantry and Cavalry civil Technology TreeSiciliansInfantry and Cavalry civilization• Start with +100 stone• Farm upgrades provide +125% additional food• Soldiers receive -40% bonus damage• Can build Donjon in Dark Age, replaces WatchTower-line• Fortifica ions built +50% faster; Town Centers built+100% fasterUnique Unit:Serjeant (Infantry)Unique Techs:• First Crusade (Up to 5 Town Centers spawn 5 Serjeantseach; units more resistant to conversion)• Hauberk (Knight-line +1 melee/+2 pierce armor)Team Bonus:Transport Ships +5 line of sight and cost -50%KeyUnitBuildingCommonRegionalUniqueNot AvailableUpgradeRequiredTechnologyBackDark AgeFeudal AgeCastle AgeImperial AgeArcherCrossbowmanArballesterArcheryRangcSkirmishernteSkirmisherCavalrynIcuerRIIsMilitiaMPTICATOA IISLongSwordsmanwo-randedSwordsmanChampionBarracksDuerTOHIdDakemancamhecon.SquiresScoutCavalryLezatDPOCPaladinBllondllinesBatteRa...
|
NULL
|
|
14055
|
310
|
24
|
2026-04-14T13:11:02.089092+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776172262089_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"n": 1,
"text_source": "n": 1,
"text_source": "ocr"
},
{
"app_name": "Preview",
"n": 1,
"text_source": "hybrid"
},
{
"app_name": "QuickTime Player",
"n": 1,
"text_source": "accessibility"
},
{
"app_name": "System Settings",
"n": 1,
"text_source": "accessibility"
},
{
"app_name": "iTerm2",
"n": 1,
"text_source": "hybrid"
},
{
"app_name": "iTerm2",
"n": 1,
"text_source": "ocr"
}
]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl -s -X POST [URL_WITH_CREDENTIALS] ~ $ sqlite3 -json ~/.screenpipe/db.sqlite SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20
zsh: no matches found: COUNT(*)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10
Error: in prepare, incomplete input
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -json ~/.screenpipe/db.sqlite "SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20;"
[{"app_name":"Boosteroid","n":1301},
{"app_name":"iTerm2","n":581},
{"app_name":"Firefox","n":338},
{"app_name":"Claude","n":173},
{"app_name":"Code","n":35},
{"app_name":"Dia","n":31},
{"app_name":"Alfred","n":24},
{"app_name":"Safari","n":20},
{"app_name":"Finder","n":19},
{"app_name":"QuickTime Player","n":16},
{"app_name":"UserNotificationCenter","n":4},
{"app_name":"Activity Monitor","n":4},
{"app_name":"NetAuthAgent","n":3},
{"app_name":"Control Centre","n":3},
{"app_name":"Slack","n":2},
{"app_name":"Raycast","n":2},
{"app_name":"System Settings","n":1},
{"app_name":"Preview","n":1}]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite "SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10;"
timestamp app_name window_name
-------------------------------- -------- -----------
2026-04-12T13:33:14.649009+00:00 iTerm2 -zsh
2026-04-12T13:33:13.963922+00:00
2026-04-12T13:33:13.415261+00:00
2026-04-12T13:33:12.521412+00:00 iTerm2 -zsh
2026-04-12T13:33:09.128387+00:00 iTerm2 -zsh
2026-04-12T13:33:06.137541+00:00 iTerm2 -zsh
2026-04-12T13:33:05.165254+00:00 Claude Claude
2026-04-12T13:32:50.425455+00:00
2026-04-12T13:32:49.108195+00:00 Claude Claude
2026-04-12T13:32:45.339017+00:00 iTerm2 -zsh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-status
{
"status": "healthy",
"frame_status": "ok",
"audio_status": "disabled",
"last_frame": "2026-04-13T15:11:31+03:00",
"uptime": 19271.640087958,
"fps": 0.11841234008027791,
"frames": 2282
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
256M /Users/lukas/.screenpipe/data
418M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
196K /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
32K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
675M /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite db.sqlite-wal screenpipe.2026-04-09.0.log screenpipe.2026-04-12.0.log
data db.sqlite-shm pipes screenpipe.2026-04-11.0.log screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 858888
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .
drwx------+ 91 lukas staff 2912 13 Apr 17:09 ..
-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite
-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm
-rw-r--r-- 1 lukas staff 1038272 13 Apr 17:10 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 29277 13 Apr 17:10 screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls
data pending-transcriptions screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ll
total 0
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 .
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 ..
drwxr-xr-x 7 lukas staff 224 13 Apr 15:11 data
drwxr-xr-x 2 lukas staff 64 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 24
drwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..
-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 208 lukas staff 6656 13 Apr 17:11 2026-04-13
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh .
233M .
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /.
du: /./usr/sbin/authserver: Permission denied
du: /./Library/Application Support/Apple/ParentalControls/Users: Permission denied
du: /./Library/Application Support/Apple/AssetCache/Data: Permission denied
du: /./Library/Application Support/ApplePushService: Permission denied
du: /./Library/Application Support/org.pqrs/tmp/rootonly: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied
du: /./Library/Application Support/com.apple.TCC: Operation not permitted
du: /./Library/Application Support/Iru/Quarantine: Permission denied
du: /./Library/Application Support/Iru/Cached Items: Permission denied
du: /./Library/Trial: Operation not permitted
^C
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /*
14G /Applications
du: /Library/Application Support/Apple/ParentalControls/Users: Permission denied
du: /Library/Application Support/Apple/AssetCache/Data: Permission denied
du: /Library/Application Support/ApplePushService: Permission denied
du: /Library/Application Support/org.pqrs/tmp/rootonly: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied
du: /Library/Application Support/com.apple.TCC: Operation not permitted
du: /Library/Application Support/Iru/Quarantine: Permission denied
du: /Library/Application Support/Iru/Cached Items: Permission denied
du: /Library/Trial: Operation not permitted
du: /Library/Tailscale/files: Permission denied
du: /Library/Caches/com.apple.amsengagementd.classicdatavault: Operation not permitted
du: /Library/Caches/com.apple.aneuserd: Operation not permitted
du: /Library/Caches/com.apple.iconservices.store: Permission denied
du: /Library/Caches/com.apple.aned: Operation not permitted
5.6G /Library
^[[Adu: /System/Library/DirectoryServices/DefaultLocalDB/Default: Permission denied
^C
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh *
39M 2026-04-09
62M 2026-04-11
57M 2026-04-12
73M 2026-04-13
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 871176
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .
drwx------+ 91 lukas staff 2912 13 Apr 17:09 ..
-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite
-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm
-rw-r--r-- 1 lukas staff 6575552 13 Apr 17:12 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 29974 13 Apr 17:11 screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite
cp: /Volumes/screenpipe/db.sqlite: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite
cp: /Volumes/screenpipe/db.sqlite: Operation not permitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite
Password:
[PASSWORD] PICO 5.09 New Buffer
[ Read 13 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
cp: /Volumes/screenpipe/db.sqlite: Operation not permitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite
Password:
[PASSWORD] PICO 5.09 New Buffer
[ Read 14 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
sudo: a password is required
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls
data pending-transcriptions screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cp ~/.screenpipe/data/* /Volumes/Test/screenpipe
cp: /Users/lukas/.screenpipe/data/data is a directory (not copied).
cp: /Users/lukas/.screenpipe/data/pending-transcriptions is a directory (not copied).
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 24
drwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..
-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 156 lukas staff 4992 13 Apr 17:22 2026-04-13
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp ~/.screenpipe/data/data/2026-04-13 /Volumes/Test/screenpipe/data/2026-04-13
cp: /Users/lukas/.screenpipe/data/data/2026-04-13 is a directory (not copied).
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-09 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-11 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 1022008
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .
drwx------+ 91 lukas staff 2912 13 Apr 17:09 ..
-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 512241664 13 Apr 19:35 db.sqlite
-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm
-rw-r--r-- 1 lukas staff 9603752 13 Apr 19:38 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 59116 13 Apr 19:37 screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
{
"status": "healthy",
UW PICO 5.09 New Buffer
[ Read 378 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
"frame_status": "ok",
"audio_status": "disabled",
"last_frame": "2026-04-14T09:44:01+03:00",
"uptime": 1243.255541917,
"fps": 0.254975738544637,
"frames": 317
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
{
"status": "healthy",
"frame_status": "ok",
"audio_status": "disabled",
"last_frame": "2026-04-14T10:12:37+03:00",
"uptime": 2959.307842208,
"fps": 0.[CREDIT_CARD],
"frames": 929
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
887M /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
308M /Users/lukas/.screenpipe/data
561M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
18M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
32K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
392M /Users/lukas/.screenpipe/data
660M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
15M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
44K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
477M /Users/lukas/.screenpipe/data
770M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
8.0M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
60K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.2G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.2G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.3G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.5G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
558M /Users/lukas/.screenpipe/data
976M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
260K /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
617M /Users/lukas/.screenpipe/data
1.0G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.6G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-93-249:~ (nc)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Unable to access screenpipe activity data (claude)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"n\": 1,\n \"text_source\": \"ocr\"\n },\n {\n \"app_name\": \"Preview\",\n \"n\": 1,\n \"text_source\": \"hybrid\"\n },\n {\n \"app_name\": \"QuickTime Player\",\n \"n\": 1,\n \"text_source\": \"accessibility\"\n },\n {\n \"app_name\": \"System Settings\",\n \"n\": 1,\n \"text_source\": \"accessibility\"\n },\n {\n \"app_name\": \"iTerm2\",\n \"n\": 1,\n \"text_source\": \"hybrid\"\n },\n {\n \"app_name\": \"iTerm2\",\n \"n\": 1,\n \"text_source\": \"ocr\"\n }\n]\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl -s -X POST http://localhost:3030/raw_sql \\\n -H \"Content-Type: application/json\" \\\n -d '{\"query\": \"SELECT COUNT(*) as ocr_rows FROM ocr_text LIMIT 1\"}' \\\n | python3 -m json.tool\n[\n {\n \"ocr_rows\": 2752\n }\n]\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -json ~/.screenpipe/db.sqlite SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20\nzsh: no matches found: COUNT(*)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10\nError: in prepare, incomplete input\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -json ~/.screenpipe/db.sqlite \"SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20;\"\n[{\"app_name\":\"Boosteroid\",\"n\":1301},\n{\"app_name\":\"iTerm2\",\"n\":581},\n{\"app_name\":\"Firefox\",\"n\":338},\n{\"app_name\":\"Claude\",\"n\":173},\n{\"app_name\":\"Code\",\"n\":35},\n{\"app_name\":\"Dia\",\"n\":31},\n{\"app_name\":\"Alfred\",\"n\":24},\n{\"app_name\":\"Safari\",\"n\":20},\n{\"app_name\":\"Finder\",\"n\":19},\n{\"app_name\":\"QuickTime Player\",\"n\":16},\n{\"app_name\":\"UserNotificationCenter\",\"n\":4},\n{\"app_name\":\"Activity Monitor\",\"n\":4},\n{\"app_name\":\"NetAuthAgent\",\"n\":3},\n{\"app_name\":\"Control Centre\",\"n\":3},\n{\"app_name\":\"Slack\",\"n\":2},\n{\"app_name\":\"Raycast\",\"n\":2},\n{\"app_name\":\"System Settings\",\"n\":1},\n{\"app_name\":\"Preview\",\"n\":1}]\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite \"SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10;\"\ntimestamp app_name window_name\n-------------------------------- -------- -----------\n2026-04-12T13:33:14.649009+00:00 iTerm2 -zsh \n2026-04-12T13:33:13.963922+00:00 \n2026-04-12T13:33:13.415261+00:00 \n2026-04-12T13:33:12.521412+00:00 iTerm2 -zsh \n2026-04-12T13:33:09.128387+00:00 iTerm2 -zsh \n2026-04-12T13:33:06.137541+00:00 iTerm2 -zsh \n2026-04-12T13:33:05.165254+00:00 Claude Claude \n2026-04-12T13:32:50.425455+00:00 \n2026-04-12T13:32:49.108195+00:00 Claude Claude \n2026-04-12T13:32:45.339017+00:00 iTerm2 -zsh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-status\n{\n \"status\": \"healthy\",\n \"frame_status\": \"ok\",\n \"audio_status\": \"disabled\",\n \"last_frame\": \"2026-04-13T15:11:31+03:00\",\n \"uptime\": 19271.640087958,\n \"fps\": 0.11841234008027791,\n \"frames\": 2282\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n256M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n418M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n196K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 32K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n675M\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls\nconfig.json\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-wal\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-09.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-12.0.log\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-shm\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpipes\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-11.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 858888\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .\ndrwx------+ 91 lukas staff 2912 13 Apr 17:09 ..\n-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 1038272 13 Apr 17:10 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 29277 13 Apr 17:10 screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpending-transcriptions\u0000\tscreenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ll\ntotal 0\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 .\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 ..\ndrwxr-xr-x 7 lukas staff 224 13 Apr 15:11 data\ndrwxr-xr-x 2 lukas staff 64 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 24\ndrwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..\n-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 208 lukas staff 6656 13 Apr 17:11 2026-04-13\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh .\n233M\u0000\u0000\u0000\t.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /.\ndu: /./usr/sbin/authserver: Permission denied\ndu: /./Library/Application Support/Apple/ParentalControls/Users: Permission denied\ndu: /./Library/Application Support/Apple/AssetCache/Data: Permission denied\ndu: /./Library/Application Support/ApplePushService: Permission denied\ndu: /./Library/Application Support/org.pqrs/tmp/rootonly: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied\ndu: /./Library/Application Support/com.apple.TCC: Operation not permitted\ndu: /./Library/Application Support/Iru/Quarantine: Permission denied\ndu: /./Library/Application Support/Iru/Cached Items: Permission denied\ndu: /./Library/Trial: Operation not permitted\n^C\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /*\n 14G\u0000\u0000\u0000\t/Applications\ndu: /Library/Application Support/Apple/ParentalControls/Users: Permission denied\ndu: /Library/Application Support/Apple/AssetCache/Data: Permission denied\ndu: /Library/Application Support/ApplePushService: Permission denied\ndu: /Library/Application Support/org.pqrs/tmp/rootonly: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied\ndu: /Library/Application Support/com.apple.TCC: Operation not permitted\ndu: /Library/Application Support/Iru/Quarantine: Permission denied\ndu: /Library/Application Support/Iru/Cached Items: Permission denied\ndu: /Library/Trial: Operation not permitted\ndu: /Library/Tailscale/files: Permission denied\ndu: /Library/Caches/com.apple.amsengagementd.classicdatavault: Operation not permitted\ndu: /Library/Caches/com.apple.aneuserd: Operation not permitted\ndu: /Library/Caches/com.apple.iconservices.store: Permission denied\ndu: /Library/Caches/com.apple.aned: Operation not permitted\n5.6G\u0000\u0000\u0000\t/Library\n^[[Adu: /System/Library/DirectoryServices/DefaultLocalDB/Default: Permission denied\n^C\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh * \n 39M\u0000\u0000\u0000\t2026-04-09\n 62M\u0000\u0000\u0000\t2026-04-11\n 57M\u0000\u0000\u0000\t2026-04-12\n 73M\u0000\u0000\u0000\t2026-04-13\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 871176\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .\ndrwx------+ 91 lukas staff 2912 13 Apr 17:09 ..\n-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 6575552 13 Apr 17:12 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 29974 13 Apr 17:11 screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite\ncp: /Volumes/screenpipe/db.sqlite: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite\ncp: /Volumes/screenpipe/db.sqlite: Operation not permitted\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite\nPassword:\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 13 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \ncp: /Volumes/screenpipe/db.sqlite: Operation not permitted\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite\nPassword:\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 14 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \nsudo: a password is required\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpending-transcriptions\u0000\tscreenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cp ~/.screenpipe/data/* /Volumes/Test/screenpipe \ncp: /Users/lukas/.screenpipe/data/data is a directory (not copied).\ncp: /Users/lukas/.screenpipe/data/pending-transcriptions is a directory (not copied).\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 24\ndrwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..\n-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 156 lukas staff 4992 13 Apr 17:22 2026-04-13\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp ~/.screenpipe/data/data/2026-04-13 /Volumes/Test/screenpipe/data/2026-04-13\ncp: /Users/lukas/.screenpipe/data/data/2026-04-13 is a directory (not copied).\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-09 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-11 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd .. \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 1022008\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .\ndrwx------+ 91 lukas staff 2912 13 Apr 17:09 ..\n-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 512241664 13 Apr 19:35 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 9603752 13 Apr 19:38 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 59116 13 Apr 19:37 screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status\n{\n \"status\": \"healthy\",\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 378 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n \"frame_status\": \"ok\",\n \"audio_status\": \"disabled\",\n \"last_frame\": \"2026-04-14T09:44:01+03:00\",\n \"uptime\": 1243.255541917,\n \"fps\": 0.254975738544637,\n \"frames\": 317\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status\n{\n \"status\": \"healthy\",\n \"frame_status\": \"ok\",\n \"audio_status\": \"disabled\",\n \"last_frame\": \"2026-04-14T10:12:37+03:00\",\n \"uptime\": 2959.307842208,\n \"fps\": 0.3139247586039762,\n \"frames\": 929\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n887M\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n308M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n561M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 18M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n 32K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n392M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n660M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 15M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n 44K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe.2026-04-13.0.log \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/* \n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n477M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n770M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n8.0M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n 60K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n1.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n1.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n1.3G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n1.5G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n558M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n976M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n260K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n617M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n1.0G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 16M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n1.6G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"\"n\": 1,\n \"text_source\": \"ocr\"\n },\n {\n \"app_name\": \"Preview\",\n \"n\": 1,\n \"text_source\": \"hybrid\"\n },\n {\n \"app_name\": \"QuickTime Player\",\n \"n\": 1,\n \"text_source\": \"accessibility\"\n },\n {\n \"app_name\": \"System Settings\",\n \"n\": 1,\n \"text_source\": \"accessibility\"\n },\n {\n \"app_name\": \"iTerm2\",\n \"n\": 1,\n \"text_source\": \"hybrid\"\n },\n {\n \"app_name\": \"iTerm2\",\n \"n\": 1,\n \"text_source\": \"ocr\"\n }\n]\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl -s -X POST http://localhost:3030/raw_sql \\\n -H \"Content-Type: application/json\" \\\n -d '{\"query\": \"SELECT COUNT(*) as ocr_rows FROM ocr_text LIMIT 1\"}' \\\n | python3 -m json.tool\n[\n {\n \"ocr_rows\": 2752\n }\n]\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -json ~/.screenpipe/db.sqlite SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20\nzsh: no matches found: COUNT(*)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10\nError: in prepare, incomplete input\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -json ~/.screenpipe/db.sqlite \"SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20;\"\n[{\"app_name\":\"Boosteroid\",\"n\":1301},\n{\"app_name\":\"iTerm2\",\"n\":581},\n{\"app_name\":\"Firefox\",\"n\":338},\n{\"app_name\":\"Claude\",\"n\":173},\n{\"app_name\":\"Code\",\"n\":35},\n{\"app_name\":\"Dia\",\"n\":31},\n{\"app_name\":\"Alfred\",\"n\":24},\n{\"app_name\":\"Safari\",\"n\":20},\n{\"app_name\":\"Finder\",\"n\":19},\n{\"app_name\":\"QuickTime Player\",\"n\":16},\n{\"app_name\":\"UserNotificationCenter\",\"n\":4},\n{\"app_name\":\"Activity Monitor\",\"n\":4},\n{\"app_name\":\"NetAuthAgent\",\"n\":3},\n{\"app_name\":\"Control Centre\",\"n\":3},\n{\"app_name\":\"Slack\",\"n\":2},\n{\"app_name\":\"Raycast\",\"n\":2},\n{\"app_name\":\"System Settings\",\"n\":1},\n{\"app_name\":\"Preview\",\"n\":1}]\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite \"SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10;\"\ntimestamp app_name window_name\n-------------------------------- -------- -----------\n2026-04-12T13:33:14.649009+00:00 iTerm2 -zsh \n2026-04-12T13:33:13.963922+00:00 \n2026-04-12T13:33:13.415261+00:00 \n2026-04-12T13:33:12.521412+00:00 iTerm2 -zsh \n2026-04-12T13:33:09.128387+00:00 iTerm2 -zsh \n2026-04-12T13:33:06.137541+00:00 iTerm2 -zsh \n2026-04-12T13:33:05.165254+00:00 Claude Claude \n2026-04-12T13:32:50.425455+00:00 \n2026-04-12T13:32:49.108195+00:00 Claude Claude \n2026-04-12T13:32:45.339017+00:00 iTerm2 -zsh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-status\n{\n \"status\": \"healthy\",\n \"frame_status\": \"ok\",\n \"audio_status\": \"disabled\",\n \"last_frame\": \"2026-04-13T15:11:31+03:00\",\n \"uptime\": 19271.640087958,\n \"fps\": 0.11841234008027791,\n \"frames\": 2282\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n256M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n418M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n196K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 32K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe \n675M\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls\nconfig.json\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-wal\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-09.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-12.0.log\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tdb.sqlite-shm\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpipes\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-11.0.log\u0000\u0000\u0000\u0000\tscreenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 858888\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .\ndrwx------+ 91 lukas staff 2912 13 Apr 17:09 ..\n-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 1038272 13 Apr 17:10 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 29277 13 Apr 17:10 screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpending-transcriptions\u0000\tscreenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ll\ntotal 0\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 .\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 ..\ndrwxr-xr-x 7 lukas staff 224 13 Apr 15:11 data\ndrwxr-xr-x 2 lukas staff 64 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 24\ndrwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..\n-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 208 lukas staff 6656 13 Apr 17:11 2026-04-13\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh .\n233M\u0000\u0000\u0000\t.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /.\ndu: /./usr/sbin/authserver: Permission denied\ndu: /./Library/Application Support/Apple/ParentalControls/Users: Permission denied\ndu: /./Library/Application Support/Apple/AssetCache/Data: Permission denied\ndu: /./Library/Application Support/ApplePushService: Permission denied\ndu: /./Library/Application Support/org.pqrs/tmp/rootonly: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied\ndu: /./Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied\ndu: /./Library/Application Support/com.apple.TCC: Operation not permitted\ndu: /./Library/Application Support/Iru/Quarantine: Permission denied\ndu: /./Library/Application Support/Iru/Cached Items: Permission denied\ndu: /./Library/Trial: Operation not permitted\n^C\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /*\n 14G\u0000\u0000\u0000\t/Applications\ndu: /Library/Application Support/Apple/ParentalControls/Users: Permission denied\ndu: /Library/Application Support/Apple/AssetCache/Data: Permission denied\ndu: /Library/Application Support/ApplePushService: Permission denied\ndu: /Library/Application Support/org.pqrs/tmp/rootonly: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied\ndu: /Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied\ndu: /Library/Application Support/com.apple.TCC: Operation not permitted\ndu: /Library/Application Support/Iru/Quarantine: Permission denied\ndu: /Library/Application Support/Iru/Cached Items: Permission denied\ndu: /Library/Trial: Operation not permitted\ndu: /Library/Tailscale/files: Permission denied\ndu: /Library/Caches/com.apple.amsengagementd.classicdatavault: Operation not permitted\ndu: /Library/Caches/com.apple.aneuserd: Operation not permitted\ndu: /Library/Caches/com.apple.iconservices.store: Permission denied\ndu: /Library/Caches/com.apple.aned: Operation not permitted\n5.6G\u0000\u0000\u0000\t/Library\n^[[Adu: /System/Library/DirectoryServices/DefaultLocalDB/Default: Permission denied\n^C\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh * \n 39M\u0000\u0000\u0000\t2026-04-09\n 62M\u0000\u0000\u0000\t2026-04-11\n 57M\u0000\u0000\u0000\t2026-04-12\n 73M\u0000\u0000\u0000\t2026-04-13\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 871176\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .\ndrwx------+ 91 lukas staff 2912 13 Apr 17:09 ..\n-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 6575552 13 Apr 17:12 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 29974 13 Apr 17:11 screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite\ncp: /Volumes/screenpipe/db.sqlite: No such file or directory\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite\ncp: /Volumes/screenpipe/db.sqlite: Operation not permitted\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite\nPassword:\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 13 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \ncp: /Volumes/screenpipe/db.sqlite: Operation not permitted\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite\nPassword:\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 14 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \nsudo: a password is required\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls\ndata\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tpending-transcriptions\u0000\tscreenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cp ~/.screenpipe/data/* /Volumes/Test/screenpipe \ncp: /Users/lukas/.screenpipe/data/data is a directory (not copied).\ncp: /Users/lukas/.screenpipe/data/pending-transcriptions is a directory (not copied).\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 24\ndrwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..\n-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 156 lukas staff 4992 13 Apr 17:22 2026-04-13\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp ~/.screenpipe/data/data/2026-04-13 /Volumes/Test/screenpipe/data/2026-04-13\ncp: /Users/lukas/.screenpipe/data/data/2026-04-13 is a directory (not copied).\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-09 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-11 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd .. \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll\ntotal 1022008\ndrwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .\ndrwx------+ 91 lukas staff 2912 13 Apr 17:09 ..\n-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 512241664 13 Apr 19:35 db.sqlite\n-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 9603752 13 Apr 19:38 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 59116 13 Apr 19:37 screenpipe.2026-04-13.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop\nscreenpipe stopped\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status\n{\n \"status\": \"healthy\",\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 378 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n \"frame_status\": \"ok\",\n \"audio_status\": \"disabled\",\n \"last_frame\": \"2026-04-14T09:44:01+03:00\",\n \"uptime\": 1243.255541917,\n \"fps\": 0.254975738544637,\n \"frames\": 317\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status\n{\n \"status\": \"healthy\",\n \"frame_status\": \"ok\",\n \"audio_status\": \"disabled\",\n \"last_frame\": \"2026-04-14T10:12:37+03:00\",\n \"uptime\": 2959.307842208,\n \"fps\": 0.3139247586039762,\n \"frames\": 929\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n887M\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n308M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n561M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 18M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n 32K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n392M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n660M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 15M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n 44K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe.2026-04-13.0.log \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/* \n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n477M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n770M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n8.0M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n 60K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n1.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n1.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n1.3G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe\n1.5G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n558M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n976M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n260K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n617M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n1.0G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 16M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n1.6G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-93-249:~ (nc)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Unable to access screenpipe activity data (claude)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-8526551613901623435
|
5612248142254173907
|
visual_change
|
accessibility
|
NULL
|
"n": 1,
"text_source": "n": 1,
"text_source": "ocr"
},
{
"app_name": "Preview",
"n": 1,
"text_source": "hybrid"
},
{
"app_name": "QuickTime Player",
"n": 1,
"text_source": "accessibility"
},
{
"app_name": "System Settings",
"n": 1,
"text_source": "accessibility"
},
{
"app_name": "iTerm2",
"n": 1,
"text_source": "hybrid"
},
{
"app_name": "iTerm2",
"n": 1,
"text_source": "ocr"
}
]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl -s -X POST [URL_WITH_CREDENTIALS] ~ $ sqlite3 -json ~/.screenpipe/db.sqlite SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20
zsh: no matches found: COUNT(*)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10
Error: in prepare, incomplete input
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -json ~/.screenpipe/db.sqlite "SELECT app_name, COUNT(*) as n FROM frames WHERE app_name != '' GROUP BY app_name ORDER BY n DESC LIMIT 20;"
[{"app_name":"Boosteroid","n":1301},
{"app_name":"iTerm2","n":581},
{"app_name":"Firefox","n":338},
{"app_name":"Claude","n":173},
{"app_name":"Code","n":35},
{"app_name":"Dia","n":31},
{"app_name":"Alfred","n":24},
{"app_name":"Safari","n":20},
{"app_name":"Finder","n":19},
{"app_name":"QuickTime Player","n":16},
{"app_name":"UserNotificationCenter","n":4},
{"app_name":"Activity Monitor","n":4},
{"app_name":"NetAuthAgent","n":3},
{"app_name":"Control Centre","n":3},
{"app_name":"Slack","n":2},
{"app_name":"Raycast","n":2},
{"app_name":"System Settings","n":1},
{"app_name":"Preview","n":1}]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 -column -header ~/.screenpipe/db.sqlite "SELECT timestamp, app_name, window_name FROM frames ORDER BY timestamp DESC LIMIT 10;"
timestamp app_name window_name
-------------------------------- -------- -----------
2026-04-12T13:33:14.649009+00:00 iTerm2 -zsh
2026-04-12T13:33:13.963922+00:00
2026-04-12T13:33:13.415261+00:00
2026-04-12T13:33:12.521412+00:00 iTerm2 -zsh
2026-04-12T13:33:09.128387+00:00 iTerm2 -zsh
2026-04-12T13:33:06.137541+00:00 iTerm2 -zsh
2026-04-12T13:33:05.165254+00:00 Claude Claude
2026-04-12T13:32:50.425455+00:00
2026-04-12T13:32:49.108195+00:00 Claude Claude
2026-04-12T13:32:45.339017+00:00 iTerm2 -zsh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-status
{
"status": "healthy",
"frame_status": "ok",
"audio_status": "disabled",
"last_frame": "2026-04-13T15:11:31+03:00",
"uptime": 19271.640087958,
"fps": 0.11841234008027791,
"frames": 2282
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
256M /Users/lukas/.screenpipe/data
418M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
196K /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
32K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ du -sh ~/.screenpipe
675M /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite db.sqlite-wal screenpipe.2026-04-09.0.log screenpipe.2026-04-12.0.log
data db.sqlite-shm pipes screenpipe.2026-04-11.0.log screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 858888
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .
drwx------+ 91 lukas staff 2912 13 Apr 17:09 ..
-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite
-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm
-rw-r--r-- 1 lukas staff 1038272 13 Apr 17:10 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 29277 13 Apr 17:10 screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls
data pending-transcriptions screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ll
total 0
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 .
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 ..
drwxr-xr-x 7 lukas staff 224 13 Apr 15:11 data
drwxr-xr-x 2 lukas staff 64 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 24
drwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..
-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 208 lukas staff 6656 13 Apr 17:11 2026-04-13
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh .
233M .
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /.
du: /./usr/sbin/authserver: Permission denied
du: /./Library/Application Support/Apple/ParentalControls/Users: Permission denied
du: /./Library/Application Support/Apple/AssetCache/Data: Permission denied
du: /./Library/Application Support/ApplePushService: Permission denied
du: /./Library/Application Support/org.pqrs/tmp/rootonly: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied
du: /./Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied
du: /./Library/Application Support/com.apple.TCC: Operation not permitted
du: /./Library/Application Support/Iru/Quarantine: Permission denied
du: /./Library/Application Support/Iru/Cached Items: Permission denied
du: /./Library/Trial: Operation not permitted
^C
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh /*
14G /Applications
du: /Library/Application Support/Apple/ParentalControls/Users: Permission denied
du: /Library/Application Support/Apple/AssetCache/Data: Permission denied
du: /Library/Application Support/ApplePushService: Permission denied
du: /Library/Application Support/org.pqrs/tmp/rootonly: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/141.0.7340.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/142.0.7416.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/crx_cache: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/148.0.7730.0/Crashpad: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/143.0.7482.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/140.0.7273.0: Permission denied
du: /Library/Application Support/Google/GoogleUpdater/144.0.7547.0: Permission denied
du: /Library/Application Support/com.apple.TCC: Operation not permitted
du: /Library/Application Support/Iru/Quarantine: Permission denied
du: /Library/Application Support/Iru/Cached Items: Permission denied
du: /Library/Trial: Operation not permitted
du: /Library/Tailscale/files: Permission denied
du: /Library/Caches/com.apple.amsengagementd.classicdatavault: Operation not permitted
du: /Library/Caches/com.apple.aneuserd: Operation not permitted
du: /Library/Caches/com.apple.iconservices.store: Permission denied
du: /Library/Caches/com.apple.aned: Operation not permitted
5.6G /Library
^[[Adu: /System/Library/DirectoryServices/DefaultLocalDB/Default: Permission denied
^C
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ du -sh *
39M 2026-04-09
62M 2026-04-11
57M 2026-04-12
73M 2026-04-13
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 871176
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .
drwx------+ 91 lukas staff 2912 13 Apr 17:09 ..
-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 438190080 13 Apr 17:10 db.sqlite
-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm
-rw-r--r-- 1 lukas staff 6575552 13 Apr 17:12 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 29974 13 Apr 17:11 screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite
cp: /Volumes/screenpipe/db.sqlite: No such file or directory
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite
cp: /Volumes/screenpipe/db.sqlite: Operation not permitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/screenpipe/db.sqlite
Password:
[PASSWORD] PICO 5.09 New Buffer
[ Read 13 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
cp: /Volumes/screenpipe/db.sqlite: Operation not permitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sudo cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite
Password:
[PASSWORD] PICO 5.09 New Buffer
[ Read 14 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
sudo: a password is required
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp ~/.screenpipe/db.sqlite /Volumes/Test/screenpipe/db.sqlite
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ ls
data pending-transcriptions screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cp ~/.screenpipe/data/* /Volumes/Test/screenpipe
cp: /Users/lukas/.screenpipe/data/data is a directory (not copied).
cp: /Users/lukas/.screenpipe/data/pending-transcriptions is a directory (not copied).
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 24
drwxr-xr-x 7 lukas staff 224 13 Apr 15:11 .
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 ..
-rw-r--r--@ 1 lukas staff 8196 9 Apr 20:43 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 156 lukas staff 4992 13 Apr 17:22 2026-04-13
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp ~/.screenpipe/data/data/2026-04-13 /Volumes/Test/screenpipe/data/2026-04-13
cp: /Users/lukas/.screenpipe/data/data/2026-04-13 is a directory (not copied).
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-09 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-11 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cp -r ~/.screenpipe/data/data/2026-04-12 /Volumes/Test/screenpipe/data/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 1022008
drwxr-xr-x 12 lukas staff 384 13 Apr 00:00 .
drwx------+ 91 lukas staff 2912 13 Apr 17:09 ..
-rw-r--r-- 1 lukas staff 270 11 Apr 18:59 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 512241664 13 Apr 19:35 db.sqlite
-rw-r--r-- 1 lukas staff 65536 12 Apr 12:11 db.sqlite-shm
-rw-r--r-- 1 lukas staff 9603752 13 Apr 19:38 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 59116 13 Apr 19:37 screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano config.json
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-stop
screenpipe stopped
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
{
"status": "healthy",
UW PICO 5.09 New Buffer
[ Read 378 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
"frame_status": "ok",
"audio_status": "disabled",
"last_frame": "2026-04-14T09:44:01+03:00",
"uptime": 1243.255541917,
"fps": 0.254975738544637,
"frames": 317
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
{
"status": "healthy",
"frame_status": "ok",
"audio_status": "disabled",
"last_frame": "2026-04-14T10:12:37+03:00",
"uptime": 2959.307842208,
"fps": 0.[CREDIT_CARD],
"frames": 929
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
887M /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
308M /Users/lukas/.screenpipe/data
561M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
18M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
32K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
392M /Users/lukas/.screenpipe/data
660M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
15M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
44K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe.2026-04-13.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
477M /Users/lukas/.screenpipe/data
770M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
8.0M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
60K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.2G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.2G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.3G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.5G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
558M /Users/lukas/.screenpipe/data
976M /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
260K /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
617M /Users/lukas/.screenpipe/data
1.0G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
24K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
1.6G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-93-249:~ (nc)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Unable to access screenpipe activity data (claude)
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
4580
|
86
|
74
|
2026-04-13T12:27:31.369044+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-13/1776 /Users/lukas/.screenpipe/data/data/2026-04-13/1776083251369_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowDOC iTerm2ShellEditViewSessionScriptsProfilesWindowDOCKERO ₴1DEV (-zsh)Claude (~5 min)- Used Claude,likelyrelatedO 882APP (-zsh)• *3Help* Unable to access screenpipe activity data-zsh• 84-zsh• 25>0 l4l-zsh87% K428Mon 13 Apr 15:27:31181₴86-zsh®0 87* Unable to access s...screenpipe work (querying the screenpipe search API)TL;DR: Mostly a devdayfocusedon building something with screenpipe data (a reporting UI), some light work task-checking on Jira/email, and evening readingon Slovak news.what did I dotodayso farThe screenpipe MCPserver has disconnected, so I can't query your activity right now.You'd need to reconnect it to get today's summary.You can try restartingthe screenpipe MCP server and then ask again.give me summary forlast 48 hoursThe screenpipe MCPserver is still disconnected - I don't have access to those tools. You'llneed to reconnect it first.If screenpipe is running locally, you can try restarting the MCP server or check its status with ! screenpipe or however you normally manage it.it is healhty and running, chekc againThe tools aren't showing up in my session even though screenpipe is running. This likely means the MCP connection needs to be re-established on the Claude Code side.Try running ! claude mep list to check the MCP server status, or restart Claude Code to reconnect the screenpipe MCP server.claude mep listBash(claude mcp list)Running...sash commandclaude mcp listRun shell commandhis command requires approvalo you want to proceed?• 1.Yes2.Yes, and don't ask again for: claude mcp:*3. Noisc to cancel • Tab to amend • ctrl+e to explain...
|
NULL
|
-8526352729811127866
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowDOC iTerm2ShellEditViewSessionScriptsProfilesWindowDOCKERO ₴1DEV (-zsh)Claude (~5 min)- Used Claude,likelyrelatedO 882APP (-zsh)• *3Help* Unable to access screenpipe activity data-zsh• 84-zsh• 25>0 l4l-zsh87% K428Mon 13 Apr 15:27:31181₴86-zsh®0 87* Unable to access s...screenpipe work (querying the screenpipe search API)TL;DR: Mostly a devdayfocusedon building something with screenpipe data (a reporting UI), some light work task-checking on Jira/email, and evening readingon Slovak news.what did I dotodayso farThe screenpipe MCPserver has disconnected, so I can't query your activity right now.You'd need to reconnect it to get today's summary.You can try restartingthe screenpipe MCP server and then ask again.give me summary forlast 48 hoursThe screenpipe MCPserver is still disconnected - I don't have access to those tools. You'llneed to reconnect it first.If screenpipe is running locally, you can try restarting the MCP server or check its status with ! screenpipe or however you normally manage it.it is healhty and running, chekc againThe tools aren't showing up in my session even though screenpipe is running. This likely means the MCP connection needs to be re-established on the Claude Code side.Try running ! claude mep list to check the MCP server status, or restart Claude Code to reconnect the screenpipe MCP server.claude mep listBash(claude mcp list)Running...sash commandclaude mcp listRun shell commandhis command requires approvalo you want to proceed?• 1.Yes2.Yes, and don't ask again for: claude mcp:*3. Noisc to cancel • Tab to amend • ctrl+e to explain...
|
NULL
|