checkoff 0.233.0 → 0.238.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/rbi/checkoff.rbi CHANGED
@@ -57,7 +57,7 @@ module Overcommit
57
57
  end
58
58
 
59
59
  module Checkoff
60
- VERSION = '0.233.0'
60
+ VERSION = '0.238.0'
61
61
 
62
62
  class Attachments
63
63
  include Logging
@@ -1885,6 +1885,11 @@ module Checkoff
1885
1885
  def convert; end
1886
1886
  end
1887
1887
 
1888
+ class AllTagsIds < SimpleParam
1889
+ sig { returns(T.untyped) }
1890
+ def convert; end
1891
+ end
1892
+
1888
1893
  class Sort < SimpleParam
1889
1894
  sig { returns(T.untyped) }
1890
1895
  def convert; end
@@ -1895,10 +1900,20 @@ module Checkoff
1895
1900
  def convert; end
1896
1901
  end
1897
1902
 
1903
+ class Approval < SimpleParam
1904
+ sig { returns(T.untyped) }
1905
+ def convert; end
1906
+ end
1907
+
1898
1908
  class SearchedType < SimpleParam
1899
1909
  sig { returns(T.untyped) }
1900
1910
  def convert; end
1901
1911
  end
1912
+
1913
+ class LocatedIn < SimpleParam
1914
+ sig { returns(T.untyped) }
1915
+ def convert; end
1916
+ end
1902
1917
  end
1903
1918
 
1904
1919
  class SimpleParamConverter
@@ -1909,10 +1924,13 @@ module Checkoff
1909
1924
  'completion' => SimpleParam::Completion,
1910
1925
  'not_tags.ids' => SimpleParam::NotTagsIds,
1911
1926
  'any_tags.ids' => SimpleParam::AnyTagsIds,
1927
+ 'all_tags.ids' => SimpleParam::AllTagsIds,
1912
1928
  'subtask' => SimpleParam::Subtask,
1913
1929
  'sort' => SimpleParam::Sort,
1914
1930
  'milestone' => SimpleParam::Milestone,
1931
+ 'approval' => SimpleParam::Approval,
1915
1932
  'searched_type' => SimpleParam::SearchedType,
1933
+ 'locatedIn' => SimpleParam::LocatedIn,
1916
1934
  }.freeze
1917
1935
 
1918
1936
  sig { params(simple_url_params: T.untyped).void }
@@ -2397,7 +2415,7 @@ end
2397
2415
  # typed: ignore
2398
2416
  # Command-line and gem client for Asana (unofficial)
2399
2417
  module Checkoff
2400
- VERSION = T.let('0.233.0', T.untyped)
2418
+ VERSION = T.let('0.238.0', T.untyped)
2401
2419
 
2402
2420
  # Move tasks from one place to another
2403
2421
  class MvSubcommand
@@ -2563,12 +2581,16 @@ module Checkoff
2563
2581
  sig { params(project_name: String).returns(T.any(String, Symbol)) }
2564
2582
  def validate_and_assign_project_name(project_name); end
2565
2583
 
2584
+ # @sg-ignore
2585
+ #
2566
2586
  # _@param_ `workspace`
2567
2587
  #
2568
2588
  # _@param_ `project`
2569
2589
  sig { params(workspace: T.any(String, Symbol), project: T.any(String, Symbol)).returns(String) }
2570
2590
  def run_on_project(workspace, project); end
2571
2591
 
2592
+ # @sg-ignore
2593
+ #
2572
2594
  # _@param_ `workspace`
2573
2595
  #
2574
2596
  # _@param_ `project`
@@ -2577,6 +2599,8 @@ module Checkoff
2577
2599
  sig { params(workspace: T.any(String, Symbol), project: T.any(String, Symbol), section: T.nilable(T.any(String, Symbol))).returns(String) }
2578
2600
  def run_on_section(workspace, project, section); end
2579
2601
 
2602
+ # @sg-ignore
2603
+ #
2580
2604
  # _@param_ `workspace`
2581
2605
  #
2582
2606
  # _@param_ `project`
@@ -4164,8 +4188,6 @@ module Checkoff
4164
4188
  def portfolio_or_raise(workspace_name, portfolio_name); end
4165
4189
 
4166
4190
  # sord warn - Asana::Resources::Portfolio wasn't able to be resolved to a constant in this project
4167
- # @sg-ignore
4168
- #
4169
4191
  # _@param_ `workspace_name`
4170
4192
  #
4171
4193
  # _@param_ `portfolio_name`
@@ -5393,6 +5415,12 @@ module Checkoff
5393
5415
  def convert; end
5394
5416
  end
5395
5417
 
5418
+ # Handle 'all_tags.ids' search url param
5419
+ class AllTagsIds < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
5420
+ sig { returns(T::Array[String]) }
5421
+ def convert; end
5422
+ end
5423
+
5396
5424
  # Handle 'sort' search url param
5397
5425
  class Sort < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
5398
5426
  sig { returns(T::Array[String]) }
@@ -5410,6 +5438,18 @@ module Checkoff
5410
5438
  sig { returns(T::Array[String]) }
5411
5439
  def convert; end
5412
5440
  end
5441
+
5442
+ # Handle 'locatedIn' search url param
5443
+ class LocatedIn < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
5444
+ sig { returns(T::Array[String]) }
5445
+ def convert; end
5446
+ end
5447
+
5448
+ # Handle 'approval' search url param
5449
+ class Approval < Checkoff::Internal::SearchUrl::SimpleParam::SimpleParam
5450
+ sig { returns(T::Array[String]) }
5451
+ def convert; end
5452
+ end
5413
5453
  end
5414
5454
 
5415
5455
  # Convert simple parameters - ones where the param name itself
@@ -5422,10 +5462,13 @@ module Checkoff
5422
5462
  'completion' => SimpleParam::Completion,
5423
5463
  'not_tags.ids' => SimpleParam::NotTagsIds,
5424
5464
  'any_tags.ids' => SimpleParam::AnyTagsIds,
5465
+ 'all_tags.ids' => SimpleParam::AllTagsIds,
5425
5466
  'subtask' => SimpleParam::Subtask,
5426
5467
  'sort' => SimpleParam::Sort,
5427
5468
  'milestone' => SimpleParam::Milestone,
5469
+ 'approval' => SimpleParam::Approval,
5428
5470
  'searched_type' => SimpleParam::SearchedType,
5471
+ 'locatedIn' => SimpleParam::LocatedIn,
5429
5472
  }.freeze, T.untyped)
5430
5473
 
5431
5474
  # _@param_ `simple_url_params` — the simple params
@@ -6734,3 +6777,2351 @@ module Asana
6734
6777
  end
6735
6778
  end
6736
6779
  end
6780
+
6781
+ # :nocov:
6782
+ # Module which adds helpers to run tests as if it was a specific date.
6783
+ module TestDate
6784
+ TIME_BY_PERIOD = T.let({
6785
+ two_am: '02:00:20',
6786
+ morning_during_breakfast: '07:30:20',
6787
+ morning: '07:33:20',
6788
+ eight_thirty_am: '8:30:00',
6789
+ ten_am: '10:00:20',
6790
+ mid_morning: '10:33:20',
6791
+ eleven_thirty_am: '11:30:00',
6792
+ afternoon: '14:33:20',
6793
+ three_forty_five_pm: '15:45:20',
6794
+ four_fifteen_pm: '16:15:20',
6795
+ four_forty_five_pm: '16:45:20',
6796
+ five_forty_five_pm: '17:45:20',
6797
+ six_fifteen_pm: '18:15:00',
6798
+ six_forty_five_pm: '18:45:00',
6799
+ night: '19:00:20',
6800
+ evening: '19:01:20',
6801
+ late_evening: '21:33:20',
6802
+ late_late_evening: '22:33:20',
6803
+ }.freeze, T.untyped)
6804
+
6805
+ sig { returns(T.untyped) }
6806
+ def mock_date; end
6807
+
6808
+ sig { params(zone: T.untyped).returns(T.untyped) }
6809
+ def time_by_period(zone); end
6810
+
6811
+ sig { params(zone: T.untyped).returns(T.untyped) }
6812
+ def mock_now_with_zone(zone); end
6813
+
6814
+ sig { returns(T.untyped) }
6815
+ def mock_now; end
6816
+
6817
+ sig { returns(T.untyped) }
6818
+ attr_accessor :time_period
6819
+
6820
+ sig { returns(T.untyped) }
6821
+ attr_accessor :mock_date_str
6822
+ end
6823
+
6824
+ class TestTags < ClassTest
6825
+ extend Forwardable
6826
+
6827
+ sig { returns(T.untyped) }
6828
+ def test_tag_or_raise_raises; end
6829
+
6830
+ sig { returns(T.untyped) }
6831
+ def test_tag_or_raise; end
6832
+
6833
+ sig { returns(T.untyped) }
6834
+ def expect_workspace_pulled; end
6835
+
6836
+ sig { returns(T.untyped) }
6837
+ def allow_tags_named; end
6838
+
6839
+ sig { params(tag_arr: T.untyped).returns(T.untyped) }
6840
+ def expect_tags_pulled(tag_arr); end
6841
+
6842
+ sig { returns(T.untyped) }
6843
+ def test_tag; end
6844
+
6845
+ sig { params(only_uncompleted: T.untyped).returns(T.untyped) }
6846
+ def mock_tasks(only_uncompleted: true); end
6847
+
6848
+ sig { params(only_uncompleted: T.untyped).returns(T.untyped) }
6849
+ def build_task_params(only_uncompleted); end
6850
+
6851
+ sig { returns(T.untyped) }
6852
+ def build_response_body; end
6853
+
6854
+ sig { params(task_endpoint: T.untyped, task_params: T.untyped, merged_task_options: T.untyped).returns(T.untyped) }
6855
+ def setup_client_expects(task_endpoint, task_params, merged_task_options); end
6856
+
6857
+ sig { params(response_body: T.untyped).returns(T.untyped) }
6858
+ def setup_response_expects(response_body); end
6859
+
6860
+ sig { returns(T.untyped) }
6861
+ def setup_collection_expects; end
6862
+
6863
+ sig { returns(T.untyped) }
6864
+ def generate_task_options; end
6865
+
6866
+ sig { returns(T.untyped) }
6867
+ def generate_merged_task_options; end
6868
+
6869
+ sig { returns(T.untyped) }
6870
+ def generate_task_endpoint; end
6871
+
6872
+ sig { returns(T.untyped) }
6873
+ def projects; end
6874
+
6875
+ sig { returns(T.untyped) }
6876
+ def test_tasks; end
6877
+
6878
+ sig { returns(T.untyped) }
6879
+ def test_tasks_with_completed; end
6880
+
6881
+ sig { returns(T.untyped) }
6882
+ def respond_like_instance_of; end
6883
+
6884
+ sig { returns(T.untyped) }
6885
+ def respond_like; end
6886
+
6887
+ sig { returns(T.untyped) }
6888
+ def class_under_test; end
6889
+ end
6890
+
6891
+ # Unit test Asana-related classes
6892
+ class BaseAsana < ClassTest
6893
+ include TestDate
6894
+
6895
+ sig { params(extra_fields: T.untyped).returns(T.untyped) }
6896
+ def task_options(extra_fields: []); end
6897
+
6898
+ sig { returns(T.untyped) }
6899
+ def task_options_with_completed; end
6900
+
6901
+ sig { returns(T.untyped) }
6902
+ def mock_date; end
6903
+
6904
+ sig { params(zone: T.untyped).returns(T.untyped) }
6905
+ def time_by_period(zone); end
6906
+
6907
+ sig { params(zone: T.untyped).returns(T.untyped) }
6908
+ def mock_now_with_zone(zone); end
6909
+
6910
+ sig { returns(T.untyped) }
6911
+ def mock_now; end
6912
+ end
6913
+
6914
+ # Test a class that uses initializer mocks.
6915
+ class ClassTest < Minitest::Test
6916
+ # Implement 'class_under_test' returning the class name to be
6917
+ # initialized with keyword mocks
6918
+ #
6919
+ # obj = get_test_object do
6920
+ # # Go ahead and use concrete value for constructor arg
6921
+ # @mocks[:some_constructor_arg] = 123
6922
+ # end
6923
+ sig { params(clazz: T.untyped, twiddle_mocks: T.untyped).returns(T.untyped) }
6924
+ def get_test_object(clazz = class_under_test, &twiddle_mocks); end
6925
+
6926
+ # default to telling get_initailizer_mocks not to validate this.
6927
+ # things going forward using create-test.sh should default to
6928
+ # setting this to non-nil values, which are validated and require
6929
+ # setting a full hash of values
6930
+ sig { returns(T.untyped) }
6931
+ def respond_like_instance_of; end
6932
+
6933
+ sig { returns(T.untyped) }
6934
+ def respond_like; end
6935
+
6936
+ sig { params(clazz: T.untyped).returns(T.untyped) }
6937
+ def create_object(clazz = class_under_test); end
6938
+ end
6939
+
6940
+ # Test the Checkoff::Tasks class
6941
+ class TestTasks < BaseAsana
6942
+ extend Forwardable
6943
+ TIME_BY_PERIOD = T.let({
6944
+ two_am: '02:00:20',
6945
+ morning_during_breakfast: '07:30:20',
6946
+ morning: '07:33:20',
6947
+ eight_thirty_am: '8:30:00',
6948
+ ten_am: '10:00:20',
6949
+ mid_morning: '10:33:20',
6950
+ eleven_thirty_am: '11:30:00',
6951
+ afternoon: '14:33:20',
6952
+ three_forty_five_pm: '15:45:20',
6953
+ four_fifteen_pm: '16:15:20',
6954
+ four_forty_five_pm: '16:45:20',
6955
+ five_forty_five_pm: '17:45:20',
6956
+ six_fifteen_pm: '18:15:00',
6957
+ six_forty_five_pm: '18:45:00',
6958
+ night: '19:00:20',
6959
+ evening: '19:01:20',
6960
+ late_evening: '21:33:20',
6961
+ late_late_evening: '22:33:20',
6962
+ }.freeze, T.untyped)
6963
+
6964
+ sig { returns(T.untyped) }
6965
+ def expect_now_pulled; end
6966
+
6967
+ sig { params(less_than_now: T.untyped).returns(T.untyped) }
6968
+ def expect_due_on_parsed(less_than_now:); end
6969
+
6970
+ sig { params(less_than_now: T.untyped).returns(T.untyped) }
6971
+ def expect_start_on_parsed(less_than_now:); end
6972
+
6973
+ sig { params(less_than_now: T.untyped).returns(T.untyped) }
6974
+ def expect_start_at_parsed(less_than_now:); end
6975
+
6976
+ sig { returns(T.untyped) }
6977
+ def mock_task_ready_false_due_in_future_on_date; end
6978
+
6979
+ sig { returns(T.untyped) }
6980
+ def test_task_ready_false_due_in_future_on_date; end
6981
+
6982
+ sig { returns(T.untyped) }
6983
+ def mock_task_ready_true_start_in_past; end
6984
+
6985
+ sig { returns(T.untyped) }
6986
+ def test_task_ready_true_start_in_past; end
6987
+
6988
+ sig { returns(T.untyped) }
6989
+ def mock_task_ready_true_start_in_past_time; end
6990
+
6991
+ sig { returns(T.untyped) }
6992
+ def test_task_ready_true_start_in_past_time; end
6993
+
6994
+ sig { params(less_than_now: T.untyped).returns(T.untyped) }
6995
+ def expect_due_at_parsed(less_than_now:); end
6996
+
6997
+ sig { returns(T.untyped) }
6998
+ def mock_task_ready_false_due_in_future_at_time; end
6999
+
7000
+ sig { returns(T.untyped) }
7001
+ def test_task_ready_false_due_in_future_at_time; end
7002
+
7003
+ sig { params(task: T.untyped, dependency_gids: T.untyped).returns(T.untyped) }
7004
+ def expect_dependency_gids_pulled(task, dependency_gids); end
7005
+
7006
+ sig { returns(T.untyped) }
7007
+ def test_task_ready_true_no_due_anything; end
7008
+
7009
+ sig { returns(T.untyped) }
7010
+ def expect_asana_tasks_client_pulled; end
7011
+
7012
+ sig { returns(T.untyped) }
7013
+ def default_fields; end
7014
+
7015
+ sig { params(extra_fields: T.untyped).returns(T.untyped) }
7016
+ def fields_including(extra_fields); end
7017
+
7018
+ sig { params(dependency_gid: T.untyped, dependency_full_task: T.untyped, completed: T.untyped).returns(T.untyped) }
7019
+ def expect_dependency_completion_pulled(dependency_gid, dependency_full_task, completed); end
7020
+
7021
+ sig { returns(T.untyped) }
7022
+ def mock_task_ready_false_dependency; end
7023
+
7024
+ sig { returns(T.untyped) }
7025
+ def test_task_ready_false_dependency; end
7026
+
7027
+ sig { returns(T.untyped) }
7028
+ def test_task_ready_false_dependency_cached; end
7029
+
7030
+ sig do
7031
+ params(
7032
+ start_on: T.untyped,
7033
+ start_at: T.untyped,
7034
+ due_on: T.untyped,
7035
+ due_at: T.untyped
7036
+ ).returns(T.untyped)
7037
+ end
7038
+ def allow_task_due(start_on: nil, start_at: nil, due_on: nil, due_at: nil); end
7039
+
7040
+ sig { params(task: T.untyped, start_at: T.untyped).returns(T.untyped) }
7041
+ def allow_start_at_pulled(task, start_at); end
7042
+
7043
+ sig { params(task: T.untyped, start_on: T.untyped).returns(T.untyped) }
7044
+ def allow_start_on_pulled(task, start_on); end
7045
+
7046
+ sig { params(task: T.untyped, due_at: T.untyped).returns(T.untyped) }
7047
+ def allow_due_at_pulled(task, due_at); end
7048
+
7049
+ sig { params(task: T.untyped, due_on: T.untyped).returns(T.untyped) }
7050
+ def allow_due_on_pulled(task, due_on); end
7051
+
7052
+ sig { returns(T.untyped) }
7053
+ def test_url_of_task; end
7054
+
7055
+ sig { returns(T.untyped) }
7056
+ def expect_task_created; end
7057
+
7058
+ sig { returns(T.untyped) }
7059
+ def mock_add_task; end
7060
+
7061
+ sig { returns(T.untyped) }
7062
+ def test_add_task; end
7063
+
7064
+ sig { returns(T.untyped) }
7065
+ def expect_tasks_from_project_pulled; end
7066
+
7067
+ sig { returns(T.untyped) }
7068
+ def expect_project_pulled; end
7069
+
7070
+ sig { params(extra_fields: T.untyped).returns(T.untyped) }
7071
+ def expect_task_by_gid_pulled(extra_fields: []); end
7072
+
7073
+ sig { returns(T.untyped) }
7074
+ def expect_tasks_from_section_pulled; end
7075
+
7076
+ sig { returns(T.untyped) }
7077
+ def projects; end
7078
+
7079
+ sig { returns(T.untyped) }
7080
+ def expect_task_options_pulled; end
7081
+
7082
+ sig { returns(T.untyped) }
7083
+ def mock_task_with_section; end
7084
+
7085
+ sig { returns(T.untyped) }
7086
+ def test_task_with_section; end
7087
+
7088
+ sig { returns(T.untyped) }
7089
+ def mock_task; end
7090
+
7091
+ sig { returns(T.untyped) }
7092
+ def test_task; end
7093
+
7094
+ sig { returns(T.untyped) }
7095
+ def test_in_portfolio_more_than_once; end
7096
+
7097
+ sig { returns(T.untyped) }
7098
+ def test_task_to_h_delegates; end
7099
+
7100
+ sig { returns(T.untyped) }
7101
+ def expect_default_workspace_name_pulled; end
7102
+
7103
+ sig { returns(T.untyped) }
7104
+ def mock_in_portfolio_named_false_no_projects_no_memberships; end
7105
+
7106
+ sig { returns(T.untyped) }
7107
+ def test_in_portfolio_named_false_no_projects_no_memberships; end
7108
+
7109
+ sig { returns(T.untyped) }
7110
+ def mock_in_portfolio_named_false_no_projects_but_memberships; end
7111
+
7112
+ sig { returns(T.untyped) }
7113
+ def test_in_portfolio_named_false_no_projects_but_memberships; end
7114
+
7115
+ sig { returns(T.untyped) }
7116
+ def mock_in_portfolio_named_false_projects_wrong_memberships; end
7117
+
7118
+ sig { returns(T.untyped) }
7119
+ def test_in_portfolio_named_false_projects_wrong_memberships; end
7120
+
7121
+ sig { returns(T.untyped) }
7122
+ def test_date_or_time_field_by_name; end
7123
+
7124
+ sig { returns(T.untyped) }
7125
+ def test_h_to_task; end
7126
+
7127
+ sig { returns(T.untyped) }
7128
+ def test_all_dependent_tasks_empty; end
7129
+
7130
+ sig { returns(T.untyped) }
7131
+ def test_all_dependent_tasks_one; end
7132
+
7133
+ sig { returns(T.untyped) }
7134
+ def test_as_cache_key; end
7135
+
7136
+ sig { returns(T.untyped) }
7137
+ def class_under_test; end
7138
+ end
7139
+
7140
+ # Test the Checkoff::CLI class with mv subcommand
7141
+ class TestCLIMv < Minitest::Test
7142
+ sig { returns(T.untyped) }
7143
+ def expect_workspaces_created; end
7144
+
7145
+ sig { returns(T.untyped) }
7146
+ def expect_config_loaded; end
7147
+
7148
+ sig { returns(T.untyped) }
7149
+ def expect_sections_created; end
7150
+
7151
+ sig { returns(T.untyped) }
7152
+ def expect_tasks_created; end
7153
+
7154
+ sig { returns(T.untyped) }
7155
+ def set_mocks; end
7156
+
7157
+ sig { params(_twiddle_mocks: T.untyped).returns(T.untyped) }
7158
+ def get_test_object(&_twiddle_mocks); end
7159
+
7160
+ sig { returns(T.untyped) }
7161
+ def mock_mv_original_use_case; end
7162
+
7163
+ sig { returns(T.untyped) }
7164
+ def test_mv_original_use_case; end
7165
+ end
7166
+
7167
+ class TestEvents < ClassTest
7168
+ extend Forwardable
7169
+
7170
+ sig { returns(T.untyped) }
7171
+ def mock_filter_asana_events_true; end
7172
+
7173
+ sig { returns(T.untyped) }
7174
+ def test_filter_asana_events_true; end
7175
+
7176
+ sig { returns(T.untyped) }
7177
+ def test_filter_asana_events_false; end
7178
+
7179
+ sig { returns(T.untyped) }
7180
+ def class_under_test; end
7181
+
7182
+ sig { returns(T.untyped) }
7183
+ def respond_like_instance_of; end
7184
+
7185
+ sig { returns(T.untyped) }
7186
+ def respond_like; end
7187
+ end
7188
+
7189
+ # No security (symbold denial of servie) issue; not building
7190
+ # OpenStruct from untrusted user data.
7191
+ #
7192
+ # rubocop:disable Style/OpenStructUse
7193
+ class MyOpenStruct < OpenStruct
7194
+ sig { params(sym: T.untyped).returns(T.untyped) }
7195
+ def delete(sym); end
7196
+
7197
+ sig { params(hash: T.untyped).returns(T.untyped) }
7198
+ def merge!(hash); end
7199
+ end
7200
+
7201
+ module Mocha
7202
+ class Mock
7203
+ sig { params(expected: T.untyped).returns(T::Boolean) }
7204
+ def is_a?(expected); end
7205
+ end
7206
+ end
7207
+
7208
+ class TestTiming < ClassTest
7209
+ extend Forwardable
7210
+
7211
+ sig { returns(T.untyped) }
7212
+ def test_in_period_this_week_date_true; end
7213
+
7214
+ sig { returns(T.untyped) }
7215
+ def test_in_period_this_week_nil_true; end
7216
+
7217
+ sig { returns(T.untyped) }
7218
+ def test_in_period_day_of_week_nil_false; end
7219
+
7220
+ sig { returns(T.untyped) }
7221
+ def test_in_period_day_of_week_saturday_false; end
7222
+
7223
+ sig { returns(T.untyped) }
7224
+ def test_in_period_indefinite_true; end
7225
+
7226
+ sig { returns(T.untyped) }
7227
+ def test_in_period_bad_period; end
7228
+
7229
+ sig { returns(T.untyped) }
7230
+ def test_in_period_bad_compound_period; end
7231
+
7232
+ sig { returns(T.untyped) }
7233
+ def class_under_test; end
7234
+
7235
+ sig { returns(T.untyped) }
7236
+ def respond_like_instance_of; end
7237
+
7238
+ sig { returns(T.untyped) }
7239
+ def respond_like; end
7240
+ end
7241
+
7242
+ class TestClients < ClassTest
7243
+ extend Forwardable
7244
+
7245
+ sig { returns(T.untyped) }
7246
+ def expect_client_created; end
7247
+
7248
+ sig { returns(T.untyped) }
7249
+ def mock_client; end
7250
+
7251
+ sig { returns(T.untyped) }
7252
+ def test_client; end
7253
+
7254
+ sig { returns(T.untyped) }
7255
+ def class_under_test; end
7256
+ end
7257
+
7258
+ # Test the Checkoff::CLI class with the help option
7259
+ class TestCLIHelp < Minitest::Test
7260
+ sig { returns(T.untyped) }
7261
+ def expect_workspaces_created; end
7262
+
7263
+ sig { returns(T.untyped) }
7264
+ def expect_config_loaded; end
7265
+
7266
+ sig { returns(T.untyped) }
7267
+ def expect_sections_created; end
7268
+
7269
+ sig { returns(T.untyped) }
7270
+ def expect_tasks_created; end
7271
+
7272
+ sig { returns(T.untyped) }
7273
+ def set_mocks; end
7274
+
7275
+ sig { params(twiddle_mocks: T.untyped).returns(T.untyped) }
7276
+ def get_test_object(&twiddle_mocks); end
7277
+
7278
+ sig { returns(T.untyped) }
7279
+ def test_run_with_help_arg; end
7280
+ end
7281
+
7282
+ # Test the Checkoff::CLI class with view subcommand
7283
+ class TestCLIView < Minitest::Test
7284
+ sig { returns(T.untyped) }
7285
+ def expected_json_no_section_specified; end
7286
+
7287
+ sig { returns(T.untyped) }
7288
+ def section_name_str; end
7289
+
7290
+ sig { returns(T.untyped) }
7291
+ def project_name; end
7292
+
7293
+ sig { returns(T.untyped) }
7294
+ def task_name; end
7295
+
7296
+ sig { returns(T.untyped) }
7297
+ def expect_tasks_by_section_pulled; end
7298
+
7299
+ sig { returns(T.untyped) }
7300
+ def expect_client_pulled; end
7301
+
7302
+ sig { params(due_on: T.untyped, due_at: T.untyped).returns(T.untyped) }
7303
+ def mock_run_with_no_section_specified_normal_project(due_on:, due_at:); end
7304
+
7305
+ sig { params(task: T.untyped, task_name: T.untyped).returns(T.untyped) }
7306
+ def expect_task_named(task, task_name); end
7307
+
7308
+ sig { params(task: T.untyped, due_on: T.untyped).returns(T.untyped) }
7309
+ def expect_task_due_on(task, due_on); end
7310
+
7311
+ sig { params(task: T.untyped, due_at: T.untyped).returns(T.untyped) }
7312
+ def expect_task_due_at(task, due_at); end
7313
+
7314
+ sig { returns(T.untyped) }
7315
+ def three_tasks; end
7316
+
7317
+ sig do
7318
+ params(
7319
+ task: T.untyped,
7320
+ task_name: T.untyped,
7321
+ due_on: T.untyped,
7322
+ due_at: T.untyped
7323
+ ).returns(T.untyped)
7324
+ end
7325
+ def expect_task_queried(task, task_name, due_on, due_at); end
7326
+
7327
+ sig { params(due_on: T.untyped, due_at: T.untyped).returns(T.untyped) }
7328
+ def expect_three_tasks_queried(due_on:, due_at:); end
7329
+
7330
+ sig { returns(T.untyped) }
7331
+ def workspace_name; end
7332
+
7333
+ sig { returns(T.untyped) }
7334
+ def allow_workspaces_created; end
7335
+
7336
+ sig { returns(T.untyped) }
7337
+ def allow_config_loaded; end
7338
+
7339
+ sig { returns(T.untyped) }
7340
+ def allow_sections_created; end
7341
+
7342
+ sig { returns(T.untyped) }
7343
+ def allow_tasks_created; end
7344
+
7345
+ sig { returns(T.untyped) }
7346
+ def allow_clients_created; end
7347
+
7348
+ sig { returns(T.untyped) }
7349
+ def set_mocks; end
7350
+
7351
+ sig { params(_twiddle_mocks: T.untyped).returns(T.untyped) }
7352
+ def get_test_object(&_twiddle_mocks); end
7353
+
7354
+ sig { returns(T.untyped) }
7355
+ def test_run_with_no_section_specified_normal_project; end
7356
+
7357
+ sig do
7358
+ params(
7359
+ project_name: T.untyped,
7360
+ section_name: T.untyped,
7361
+ due_on: T.untyped,
7362
+ due_at: T.untyped
7363
+ ).returns(T.untyped)
7364
+ end
7365
+ def expect_three_tasks_pulled_and_queried(project_name:, section_name:, due_on:, due_at:); end
7366
+
7367
+ sig do
7368
+ params(
7369
+ project_name: T.untyped,
7370
+ section_name: T.untyped,
7371
+ due_at: T.untyped,
7372
+ due_on: T.untyped
7373
+ ).returns(T.untyped)
7374
+ end
7375
+ def mock_view(project_name:, section_name:, due_at:, due_on:); end
7376
+
7377
+ sig { params(section_name: T.untyped).returns(T.untyped) }
7378
+ def mock_view_specific_task(section_name:); end
7379
+
7380
+ sig { returns(T.untyped) }
7381
+ def test_view_specific_task_nil_section; end
7382
+
7383
+ sig { returns(T.untyped) }
7384
+ def test_view_specific_task; end
7385
+
7386
+ sig { returns(T.untyped) }
7387
+ def expected_json_section_specified; end
7388
+
7389
+ sig { returns(T.untyped) }
7390
+ def mock_view_run_with_section_specified_empty_section; end
7391
+
7392
+ sig { returns(T.untyped) }
7393
+ def test_view_run_with_section_specified_empty_section; end
7394
+
7395
+ sig { returns(T.untyped) }
7396
+ def mock_view_run_with_section_specified_normal_project_colon_project; end
7397
+
7398
+ sig { returns(T.untyped) }
7399
+ def test_view_run_with_section_specified_normal_project_colon_project; end
7400
+
7401
+ sig { returns(T.untyped) }
7402
+ def mock_view_run_with_section_specified_normal_project; end
7403
+
7404
+ sig { returns(T.untyped) }
7405
+ def test_view_run_with_section_specified_normal_project; end
7406
+
7407
+ sig { returns(T.untyped) }
7408
+ def mock_run_with_no_project_specified; end
7409
+
7410
+ sig { returns(T.untyped) }
7411
+ def test_run_with_no_project_specified; end
7412
+
7413
+ sig { returns(T.untyped) }
7414
+ def expected_json_view_not_due; end
7415
+
7416
+ sig { returns(T.untyped) }
7417
+ def test_view_not_due; end
7418
+
7419
+ sig { returns(T.untyped) }
7420
+ def expected_json_view_due_at; end
7421
+
7422
+ sig { returns(T.untyped) }
7423
+ def test_view_due_at; end
7424
+ end
7425
+
7426
+ # Test the Checkoff::Projects class
7427
+ class TestProjects < BaseAsana
7428
+ extend Forwardable
7429
+ TIME_BY_PERIOD = T.let({
7430
+ two_am: '02:00:20',
7431
+ morning_during_breakfast: '07:30:20',
7432
+ morning: '07:33:20',
7433
+ eight_thirty_am: '8:30:00',
7434
+ ten_am: '10:00:20',
7435
+ mid_morning: '10:33:20',
7436
+ eleven_thirty_am: '11:30:00',
7437
+ afternoon: '14:33:20',
7438
+ three_forty_five_pm: '15:45:20',
7439
+ four_fifteen_pm: '16:15:20',
7440
+ four_forty_five_pm: '16:45:20',
7441
+ five_forty_five_pm: '17:45:20',
7442
+ six_fifteen_pm: '18:15:00',
7443
+ six_forty_five_pm: '18:45:00',
7444
+ night: '19:00:20',
7445
+ evening: '19:01:20',
7446
+ late_evening: '21:33:20',
7447
+ late_late_evening: '22:33:20',
7448
+ }.freeze, T.untyped)
7449
+
7450
+ sig { returns(T.untyped) }
7451
+ def setup_config; end
7452
+
7453
+ sig { returns(T.untyped) }
7454
+ def setup_projects_pulled; end
7455
+
7456
+ sig { returns(T.untyped) }
7457
+ def sample_projects; end
7458
+
7459
+ sig { params(workspace_gid: T.untyped).returns(T.untyped) }
7460
+ def setup_projects_queried(workspace_gid: my_workspace_gid); end
7461
+
7462
+ sig { params(options: T.untyped).returns(T.untyped) }
7463
+ def expect_tasks_found(options:); end
7464
+
7465
+ sig { params(options: T.untyped).returns(T.untyped) }
7466
+ def mock_tasks_from_project(options:); end
7467
+
7468
+ sig { returns(T.untyped) }
7469
+ def test_tasks_from_project_not_only_uncompleted; end
7470
+
7471
+ sig { returns(T.untyped) }
7472
+ def test_tasks_from_project; end
7473
+
7474
+ sig { returns(T.untyped) }
7475
+ def test_active_tasks; end
7476
+
7477
+ sig { returns(T.untyped) }
7478
+ def setup_workspace_pulled; end
7479
+
7480
+ sig { returns(T.untyped) }
7481
+ def setup_user_task_list_pulled; end
7482
+
7483
+ sig { returns(T.untyped) }
7484
+ def mock_project_or_raise_unknown; end
7485
+
7486
+ sig { returns(T.untyped) }
7487
+ def test_project_or_raise_unknown; end
7488
+
7489
+ sig { returns(T.untyped) }
7490
+ def test_project_by_gid; end
7491
+
7492
+ sig { returns(T.untyped) }
7493
+ def test_project_or_raise_my_tasks; end
7494
+
7495
+ sig { returns(T.untyped) }
7496
+ def mock_project_my_tasks; end
7497
+
7498
+ sig { returns(T.untyped) }
7499
+ def test_project_my_tasks; end
7500
+
7501
+ sig { returns(T.untyped) }
7502
+ def test_project_to_h; end
7503
+
7504
+ sig { returns(T.untyped) }
7505
+ def mock_test_in_period; end
7506
+
7507
+ sig { returns(T.untyped) }
7508
+ def test_in_period; end
7509
+
7510
+ sig { returns(T.untyped) }
7511
+ def mock_project_ready; end
7512
+
7513
+ sig { returns(T.untyped) }
7514
+ def test_project_ready; end
7515
+
7516
+ sig { returns(T.untyped) }
7517
+ def class_under_test; end
7518
+ end
7519
+
7520
+ # Test the Checkoff::Sections class
7521
+ class TestSections < BaseAsana
7522
+ extend Forwardable
7523
+ TIME_BY_PERIOD = T.let({
7524
+ two_am: '02:00:20',
7525
+ morning_during_breakfast: '07:30:20',
7526
+ morning: '07:33:20',
7527
+ eight_thirty_am: '8:30:00',
7528
+ ten_am: '10:00:20',
7529
+ mid_morning: '10:33:20',
7530
+ eleven_thirty_am: '11:30:00',
7531
+ afternoon: '14:33:20',
7532
+ three_forty_five_pm: '15:45:20',
7533
+ four_fifteen_pm: '16:15:20',
7534
+ four_forty_five_pm: '16:45:20',
7535
+ five_forty_five_pm: '17:45:20',
7536
+ six_fifteen_pm: '18:15:00',
7537
+ six_forty_five_pm: '18:45:00',
7538
+ night: '19:00:20',
7539
+ evening: '19:01:20',
7540
+ late_evening: '21:33:20',
7541
+ late_late_evening: '22:33:20',
7542
+ }.freeze, T.untyped)
7543
+
7544
+ sig { returns(T.untyped) }
7545
+ def test_section_task_names_no_tasks; end
7546
+
7547
+ sig { returns(T.untyped) }
7548
+ def projects; end
7549
+
7550
+ sig { returns(T.untyped) }
7551
+ def test_section_task_names; end
7552
+
7553
+ sig { returns(T.untyped) }
7554
+ def mock_sections_or_raise; end
7555
+
7556
+ sig { returns(T.untyped) }
7557
+ def test_sections_or_raise; end
7558
+
7559
+ sig { returns(T.untyped) }
7560
+ def test_sections_or_raise_nil_project_name; end
7561
+
7562
+ sig { params(project: T.untyped, tasks_arr: T.untyped, active_tasks_arr: T.untyped).returns(T.untyped) }
7563
+ def expect_my_tasks_pulled(project, tasks_arr, active_tasks_arr); end
7564
+
7565
+ sig { params(section: T.untyped, name: T.untyped).returns(T.untyped) }
7566
+ def expect_section_named(section, name); end
7567
+
7568
+ sig { params(task: T.untyped, section: T.untyped).returns(T.untyped) }
7569
+ def expect_assignee_section_pulled(task, section); end
7570
+
7571
+ sig { returns(T.untyped) }
7572
+ def expect_my_tasks_sections_pulled; end
7573
+
7574
+ sig { returns(T.untyped) }
7575
+ def expect_my_tasks_tasks_pulled; end
7576
+
7577
+ sig { returns(T.untyped) }
7578
+ def mock_tasks_by_section_my_tasks; end
7579
+
7580
+ sig { returns(T.untyped) }
7581
+ def test_tasks_by_section_my_tasks; end
7582
+
7583
+ sig { returns(T.untyped) }
7584
+ def test_tasks_by_section_nil_workspace_name; end
7585
+
7586
+ sig { returns(T.untyped) }
7587
+ def test_tasks_by_section_nil_project_name; end
7588
+
7589
+ sig { returns(T.untyped) }
7590
+ def test_tasks_by_section_some_in_empty_section; end
7591
+
7592
+ sig { returns(T.untyped) }
7593
+ def expect_project_a_tasks_pulled; end
7594
+
7595
+ sig { returns(T.untyped) }
7596
+ def test_tasks_by_section; end
7597
+
7598
+ sig { params(task: T.untyped, name: T.untyped).returns(T.untyped) }
7599
+ def expect_named(task, name); end
7600
+
7601
+ sig { params(project: T.untyped, tasks_arr: T.untyped, active_tasks_arr: T.untyped).returns(T.untyped) }
7602
+ def expect_tasks_pulled(project, tasks_arr, active_tasks_arr); end
7603
+
7604
+ sig { params(workspace: T.untyped, project: T.untyped, project_name: T.untyped).returns(T.untyped) }
7605
+ def expect_project_pulled(workspace, project, project_name); end
7606
+
7607
+ sig { returns(T.untyped) }
7608
+ def expect_task_project_memberships_queried; end
7609
+
7610
+ sig { params(section_name: T.untyped).returns(T.untyped) }
7611
+ def expect_task_section_memberships_queried(section_name); end
7612
+
7613
+ sig { params(section_name: T.untyped).returns(T.untyped) }
7614
+ def expect_task_memberships_queried(section_name); end
7615
+
7616
+ sig do
7617
+ params(
7618
+ workspace: T.untyped,
7619
+ project: T.untyped,
7620
+ project_name: T.untyped,
7621
+ section_name: T.untyped
7622
+ ).returns(T.untyped)
7623
+ end
7624
+ def expect_tasks_and_sections_pulled(workspace, project, project_name, section_name); end
7625
+
7626
+ sig { params(project: T.untyped, gid: T.untyped).returns(T.untyped) }
7627
+ def expect_project_gid_pulled(project, gid); end
7628
+
7629
+ sig { returns(T.untyped) }
7630
+ def expect_sections_client_pulled; end
7631
+
7632
+ sig { params(project_gid: T.untyped, sections_array: T.untyped).returns(T.untyped) }
7633
+ def expect_project_sections_pulled(project_gid, sections_array); end
7634
+
7635
+ sig { returns(T.untyped) }
7636
+ def original_task_options; end
7637
+
7638
+ sig { params(only_uncompleted: T.untyped).returns(T.untyped) }
7639
+ def fixed_task_options(only_uncompleted:); end
7640
+
7641
+ sig { params(section_gid: T.untyped, task_list: T.untyped, only_uncompleted: T.untyped).returns(T.untyped) }
7642
+ def expect_tasks_api_called_for_section(section_gid, task_list, only_uncompleted:); end
7643
+
7644
+ sig { returns(T.untyped) }
7645
+ def expect_section_1_gid_pulled; end
7646
+
7647
+ sig { returns(T.untyped) }
7648
+ def expect_section_2_gid_pulled; end
7649
+
7650
+ sig { returns(T.untyped) }
7651
+ def expect_client_tasks_api_pulled; end
7652
+
7653
+ sig do
7654
+ params(
7655
+ section: T.untyped,
7656
+ section_gid: T.untyped,
7657
+ task_list: T.untyped,
7658
+ only_uncompleted: T.untyped
7659
+ ).returns(T.untyped)
7660
+ end
7661
+ def expect_section_tasks_pulled(section, section_gid, task_list, only_uncompleted:); end
7662
+
7663
+ sig { returns(T.untyped) }
7664
+ def test_tasks_not_only_uncompleted; end
7665
+
7666
+ sig { returns(T.untyped) }
7667
+ def allow_section_1_name_pulled; end
7668
+
7669
+ sig { returns(T.untyped) }
7670
+ def allow_section_2_name_pulled; end
7671
+
7672
+ sig { returns(T.untyped) }
7673
+ def allow_empty_section_name_pulled; end
7674
+
7675
+ sig { params(only_uncompleted: T.untyped).returns(T.untyped) }
7676
+ def mock_tasks_normal_project(only_uncompleted:); end
7677
+
7678
+ sig { returns(T.untyped) }
7679
+ def test_tasks_normal_project; end
7680
+
7681
+ sig { returns(T.untyped) }
7682
+ def test_tasks_by_section_gid; end
7683
+
7684
+ sig { returns(T.untyped) }
7685
+ def test_tasks_by_section_also_completed; end
7686
+
7687
+ sig { returns(T.untyped) }
7688
+ def mock_tasks_inbox; end
7689
+
7690
+ sig { returns(T.untyped) }
7691
+ def test_tasks_inbox; end
7692
+
7693
+ sig { returns(T.untyped) }
7694
+ def test_tasks_section_not_found; end
7695
+
7696
+ sig { returns(T.untyped) }
7697
+ def test_tasks_project_not_found; end
7698
+
7699
+ sig { returns(T.untyped) }
7700
+ def test_previous_section; end
7701
+
7702
+ sig { returns(T.untyped) }
7703
+ def test_previous_section_on_inbox_returns_nil; end
7704
+
7705
+ sig { returns(T.untyped) }
7706
+ def test_section_by_gid; end
7707
+
7708
+ sig { returns(T.untyped) }
7709
+ def test_section_by_gid_bad_server_data; end
7710
+
7711
+ sig { returns(T.untyped) }
7712
+ def respond_like_instance_of; end
7713
+
7714
+ sig { returns(T.untyped) }
7715
+ def respond_like; end
7716
+
7717
+ sig { returns(T.untyped) }
7718
+ def class_under_test; end
7719
+ end
7720
+
7721
+ class TestSubtasks < ClassTest
7722
+ extend Forwardable
7723
+
7724
+ sig { returns(T.untyped) }
7725
+ def task_options; end
7726
+
7727
+ sig { returns(T.untyped) }
7728
+ def subtask_options; end
7729
+
7730
+ # refute(subtasks.all_subtasks_completed?(task))
7731
+ # end
7732
+ sig { params(active_subtasks: T.untyped).returns(T.untyped) }
7733
+ def expect_active_subtasks_pulled(active_subtasks); end
7734
+
7735
+ sig { returns(T.untyped) }
7736
+ def allow_all_section_status_queried; end
7737
+
7738
+ # assert(subtasks.all_subtasks_completed?(task))
7739
+ # end
7740
+ sig { params(subtask: T.untyped, result: T.untyped).returns(T.untyped) }
7741
+ def allow_subtask_section_status_queried(subtask, result); end
7742
+
7743
+ # assert_equal(subtasks.subtask_section?(subtask), is_rendered_as_separator)
7744
+ # end
7745
+ sig { returns(T.untyped) }
7746
+ def allow_subtask_section_1_named; end
7747
+
7748
+ sig { returns(T.untyped) }
7749
+ def allow_subtask_section_2_named; end
7750
+
7751
+ sig { returns(T.untyped) }
7752
+ def allow_subtask_section_3_named; end
7753
+
7754
+ sig { returns(T.untyped) }
7755
+ def allow_subtask_names_queried; end
7756
+
7757
+ sig { returns(T.untyped) }
7758
+ def mock_by_section; end
7759
+
7760
+ # assert_equal('More than one section named 1:', e.message)
7761
+ # end
7762
+ sig { returns(T.untyped) }
7763
+ def expect_raw_subtasks_pulled; end
7764
+
7765
+ # refute_nil subtasks
7766
+ # end
7767
+ sig { returns(T.untyped) }
7768
+ def class_under_test; end
7769
+
7770
+ sig { returns(T.untyped) }
7771
+ def respond_like_instance_of; end
7772
+
7773
+ sig { returns(T.untyped) }
7774
+ def respond_like; end
7775
+ end
7776
+
7777
+ class TestTimelines < ClassTest
7778
+ extend Forwardable
7779
+
7780
+ sig { returns(T.untyped) }
7781
+ def test_task_dependent_on_previous_section_last_milestone_no_memberships; end
7782
+
7783
+ sig { returns(T.untyped) }
7784
+ def mock_task_dependent_on_previous_section_last_milestone_false_no_dependencies; end
7785
+
7786
+ sig { returns(T.untyped) }
7787
+ def test_task_dependent_on_previous_section_last_milestone_false_no_dependencies_; end
7788
+
7789
+ sig { params(task: T.untyped, task_data: T.untyped).returns(T.untyped) }
7790
+ def expect_task_data_created(task, task_data); end
7791
+
7792
+ sig { returns(T.untyped) }
7793
+ def expect_section_2_pulled; end
7794
+
7795
+ sig { returns(T.untyped) }
7796
+ def expect_section_2_previous_section_called; end
7797
+
7798
+ sig { returns(T.untyped) }
7799
+ def expect_section_1_gid_pulled; end
7800
+
7801
+ sig { returns(T.untyped) }
7802
+ def expect_no_section_1_tasks; end
7803
+
7804
+ sig { returns(T.untyped) }
7805
+ def mock_task_dependent_on_previous_section_last_milestone_true_no_tasks; end
7806
+
7807
+ sig { returns(T.untyped) }
7808
+ def test_task_dependent_on_previous_section_last_milestone_true_no_tasks; end
7809
+
7810
+ sig { returns(T.untyped) }
7811
+ def expect_section_1_tasks_pulled; end
7812
+
7813
+ sig { returns(T.untyped) }
7814
+ def expect_milestone_queried; end
7815
+
7816
+ sig { returns(T.untyped) }
7817
+ def mock_task_dependent_on_previous_section_last_milestone_true; end
7818
+
7819
+ sig { returns(T.untyped) }
7820
+ def test_task_dependent_on_previous_section_last_milestone_true; end
7821
+
7822
+ sig { returns(T.untyped) }
7823
+ def mock_task_dependent_on_previous_section_last_milestone_false_no_previous_section; end
7824
+
7825
+ sig { returns(T.untyped) }
7826
+ def test_task_dependent_on_previous_section_last_milestone_false_no_previous_section; end
7827
+
7828
+ sig { returns(T.untyped) }
7829
+ def test_last_task_milestone_depends_on_this_task_no_memberships; end
7830
+
7831
+ sig { params(task: T.untyped, dependents: T.untyped).returns(T.untyped) }
7832
+ def expect_all_dependent_tasks_pulled(task, dependents); end
7833
+
7834
+ sig { params(task: T.untyped, memberships: T.untyped).returns(T.untyped) }
7835
+ def expect_memberships_pulled(task, memberships); end
7836
+
7837
+ sig { params(tasks: T.untyped).returns(T.untyped) }
7838
+ def expect_tasks_by_section_gid_pulled(tasks); end
7839
+
7840
+ sig { returns(T.untyped) }
7841
+ def expect_milestone_details_pulled; end
7842
+
7843
+ sig { returns(T.untyped) }
7844
+ def expect_task_gid_pulled; end
7845
+
7846
+ sig { returns(T.untyped) }
7847
+ def test_last_task_milestone_depends_on_this_task_false; end
7848
+
7849
+ sig { returns(T.untyped) }
7850
+ def test_last_task_milestone_depends_on_this_task_no_milestone; end
7851
+
7852
+ sig { returns(T.untyped) }
7853
+ def test_last_task_milestone_depends_on_this_task_is_last_milestone; end
7854
+
7855
+ sig { params(projects: T.untyped).returns(T.untyped) }
7856
+ def export_portfolio_projects_pulled(projects); end
7857
+
7858
+ sig { returns(T.untyped) }
7859
+ def test_last_task_milestone_depends_on_this_task_is_last_milestone_limited_to_portfolio_no_projects; end
7860
+
7861
+ sig { returns(T.untyped) }
7862
+ def mock_last_task_milestone_depends_on_this_task_is_last_milestone_limited_to_portfolio; end
7863
+
7864
+ sig { returns(T.untyped) }
7865
+ def test_last_task_milestone_depends_on_this_task_is_last_milestone_limited_to_portfolio; end
7866
+
7867
+ sig { returns(T.untyped) }
7868
+ def test_init; end
7869
+
7870
+ sig { returns(T.untyped) }
7871
+ def class_under_test; end
7872
+
7873
+ sig { returns(T.untyped) }
7874
+ def respond_like_instance_of; end
7875
+
7876
+ sig { returns(T.untyped) }
7877
+ def respond_like; end
7878
+ end
7879
+
7880
+ class TestPortfolios < ClassTest
7881
+ extend Forwardable
7882
+
7883
+ sig { returns(T.untyped) }
7884
+ def test_portfolio_or_raise_raises; end
7885
+
7886
+ sig { returns(T.untyped) }
7887
+ def test_portfolio_or_raise; end
7888
+
7889
+ sig { returns(T.untyped) }
7890
+ def expect_workspace_pulled; end
7891
+
7892
+ sig { returns(T.untyped) }
7893
+ def allow_portfolios_named; end
7894
+
7895
+ sig { returns(T.untyped) }
7896
+ def expect_portfolios_api_pulled; end
7897
+
7898
+ sig { returns(T.untyped) }
7899
+ def expect_me_gid_pulled; end
7900
+
7901
+ sig { params(portfolio_arr: T.untyped).returns(T.untyped) }
7902
+ def expect_portfolios_pulled(portfolio_arr); end
7903
+
7904
+ sig { returns(T.untyped) }
7905
+ def test_portfolio; end
7906
+
7907
+ sig { returns(T.untyped) }
7908
+ def test_portfolio_by_gid; end
7909
+
7910
+ sig { returns(T.untyped) }
7911
+ def test_projects_in_portfolios; end
7912
+
7913
+ sig { returns(T.untyped) }
7914
+ def class_under_test; end
7915
+
7916
+ sig { returns(T.untyped) }
7917
+ def respond_like_instance_of; end
7918
+
7919
+ sig { returns(T.untyped) }
7920
+ def respond_like; end
7921
+ end
7922
+
7923
+ # Test the Checkoff::Workspaces class
7924
+ class TestWorkspaces < BaseAsana
7925
+ extend Forwardable
7926
+ TIME_BY_PERIOD = T.let({
7927
+ two_am: '02:00:20',
7928
+ morning_during_breakfast: '07:30:20',
7929
+ morning: '07:33:20',
7930
+ eight_thirty_am: '8:30:00',
7931
+ ten_am: '10:00:20',
7932
+ mid_morning: '10:33:20',
7933
+ eleven_thirty_am: '11:30:00',
7934
+ afternoon: '14:33:20',
7935
+ three_forty_five_pm: '15:45:20',
7936
+ four_fifteen_pm: '16:15:20',
7937
+ four_forty_five_pm: '16:45:20',
7938
+ five_forty_five_pm: '17:45:20',
7939
+ six_fifteen_pm: '18:15:00',
7940
+ six_forty_five_pm: '18:45:00',
7941
+ night: '19:00:20',
7942
+ evening: '19:01:20',
7943
+ late_evening: '21:33:20',
7944
+ late_late_evening: '22:33:20',
7945
+ }.freeze, T.untyped)
7946
+
7947
+ sig { returns(T.untyped) }
7948
+ def mock_workspace_or_raise_nil; end
7949
+
7950
+ sig { returns(T.untyped) }
7951
+ def test_workspace_or_raise_nil; end
7952
+
7953
+ sig { returns(T.untyped) }
7954
+ def mock_workspace_or_raise; end
7955
+
7956
+ sig { returns(T.untyped) }
7957
+ def test_workspace_or_raise; end
7958
+
7959
+ sig { returns(T.untyped) }
7960
+ def expect_default_workspace_gid_config_fetched; end
7961
+
7962
+ sig { returns(T.untyped) }
7963
+ def test_default_workspace_gid; end
7964
+
7965
+ sig { returns(T.untyped) }
7966
+ def test_default_workspace; end
7967
+
7968
+ sig { returns(T.untyped) }
7969
+ def class_under_test; end
7970
+ end
7971
+
7972
+ class TestAttachments < ClassTest
7973
+ extend Forwardable
7974
+
7975
+ sig { params(url: T.untyped).returns(T.untyped) }
7976
+ def mock_create_attachment_from_url(url); end
7977
+
7978
+ sig { returns(T.untyped) }
7979
+ def test_create_attachment_from_url; end
7980
+
7981
+ sig { returns(T.untyped) }
7982
+ def class_under_test; end
7983
+
7984
+ sig { returns(T.untyped) }
7985
+ def respond_like_instance_of; end
7986
+
7987
+ sig { returns(T.untyped) }
7988
+ def respond_like; end
7989
+ end
7990
+
7991
+ # double to inject cache_method, pretending to be cache_method gem
7992
+ class Class
7993
+ sig { params(method_id: T.untyped, _ttl: T.untyped).returns(T.untyped) }
7994
+ def cache_method(method_id, _ttl = nil); end
7995
+ end
7996
+
7997
+ # double to inject cache_method_clear, pretending to be cache_method gem
7998
+ module Kernel
7999
+ sig { params(_method_id: T.untyped).returns(T.untyped) }
8000
+ def cache_method_clear(_method_id); end
8001
+ end
8002
+
8003
+ # Test the Checkoff::CLI class with quickadd subcommand
8004
+ class TestCLIQuickadd < Minitest::Test
8005
+ sig { returns(T.untyped) }
8006
+ def workspace_name; end
8007
+
8008
+ sig { returns(T.untyped) }
8009
+ def expect_workspaces_created; end
8010
+
8011
+ sig { returns(T.untyped) }
8012
+ def expect_config_loaded; end
8013
+
8014
+ sig { returns(T.untyped) }
8015
+ def expect_sections_created; end
8016
+
8017
+ sig { returns(T.untyped) }
8018
+ def expect_tasks_created; end
8019
+
8020
+ sig { returns(T.untyped) }
8021
+ def set_mocks; end
8022
+
8023
+ sig { params(_twiddle_mocks: T.untyped).returns(T.untyped) }
8024
+ def get_test_object(&_twiddle_mocks); end
8025
+
8026
+ sig { returns(T.untyped) }
8027
+ def mock_quickadd; end
8028
+
8029
+ sig { returns(T.untyped) }
8030
+ def test_quickadd; end
8031
+ end
8032
+
8033
+ class TestCustomFields < ClassTest
8034
+ extend Forwardable
8035
+
8036
+ sig { returns(T.untyped) }
8037
+ def test_custom_field_or_raise_raises; end
8038
+
8039
+ sig { returns(T.untyped) }
8040
+ def test_custom_field_or_raise; end
8041
+
8042
+ sig { returns(T.untyped) }
8043
+ def expect_workspace_pulled; end
8044
+
8045
+ sig { returns(T.untyped) }
8046
+ def allow_custom_fields_named; end
8047
+
8048
+ sig { params(custom_field_arr: T.untyped).returns(T.untyped) }
8049
+ def expect_custom_fields_pulled(custom_field_arr); end
8050
+
8051
+ sig { returns(T.untyped) }
8052
+ def test_custom_field; end
8053
+
8054
+ sig { returns(T.untyped) }
8055
+ def class_under_test; end
8056
+ end
8057
+
8058
+ # Test the Checkoff::MvSubcommand class used in CLI processing
8059
+ class TestMvSubcommand < ClassTest
8060
+ extend Forwardable
8061
+
8062
+ sig { params(arg: T.untyped).returns(T.untyped) }
8063
+ def argument_to_name(arg); end
8064
+
8065
+ sig { params(workspace_name: T.untyped, project_name: T.untyped, project: T.untyped).returns(T.untyped) }
8066
+ def expect_project_pulled(workspace_name, project_name, project); end
8067
+
8068
+ sig do
8069
+ params(
8070
+ workspace_name: T.untyped,
8071
+ project_name: T.untyped,
8072
+ section_name: T.untyped,
8073
+ section: T.untyped
8074
+ ).returns(T.untyped)
8075
+ end
8076
+ def expect_section_pulled(workspace_name, project_name, section_name, section); end
8077
+
8078
+ sig do
8079
+ params(
8080
+ workspace_name: T.untyped,
8081
+ project_name: T.untyped,
8082
+ section_name: T.untyped,
8083
+ tasks: T.untyped
8084
+ ).returns(T.untyped)
8085
+ end
8086
+ def expect_tasks_pulled(workspace_name, project_name, section_name, tasks); end
8087
+
8088
+ sig { params(task: T.untyped, task_name: T.untyped).returns(T.untyped) }
8089
+ def expect_task_named(task, task_name); end
8090
+
8091
+ sig { params(section: T.untyped, section_name: T.untyped).returns(T.untyped) }
8092
+ def expect_section_named(section, section_name); end
8093
+
8094
+ sig { params(project: T.untyped, project_gid: T.untyped).returns(T.untyped) }
8095
+ def expect_project_gid_pulled(project, project_gid); end
8096
+
8097
+ sig { params(section: T.untyped, section_gid: T.untyped).returns(T.untyped) }
8098
+ def expect_section_gid_pulled(section, section_gid); end
8099
+
8100
+ sig { params(task: T.untyped, project_gid: T.untyped, section_gid: T.untyped).returns(T.untyped) }
8101
+ def expect_task_added_to_project(task, project_gid, section_gid); end
8102
+
8103
+ sig { returns(T.untyped) }
8104
+ def allow_logger_used; end
8105
+
8106
+ sig { returns(T.untyped) }
8107
+ def set_initializer_arguments; end
8108
+
8109
+ sig { params(from_workspace_arg: T.untyped, to_workspace_arg: T.untyped).returns(T.untyped) }
8110
+ def determine_to_workspace_name(from_workspace_arg, to_workspace_arg); end
8111
+
8112
+ sig { params(from_project_name: T.untyped, to_project_arg: T.untyped).returns(T.untyped) }
8113
+ def determine_to_project_name(from_project_name, to_project_arg); end
8114
+
8115
+ sig { params(from_section_name: T.untyped, to_section_arg: T.untyped).returns(T.untyped) }
8116
+ def determine_to_section_name(from_section_name, to_section_arg); end
8117
+
8118
+ sig { params(task: T.untyped, task_name: T.untyped).returns(T.untyped) }
8119
+ def expect_task_added_to_section(task, task_name); end
8120
+
8121
+ sig { returns(T.untyped) }
8122
+ def set_names; end
8123
+
8124
+ sig { returns(T.untyped) }
8125
+ def expect_to_objects_pulled; end
8126
+
8127
+ sig { returns(T.untyped) }
8128
+ def expect_run; end
8129
+
8130
+ sig { returns(T.untyped) }
8131
+ def mock_run_to_different_workspace; end
8132
+
8133
+ sig { returns(T.untyped) }
8134
+ def test_run_to_different_workspace; end
8135
+
8136
+ sig { returns(T.untyped) }
8137
+ def mock_run_from_all_sections; end
8138
+
8139
+ sig { returns(T.untyped) }
8140
+ def test_run_from_all_sections; end
8141
+
8142
+ sig { returns(T.untyped) }
8143
+ def mock_run_from_regular_project; end
8144
+
8145
+ sig { returns(T.untyped) }
8146
+ def test_run_from_regular_project; end
8147
+
8148
+ sig { returns(T.untyped) }
8149
+ def mock_run_to_same_section_different_project; end
8150
+
8151
+ sig { returns(T.untyped) }
8152
+ def test_run_to_same_section_different_project; end
8153
+
8154
+ sig { returns(T.untyped) }
8155
+ def mock_run_with_explicit_to_project; end
8156
+
8157
+ sig { returns(T.untyped) }
8158
+ def test_run_with_explicit_to_project; end
8159
+
8160
+ sig { returns(T.untyped) }
8161
+ def mock_run_from_my_tasks; end
8162
+
8163
+ sig { returns(T.untyped) }
8164
+ def test_run_from_my_tasks; end
8165
+
8166
+ sig { returns(T.untyped) }
8167
+ def mock_init_default_workspace_not_implemented; end
8168
+
8169
+ sig { returns(T.untyped) }
8170
+ def test_init_default_workspace_not_implemented; end
8171
+
8172
+ sig { returns(T.untyped) }
8173
+ def test_init; end
8174
+
8175
+ sig { returns(T.untyped) }
8176
+ def class_under_test; end
8177
+
8178
+ # Returns the value of attribute from_workspace_arg.
8179
+ sig { returns(T.untyped) }
8180
+ attr_reader :from_workspace_arg
8181
+
8182
+ # Returns the value of attribute from_project_arg.
8183
+ sig { returns(T.untyped) }
8184
+ attr_reader :from_project_arg
8185
+
8186
+ # Returns the value of attribute from_section_arg.
8187
+ sig { returns(T.untyped) }
8188
+ attr_reader :from_section_arg
8189
+
8190
+ # Returns the value of attribute to_workspace_arg.
8191
+ sig { returns(T.untyped) }
8192
+ attr_reader :to_workspace_arg
8193
+
8194
+ # Returns the value of attribute to_project_arg.
8195
+ sig { returns(T.untyped) }
8196
+ attr_reader :to_project_arg
8197
+
8198
+ # Returns the value of attribute to_section_arg.
8199
+ sig { returns(T.untyped) }
8200
+ attr_reader :to_section_arg
8201
+
8202
+ # Returns the value of attribute from_workspace_name.
8203
+ sig { returns(T.untyped) }
8204
+ attr_reader :from_workspace_name
8205
+
8206
+ # Returns the value of attribute from_project_name.
8207
+ sig { returns(T.untyped) }
8208
+ attr_reader :from_project_name
8209
+
8210
+ # Returns the value of attribute from_section_name.
8211
+ sig { returns(T.untyped) }
8212
+ attr_reader :from_section_name
8213
+
8214
+ # Returns the value of attribute to_workspace_name.
8215
+ sig { returns(T.untyped) }
8216
+ attr_reader :to_workspace_name
8217
+
8218
+ # Returns the value of attribute to_project_name.
8219
+ sig { returns(T.untyped) }
8220
+ attr_reader :to_project_name
8221
+
8222
+ # Returns the value of attribute to_section_name.
8223
+ sig { returns(T.untyped) }
8224
+ attr_reader :to_section_name
8225
+ end
8226
+
8227
+ class TestTaskSearches < ClassTest
8228
+ extend Forwardable
8229
+
8230
+ sig { returns(T.untyped) }
8231
+ def expect_workspace_pulled; end
8232
+
8233
+ sig { returns(T.untyped) }
8234
+ def expect_workspace_gid_pulled; end
8235
+
8236
+ sig { returns(T.untyped) }
8237
+ def expect_convert_params_called; end
8238
+
8239
+ sig { returns(T.untyped) }
8240
+ def default_fields; end
8241
+
8242
+ sig { returns(T.untyped) }
8243
+ def expect_client_get_called; end
8244
+
8245
+ sig { returns(T.untyped) }
8246
+ def expect_search_response_queried; end
8247
+
8248
+ sig { params(response_array: T.untyped).returns(T.untyped) }
8249
+ def expect_response_wrapped(response_array); end
8250
+
8251
+ sig { returns(T.untyped) }
8252
+ def expect_tasks_filtered; end
8253
+
8254
+ sig { returns(T.untyped) }
8255
+ def expect_task_selector_queried; end
8256
+
8257
+ sig { returns(T.untyped) }
8258
+ def mock_task_search; end
8259
+
8260
+ sig { returns(T.untyped) }
8261
+ def projects; end
8262
+
8263
+ sig { returns(T.untyped) }
8264
+ def test_task_search; end
8265
+
8266
+ sig { returns(T.untyped) }
8267
+ def mock_task_search_overloaded; end
8268
+
8269
+ sig { returns(T.untyped) }
8270
+ def test_as_cache_key; end
8271
+
8272
+ sig { returns(T.untyped) }
8273
+ def class_under_test; end
8274
+
8275
+ sig { returns(T.untyped) }
8276
+ def respond_like_instance_of; end
8277
+
8278
+ sig { returns(T.untyped) }
8279
+ def respond_like; end
8280
+ end
8281
+
8282
+ # rubocop:disable Metrics/ClassLength
8283
+ class TestTaskSelectors < ClassTest
8284
+ extend Forwardable
8285
+
8286
+ sig { returns(Checkoff::TaskSelectors) }
8287
+ def get_test_object; end
8288
+
8289
+ sig { returns(Mocha::Mock) }
8290
+ def task; end
8291
+
8292
+ sig { void }
8293
+ def test_filter_via_custom_field_gid_values_gids_no_enum_value; end
8294
+
8295
+ sig { void }
8296
+ def test_filter_via_custom_field_gid_values_gids_no_enum_value_multi_enum; end
8297
+
8298
+ sig { void }
8299
+ def test_filter_via_custom_field_gid_values_gids_no_enum_value_new_type; end
8300
+
8301
+ # not sure why this would be the case, so set an alarm so I can understand
8302
+ sig { void }
8303
+ def test_filter_via_custom_field_custom_field_not_enabled; end
8304
+
8305
+ sig { void }
8306
+ def test_filter_via_custom_field_none_matched; end
8307
+
8308
+ sig { void }
8309
+ def test_filter_via_custom_field_gid_values_gids_custom_field_not_provided; end
8310
+
8311
+ sig { void }
8312
+ def test_filter_via_custom_field_gid_values_gids; end
8313
+
8314
+ sig { void }
8315
+ def test_filter_via_invalid_syntax; end
8316
+
8317
+ sig { void }
8318
+ def test_filter_via_custom_field_value_nil_false_found; end
8319
+
8320
+ sig { void }
8321
+ def mock_filter_via_custom_field_gid_value_gid_nil; end
8322
+
8323
+ sig { void }
8324
+ def test_filter_via_custom_field_gid_value_gid_nil; end
8325
+
8326
+ sig { void }
8327
+ def test_filter_via_custom_field_value_custom_fields_not_provided; end
8328
+
8329
+ sig { returns(T.untyped) }
8330
+ def test_filter_via_custom_field_value_nil_none_found; end
8331
+
8332
+ sig { void }
8333
+ def test_filter_via_custom_field_value_gid_nil_none_found; end
8334
+
8335
+ sig { returns(T.untyped) }
8336
+ def test_filter_via_task_selector_tag; end
8337
+
8338
+ sig { void }
8339
+ def test_filter_via_task_selector_not; end
8340
+
8341
+ sig { returns(T.untyped) }
8342
+ def test_filter_via_task_selector_and; end
8343
+
8344
+ sig { returns(T.untyped) }
8345
+ def test_filter_via_task_selector_or; end
8346
+
8347
+ sig { returns(T.untyped) }
8348
+ def test_filter_via_task_selector_simple; end
8349
+
8350
+ sig { returns(T.untyped) }
8351
+ def test_filter_via_task_selector_ready; end
8352
+
8353
+ sig { returns(T.untyped) }
8354
+ def expect_now_jan_1_2019; end
8355
+
8356
+ sig { returns(T.untyped) }
8357
+ def expect_starts_jan_1_2019_midnight; end
8358
+
8359
+ sig { returns(T.untyped) }
8360
+ def expect_no_incomplete_dependencies; end
8361
+
8362
+ sig { returns(T.untyped) }
8363
+ def mock_filter_via_task_selector_ready_between_relative_starts_no; end
8364
+
8365
+ sig { returns(T.untyped) }
8366
+ def test_filter_via_task_selector_ready_between_relative_starts_now; end
8367
+
8368
+ sig { returns(T.untyped) }
8369
+ def mock_filter_via_task_selector_ready_between_relative_starts_today; end
8370
+
8371
+ sig { returns(T.untyped) }
8372
+ def test_filter_via_task_selector_ready_between_relative_starts_today; end
8373
+
8374
+ sig { returns(T.untyped) }
8375
+ def mock_filter_via_task_selector_ready_between_relative_due_now; end
8376
+
8377
+ sig { returns(T.untyped) }
8378
+ def test_filter_via_task_selector_ready_between_relative_due_now; end
8379
+
8380
+ sig { returns(T.untyped) }
8381
+ def mock_due_on_jan_1_2019; end
8382
+
8383
+ sig { returns(T.untyped) }
8384
+ def expect_no_start; end
8385
+
8386
+ sig { returns(T.untyped) }
8387
+ def mock_filter_via_task_selector_ready_between_relative_due_today; end
8388
+
8389
+ sig { returns(T.untyped) }
8390
+ def test_filter_via_task_selector_ready_between_relative_due_today; end
8391
+
8392
+ sig { returns(T.untyped) }
8393
+ def expect_no_due; end
8394
+
8395
+ sig { returns(T.untyped) }
8396
+ def mock_filter_via_task_selector_ready_between_relative_no_due; end
8397
+
8398
+ sig { returns(T.untyped) }
8399
+ def test_filter_via_task_selector_ready_between_relative_no_due; end
8400
+
8401
+ sig { returns(T.untyped) }
8402
+ def expect_due_jan_1_2099; end
8403
+
8404
+ sig { returns(T.untyped) }
8405
+ def mock_filter_via_task_selector_ready_between_relative_due_far_future; end
8406
+
8407
+ sig { returns(T.untyped) }
8408
+ def test_filter_via_task_selector_ready_between_relative_due_far_future; end
8409
+
8410
+ sig { returns(T.untyped) }
8411
+ def expect_incomplete_dependencies; end
8412
+
8413
+ sig { returns(T.untyped) }
8414
+ def expect_tasks_not_mocked; end
8415
+
8416
+ sig { void }
8417
+ def test_filter_via_task_selector_unassigned; end
8418
+
8419
+ sig { returns(T.untyped) }
8420
+ def test_filter_via_custom_field_gid_value_contains_all_gids; end
8421
+
8422
+ sig { void }
8423
+ def test_filter_via_task_selector_due_date_set; end
8424
+
8425
+ sig { void }
8426
+ def test_filter_via_task_selector_custom_field_less_than_n_days_from_now; end
8427
+
8428
+ sig { returns(T.untyped) }
8429
+ def test_filter_via_task_selector_custom_field_less_than_n_days_from_now_not_set; end
8430
+
8431
+ sig { void }
8432
+ def test_filter_via_task_selector_custom_field_less_than_n_days_from_now_custom_field_not_found; end
8433
+
8434
+ sig { void }
8435
+ def test_filter_via_task_selector_custom_field_greater_than_or_equal_to_n_days_from_now; end
8436
+
8437
+ sig { void }
8438
+ def test_filter_via_task_selector_custom_field_greater_than_or_equal_to_n_days_from_now_nil; end
8439
+
8440
+ sig { void }
8441
+ def test_filter_via_task_selector_custom_field_greater_than_or_equal_to_n_days_from_now_custom_field_not_found; end
8442
+
8443
+ sig { returns(T.untyped) }
8444
+ def mock_filter_via_task_selector_modified_less_than_n_days_ago; end
8445
+
8446
+ sig { void }
8447
+ def test_filter_via_task_selector_modified_less_than_n_days_ago; end
8448
+
8449
+ sig { void }
8450
+ def test_estimate_exceeds_duration_true; end
8451
+
8452
+ sig { void }
8453
+ def test_estimate_exceeds_duration_false_no_estimate_set; end
8454
+
8455
+ sig { void }
8456
+ def test_estimate_exceeds_duration_true_only_due_set; end
8457
+
8458
+ sig { void }
8459
+ def test_estimate_exceeds_duration_true_no_dates_set; end
8460
+
8461
+ sig { void }
8462
+ def test_estimate_exceeds_duration_no_estimate_field; end
8463
+
8464
+ sig { void }
8465
+ def test_filter_via_task_selector_modified_less_than_n_days_ago_nil; end
8466
+
8467
+ sig { void }
8468
+ def test_filter_via_task_selector_modified_less_than_n_days_ago_field_not_supported; end
8469
+
8470
+ sig { void }
8471
+ def test_filter_via_task_selector_modified_less_than_n_days_ago_compound_field_not_supported; end
8472
+
8473
+ sig { void }
8474
+ def mock_filter_via_task_selector_field_greater_than_or_equal_to_n_days_from_today_due_on; end
8475
+
8476
+ sig { void }
8477
+ def test_filter_via_task_selector_field_greater_than_or_equal_to_n_days_from_today_due_on; end
8478
+
8479
+ sig { returns(T.untyped) }
8480
+ def mock_filter_via_task_selector_field_greater_than_or_equal_to_n_days_from_today_due_at; end
8481
+
8482
+ sig { void }
8483
+ def test_filter_via_task_selector_field_greater_than_or_equal_to_n_days_from_today_due_at; end
8484
+
8485
+ sig { void }
8486
+ def mock_filter_via_task_selector_field_greater_than_or_equal_to_n_days_from_today_due_nil; end
8487
+
8488
+ sig { void }
8489
+ def test_filter_via_task_selector_field_greater_than_or_equal_to_n_days_from_today_due_nil; end
8490
+
8491
+ sig { void }
8492
+ def test_filter_via_task_selector_custom_field_equal_to_date; end
8493
+
8494
+ sig { void }
8495
+ def test_filter_via_task_selector_custom_field_not_equal_to_date; end
8496
+
8497
+ sig { void }
8498
+ def test_filter_via_task_selector_last_story_created_less_than_n_days_ago_no_stories; end
8499
+
8500
+ sig { void }
8501
+ def mock_filter_via_task_selector_last_story_created_less_than_n_days_ago_ancient; end
8502
+
8503
+ sig { void }
8504
+ def test_filter_via_task_selector_last_story_created_less_than_n_days_ago_ancient; end
8505
+
8506
+ sig { void }
8507
+ def mock_filter_via_task_selector_last_story_created_less_than_n_days_ago_recent; end
8508
+
8509
+ sig { void }
8510
+ def test_filter_via_task_selector_last_story_created_less_than_n_days_ago_recent; end
8511
+
8512
+ sig { returns(T.untyped) }
8513
+ def test_filter_via_task_selector_in_project_named_false; end
8514
+
8515
+ sig { returns(T.untyped) }
8516
+ def test_filter_via_task_selector_in_project_named_true; end
8517
+
8518
+ sig { returns(T.untyped) }
8519
+ def test_dependent_on_previous_section_last_milestone; end
8520
+
8521
+ sig { returns(T.untyped) }
8522
+ def test_in_portfolio_named_true; end
8523
+
8524
+ sig { returns(T.untyped) }
8525
+ def test_in_portfolio_named_false; end
8526
+
8527
+ sig { returns(T.untyped) }
8528
+ def test_custom_field_gid_value_contains_any_gid_false_multi_enum; end
8529
+
8530
+ sig { returns(T.untyped) }
8531
+ def test_last_task_milestone_does_not_depend_on_this_task; end
8532
+
8533
+ sig { returns(T.untyped) }
8534
+ def respond_like_instance_of; end
8535
+
8536
+ sig { returns(T.untyped) }
8537
+ def respond_like; end
8538
+
8539
+ sig { returns(T.class_of(Checkoff::TaskSelectors)) }
8540
+ def class_under_test; end
8541
+ end
8542
+
8543
+ class TestProjectSelectors < ClassTest
8544
+ extend Forwardable
8545
+
8546
+ sig { returns(Checkoff::ProjectSelectors) }
8547
+ def get_test_object; end
8548
+
8549
+ sig { void }
8550
+ def test_filter_via_custom_field_value_contain_any_value_false; end
8551
+
8552
+ sig { void }
8553
+ def test_filter_via_custom_field_values_contain_any_value_true; end
8554
+
8555
+ sig { void }
8556
+ def test_filter_via_custom_field_values_contain_any_value_true_single_in_multi_enum; end
8557
+
8558
+ sig { void }
8559
+ def test_filter_via_custom_field_values_contain_any_value_true_multiple; end
8560
+
8561
+ sig { void }
8562
+ def test_filter_via_custom_field_values_contain_any_value_false_nothing_set; end
8563
+
8564
+ sig { void }
8565
+ def test_filter_via_custom_field_value_contains_any_value_no_custom_field_false; end
8566
+
8567
+ sig { void }
8568
+ def test_filter_via_due_date_false; end
8569
+
8570
+ sig { void }
8571
+ def test_filter_via_ready_false; end
8572
+
8573
+ sig { void }
8574
+ def test_bogus_raises; end
8575
+
8576
+ sig { returns(T.class_of(Checkoff::ProjectSelectors)) }
8577
+ def class_under_test; end
8578
+
8579
+ sig { returns(T.untyped) }
8580
+ def respond_like_instance_of; end
8581
+
8582
+ sig { returns(T.untyped) }
8583
+ def respond_like; end
8584
+ end
8585
+
8586
+ class TestSectionSelectors < ClassTest
8587
+ extend Forwardable
8588
+
8589
+ sig { returns(Checkoff::SectionSelectors) }
8590
+ def get_test_object; end
8591
+
8592
+ sig { void }
8593
+ def test_filter_via_ends_with_milestone_empty; end
8594
+
8595
+ sig { void }
8596
+ def expect_client_tasks_pulled; end
8597
+
8598
+ sig { returns(T.untyped) }
8599
+ def expect_section_gid_pulled; end
8600
+
8601
+ sig { returns(T.untyped) }
8602
+ def mock_filter_via_ends_with_milestone_true; end
8603
+
8604
+ sig { void }
8605
+ def test_filter_via_ends_with_milestone_true; end
8606
+
8607
+ sig { void }
8608
+ def test_bogus_raises; end
8609
+
8610
+ sig { void }
8611
+ def test_filter_via_has_tasks_false; end
8612
+
8613
+ sig { returns(T.class_of(Checkoff::SectionSelectors)) }
8614
+ def class_under_test; end
8615
+ end
8616
+
8617
+ class TestTaskHashes < ClassTest
8618
+ MEMBER_OF_SECTION_A_IN_PROJECT_1 = T.let({
8619
+ 'section' => {
8620
+ 'gid' => 'section_a_gid',
8621
+ 'name' => 'section_a_name',
8622
+ },
8623
+ 'project' => {
8624
+ 'gid' => 'project_1_gid',
8625
+ 'name' => 'project_1_name',
8626
+ },
8627
+ }.freeze, T.untyped)
8628
+ TASK_A_RAW_HASH = T.let({
8629
+ 'name' => 'a',
8630
+ 'custom_fields' => [
8631
+ {
8632
+ 'name' => 'custom_field_x',
8633
+ 'display_value' => 'foo',
8634
+ },
8635
+ ],
8636
+ 'memberships' => [
8637
+ MEMBER_OF_SECTION_A_IN_PROJECT_1,
8638
+ ],
8639
+ }.freeze, T.untyped)
8640
+ TASK_A_HASH = T.let({
8641
+ 'name' => 'a',
8642
+ 'task' => 'a',
8643
+ 'custom_fields' => [
8644
+ { 'name' => 'custom_field_x', 'display_value' => 'foo' },
8645
+ ],
8646
+ 'memberships' => [
8647
+ MEMBER_OF_SECTION_A_IN_PROJECT_1,
8648
+ ],
8649
+ 'unwrapped' => {
8650
+ 'custom_fields' => {
8651
+ 'custom_field_x' => {
8652
+ 'name' => 'custom_field_x',
8653
+ 'display_value' => 'foo',
8654
+ },
8655
+ },
8656
+ 'membership_by_section_gid' => {
8657
+ 'section_a_gid' => MEMBER_OF_SECTION_A_IN_PROJECT_1,
8658
+ },
8659
+ 'membership_by_section_name' => {
8660
+ 'section_a_name' => MEMBER_OF_SECTION_A_IN_PROJECT_1,
8661
+ },
8662
+ 'membership_by_project_gid' => {
8663
+ 'project_1_gid' => MEMBER_OF_SECTION_A_IN_PROJECT_1,
8664
+ },
8665
+ 'membership_by_project_name' => {
8666
+ 'project_1_name' => MEMBER_OF_SECTION_A_IN_PROJECT_1,
8667
+ },
8668
+ },
8669
+ }.freeze, T.untyped)
8670
+ TASK_B_RAW_HASH = T.let({
8671
+ 'name' => 'b',
8672
+ 'custom_fields' => [
8673
+ {
8674
+ 'name' => 'custom_field_x',
8675
+ 'display_value' => 'bar',
8676
+ },
8677
+ ],
8678
+ }.freeze, T.untyped)
8679
+ TASK_B_HASH = T.let({
8680
+ 'name' => 'b',
8681
+ 'task' => 'b',
8682
+ 'custom_fields' => [
8683
+ { 'name' => 'custom_field_x', 'display_value' => 'bar' },
8684
+ ],
8685
+ 'unwrapped' => {
8686
+ 'custom_fields' => {
8687
+ 'custom_field_x' => { 'name' => 'custom_field_x', 'display_value' => 'bar' },
8688
+ },
8689
+ 'membership_by_section_gid' => {},
8690
+ 'membership_by_section_name' => {},
8691
+ 'membership_by_project_gid' => {},
8692
+ 'membership_by_project_name' => {},
8693
+ },
8694
+ }.freeze, T.untyped)
8695
+
8696
+ sig { returns(T.untyped) }
8697
+ def test_task_a_to_h; end
8698
+
8699
+ sig { returns(T.untyped) }
8700
+ def test_task_b_to_h; end
8701
+
8702
+ sig { returns(T.untyped) }
8703
+ def class_under_test; end
8704
+ end
8705
+
8706
+ class TestTaskTiming < ClassTest
8707
+ sig { returns(T.untyped) }
8708
+ def test_date_or_time_field_by_name_raises_if_unknown_field; end
8709
+
8710
+ sig { returns(T.untyped) }
8711
+ def class_under_test; end
8712
+
8713
+ sig { returns(T.untyped) }
8714
+ def respond_like_instance_of; end
8715
+
8716
+ sig { returns(T.untyped) }
8717
+ def respond_like; end
8718
+ end
8719
+
8720
+ # Test the Checkoff::Internal::ConfigLoader class
8721
+ class TestConfigLoader < Minitest::Test
8722
+ sig { returns(T.untyped) }
8723
+ def mock_yaml_loaded; end
8724
+
8725
+ sig { returns(T.untyped) }
8726
+ def test_requests_from_env_variable_neither_populated; end
8727
+
8728
+ sig { returns(T.untyped) }
8729
+ def test_requests_from_env_variable_if_yaml_not_populated; end
8730
+
8731
+ sig { returns(T.untyped) }
8732
+ def test_defers_to_yaml; end
8733
+ end
8734
+
8735
+ class TestProjectHashes < ClassTest
8736
+ PROJECT_A_RAW_HASH = T.let({
8737
+ 'name' => 'a',
8738
+ 'custom_fields' => [
8739
+ {
8740
+ 'name' => 'custom_field_x',
8741
+ 'display_value' => 'foo',
8742
+ },
8743
+ ],
8744
+ }.freeze, T.untyped)
8745
+ PROJECT_A_HASH = T.let({
8746
+ 'name' => 'a',
8747
+ 'project' => 'a',
8748
+ 'custom_fields' => [
8749
+ { 'name' => 'custom_field_x', 'display_value' => 'foo' },
8750
+ ],
8751
+ 'unwrapped' => {
8752
+ 'custom_fields' => {
8753
+ 'custom_field_x' => {
8754
+ 'name' => 'custom_field_x',
8755
+ 'display_value' => 'foo',
8756
+ },
8757
+ },
8758
+ },
8759
+ }.freeze, T.untyped)
8760
+ PROJECT_B_RAW_HASH = T.let({
8761
+ 'name' => 'b',
8762
+ 'custom_fields' => [
8763
+ {
8764
+ 'name' => 'custom_field_x',
8765
+ 'display_value' => 'bar',
8766
+ },
8767
+ ],
8768
+ }.freeze, T.untyped)
8769
+ PROJECT_B_HASH = T.let({
8770
+ 'name' => 'b',
8771
+ 'project' => 'b',
8772
+ 'custom_fields' => [
8773
+ { 'name' => 'custom_field_x', 'display_value' => 'bar' },
8774
+ ],
8775
+ 'unwrapped' => {
8776
+ 'custom_fields' => {
8777
+ 'custom_field_x' => { 'name' => 'custom_field_x', 'display_value' => 'bar' },
8778
+ },
8779
+ },
8780
+ }.freeze, T.untyped)
8781
+
8782
+ sig { returns(T.untyped) }
8783
+ def test_project_a_to_h; end
8784
+
8785
+ sig { returns(T.untyped) }
8786
+ def test_project_b_to_h; end
8787
+
8788
+ sig { returns(T.untyped) }
8789
+ def test_project_b_to_h_named; end
8790
+
8791
+ sig { returns(T.untyped) }
8792
+ def class_under_test; end
8793
+ end
8794
+
8795
+ class TestProjectTiming < ClassTest
8796
+ extend Forwardable
8797
+
8798
+ sig { returns(T.untyped) }
8799
+ def test_date_or_time_field_by_name_due; end
8800
+
8801
+ sig { returns(T.untyped) }
8802
+ def test_date_or_time_field_by_name_due_nil; end
8803
+
8804
+ sig { returns(T.untyped) }
8805
+ def test_date_or_time_field_by_name_start; end
8806
+
8807
+ sig { returns(T.untyped) }
8808
+ def test_date_or_time_field_by_name_start_nil; end
8809
+
8810
+ sig { returns(T.untyped) }
8811
+ def test_date_or_time_field_by_name_ready; end
8812
+
8813
+ sig { returns(T.untyped) }
8814
+ def test_date_or_time_field_by_name_custom_field; end
8815
+
8816
+ sig { returns(T.untyped) }
8817
+ def test_date_or_time_field_by_name_custom_field_nil; end
8818
+
8819
+ sig { returns(T.untyped) }
8820
+ def test_date_or_time_field_by_name_raises_if_unknown_field; end
8821
+
8822
+ sig { returns(T.untyped) }
8823
+ def test_date_or_time_field_by_name_raises_if_unknown_array_field; end
8824
+
8825
+ sig { returns(T.untyped) }
8826
+ def class_under_test; end
8827
+
8828
+ sig { returns(T.untyped) }
8829
+ def respond_like_instance_of; end
8830
+
8831
+ sig { returns(T.untyped) }
8832
+ def respond_like; end
8833
+ end
8834
+
8835
+ # rubocop:disable Metrics/ClassLength
8836
+ class TestSearchUrlParser < ClassTest
8837
+ sig { returns(Checkoff::Internal::SearchUrl::Parser) }
8838
+ def get_test_object; end
8839
+
8840
+ sig { void }
8841
+ def test_convert_params_1; end
8842
+
8843
+ sig { void }
8844
+ def test_convert_params_2; end
8845
+
8846
+ sig { void }
8847
+ def test_convert_params_3; end
8848
+
8849
+ sig { void }
8850
+ def test_convert_params_4; end
8851
+
8852
+ sig { void }
8853
+ def test_convert_params_5; end
8854
+
8855
+ sig { void }
8856
+ def test_convert_params_6; end
8857
+
8858
+ sig { void }
8859
+ def test_convert_params_7; end
8860
+
8861
+ sig { void }
8862
+ def test_convert_params_8; end
8863
+
8864
+ sig { void }
8865
+ def test_convert_params_9; end
8866
+
8867
+ sig { void }
8868
+ def test_convert_params_10; end
8869
+
8870
+ sig { void }
8871
+ def test_convert_params_11; end
8872
+
8873
+ sig { void }
8874
+ def test_convert_params_12; end
8875
+
8876
+ sig { void }
8877
+ def test_convert_params_13; end
8878
+
8879
+ sig { void }
8880
+ def test_convert_params_14; end
8881
+
8882
+ sig { void }
8883
+ def test_convert_params_15; end
8884
+
8885
+ sig { void }
8886
+ def test_convert_params_16; end
8887
+
8888
+ sig { void }
8889
+ def test_convert_params_17; end
8890
+
8891
+ sig { void }
8892
+ def test_convert_params_18; end
8893
+
8894
+ sig { void }
8895
+ def test_convert_params_19; end
8896
+
8897
+ sig { void }
8898
+ def test_convert_params_20; end
8899
+
8900
+ sig { void }
8901
+ def test_convert_params_21; end
8902
+
8903
+ sig { void }
8904
+ def test_convert_params_22; end
8905
+
8906
+ sig { void }
8907
+ def test_convert_params_23; end
8908
+
8909
+ sig { void }
8910
+ def test_convert_params_24; end
8911
+
8912
+ sig { void }
8913
+ def test_convert_params_25; end
8914
+
8915
+ sig { void }
8916
+ def test_convert_params_26; end
8917
+
8918
+ sig { void }
8919
+ def test_convert_params_27; end
8920
+
8921
+ sig { void }
8922
+ def test_convert_params_28; end
8923
+
8924
+ sig { void }
8925
+ def test_convert_params_29; end
8926
+
8927
+ sig { void }
8928
+ def test_convert_params_30; end
8929
+
8930
+ sig { void }
8931
+ def test_convert_params_31; end
8932
+
8933
+ sig { void }
8934
+ def test_convert_params_32; end
8935
+
8936
+ sig { void }
8937
+ def test_convert_params_33; end
8938
+
8939
+ sig { void }
8940
+ def test_convert_params_34; end
8941
+
8942
+ sig { void }
8943
+ def test_convert_params_35; end
8944
+
8945
+ sig { void }
8946
+ def test_convert_params_36; end
8947
+
8948
+ sig { void }
8949
+ def test_convert_params_37; end
8950
+
8951
+ sig { void }
8952
+ def test_convert_params_38; end
8953
+
8954
+ sig { void }
8955
+ def test_convert_params_39; end
8956
+
8957
+ sig { void }
8958
+ def test_convert_params_40; end
8959
+
8960
+ sig { void }
8961
+ def test_convert_params_41; end
8962
+
8963
+ sig { void }
8964
+ def test_convert_params_42; end
8965
+
8966
+ sig { void }
8967
+ def test_convert_params_43; end
8968
+
8969
+ sig { void }
8970
+ def test_convert_params_44; end
8971
+
8972
+ sig { void }
8973
+ def test_convert_params_45; end
8974
+
8975
+ sig { returns(T.class_of(Checkoff::Internal::SearchUrl::Parser)) }
8976
+ def class_under_test; end
8977
+
8978
+ sig { void }
8979
+ def test_convert_params_46; end
8980
+
8981
+ sig { void }
8982
+ def test_convert_params_47; end
8983
+
8984
+ sig { void }
8985
+ def test_convert_params_48; end
8986
+ end
8987
+
8988
+ class TestAsanaEventFilter < ClassTest
8989
+ extend Forwardable
8990
+ TASK_NAME_CHANGED_EVENT = T.let({
8991
+ 'action' => 'changed',
8992
+ 'created_at' => '2024-01-16T20:10:27.783Z',
8993
+ 'change' => {
8994
+ 'field' => 'name',
8995
+ 'action' => 'changed',
8996
+ },
8997
+ 'resource' => {
8998
+ 'gid' => '456',
8999
+ 'resource_type' => 'task',
9000
+ 'resource_subtype' => 'default_task',
9001
+ },
9002
+ 'user' => {
9003
+ 'gid' => '123',
9004
+ 'resource_type' => 'user',
9005
+ },
9006
+ }.freeze, T.untyped)
9007
+ CUSTOM_FIELD_CHANGED_EVENT = T.let({
9008
+ 'action' => 'changed',
9009
+ 'created_at' => '2023-11-23T18:00:00.271Z',
9010
+ 'change' => {
9011
+ 'field' => 'custom_fields',
9012
+ 'action' => 'changed',
9013
+ 'new_value' => {
9014
+ 'gid' => '12',
9015
+ 'resource_type' => 'custom_field',
9016
+ 'resource_subtype' => 'enum',
9017
+ 'enum_value' => {
9018
+ 'gid' => '34',
9019
+ 'resource_type' => 'enum_option',
9020
+ },
9021
+ },
9022
+ },
9023
+ 'resource' => {
9024
+ 'gid' => '56',
9025
+ 'resource_type' => 'task',
9026
+ 'resource_subtype' => 'default_task',
9027
+ },
9028
+ 'user' => {
9029
+ 'gid' => '78',
9030
+ 'resource_type' => 'user',
9031
+ },
9032
+ }.freeze, T.untyped)
9033
+ TASK_REMOVED_FROM_SECTION_EVENT = T.let({
9034
+ 'action' => 'removed',
9035
+ 'created_at' => '2023-11-22T21:42:14.029Z',
9036
+ 'parent' => {
9037
+ 'gid' => '90',
9038
+ 'resource_type' => 'section',
9039
+ },
9040
+ 'resource' => {
9041
+ 'gid' => '1',
9042
+ 'resource_type' => 'task',
9043
+ 'resource_subtype' => 'default_task',
9044
+ },
9045
+ 'user' => {
9046
+ 'gid' => '78',
9047
+ 'resource_type' => 'user',
9048
+ },
9049
+ }.freeze, T.untyped)
9050
+ TASK_COMPLETED_EVENT = T.let({
9051
+ 'user' => {
9052
+ 'gid' => '123',
9053
+ 'resource_type' => 'user',
9054
+ },
9055
+ 'created_at' => '2024-01-13T20:51:41.806Z',
9056
+ 'action' => 'changed',
9057
+ 'resource' => {
9058
+ 'gid' => '456',
9059
+ 'resource_type' => 'task',
9060
+ 'resource_subtype' => 'default_task',
9061
+ },
9062
+ 'parent' => nil,
9063
+ 'change' => { 'field' => 'completed', 'action' => 'changed' },
9064
+ }.freeze, T.untyped)
9065
+ TASK_COMPLETED_EVENT_2 = T.let({
9066
+ 'user' => {
9067
+ 'gid' => '123',
9068
+ 'resource_type' => 'user',
9069
+ },
9070
+ 'created_at' => '2024-01-15T12:34:45.332Z',
9071
+ 'action' => 'changed',
9072
+ 'resource' => {
9073
+ 'gid' => '456',
9074
+ 'resource_type' => 'task',
9075
+ 'resource_subtype' => 'default_task',
9076
+ },
9077
+ 'change' => {
9078
+ 'field' => 'completed',
9079
+ 'action' => 'changed',
9080
+ },
9081
+ }.freeze, T.untyped)
9082
+
9083
+ sig { returns(T.untyped) }
9084
+ def test_matches_nil_filters_true; end
9085
+
9086
+ sig { returns(T.untyped) }
9087
+ def test_matches_zero_filters_false; end
9088
+
9089
+ sig { returns(T.untyped) }
9090
+ def test_matches_on_resource_type_true; end
9091
+
9092
+ sig { returns(T.untyped) }
9093
+ def test_matches_on_resource_subtype_true; end
9094
+
9095
+ sig { returns(T.untyped) }
9096
+ def test_matches_on_action_true; end
9097
+
9098
+ sig { returns(T.untyped) }
9099
+ def test_matches_on_action_false; end
9100
+
9101
+ sig { returns(T.untyped) }
9102
+ def test_fetched_section_gid; end
9103
+
9104
+ sig { returns(T.untyped) }
9105
+ def test_matches_on_fields_true; end
9106
+
9107
+ sig { params(gid: T.untyped, fields: T.untyped, task_obj: T.untyped).returns(T.untyped) }
9108
+ def expect_task_fetched(gid, fields, task_obj); end
9109
+
9110
+ sig { returns(T.untyped) }
9111
+ def test_task_completed_event_true; end
9112
+
9113
+ sig { returns(T.untyped) }
9114
+ def test_matches_on_parent_gid_true; end
9115
+
9116
+ sig { returns(T.untyped) }
9117
+ def test_matches_on_bad_key_raises; end
9118
+
9119
+ sig { returns(T.untyped) }
9120
+ def class_under_test; end
9121
+
9122
+ sig { returns(T.untyped) }
9123
+ def respond_like_instance_of; end
9124
+
9125
+ sig { returns(T.untyped) }
9126
+ def respond_like; end
9127
+ end