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