checkoff 0.245.0 → 0.247.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.
- checksums.yaml +4 -4
- data/lib/checkoff/internal/selector_classes/task.rb +6 -2
- data/lib/checkoff/sections.rb +4 -3
- data/lib/checkoff/tasks.rb +4 -5
- data/lib/checkoff/timelines.rb +19 -12
- data/lib/checkoff/timing.rb +3 -2
- data/lib/checkoff/version.rb +1 -1
- data/rbi/checkoff.rbi +97 -96
- data/sig/checkoff.rbs +68 -67
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4a4767930eda52d13e8d437d7cd2aa33dd4af3f7e402ce12fb60d3371f955742
|
|
4
|
+
data.tar.gz: c95a95f0a59e48fee37bc6a43a461a2c5a2b60f73314b1e799c23d3e466be6b1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '098a082874fa5ea130e0fceadad00b1d5f0a6c78e66ee53d351f90bc9b5b014a5958ae440a26472483a0742affd97325e3365cd2780f4afb6f3507654278a910'
|
|
7
|
+
data.tar.gz: 4a2c87a47f0f7767154d9b0ff1474892669832c1e99893d6f28b26d750a2e6a79854076e5b30d0d3daa819ec4d297d11167bea0349038d551f2a5d12211ce5ca
|
|
@@ -190,9 +190,12 @@ module Checkoff
|
|
|
190
190
|
|
|
191
191
|
# @param task [Asana::Resources::Task]
|
|
192
192
|
# @return [Boolean]
|
|
193
|
+
# CI quality (pipeline 1902): "return type could not be inferred" on modified lines
|
|
194
|
+
# after 7eeb5b1 removed @sg-ignore. Local overcommit may report "Unneeded @sg-ignore";
|
|
195
|
+
# `== true` alone did not satisfy the CI overcommit Solargraph hook.
|
|
193
196
|
# @sg-ignore
|
|
194
197
|
def evaluate(task)
|
|
195
|
-
task.assignee.nil?
|
|
198
|
+
task.assignee.nil? == true
|
|
196
199
|
end
|
|
197
200
|
end
|
|
198
201
|
|
|
@@ -206,9 +209,10 @@ module Checkoff
|
|
|
206
209
|
|
|
207
210
|
# @param task [Asana::Resources::Task]
|
|
208
211
|
# @return [Boolean]
|
|
212
|
+
# Same CI/local Solargraph drift as UnassignedPFunctionEvaluator#evaluate (pipeline 1902).
|
|
209
213
|
# @sg-ignore
|
|
210
214
|
def evaluate(task)
|
|
211
|
-
!task.due_at.nil?
|
|
215
|
+
!(task.due_at.nil? && task.due_on.nil?)
|
|
212
216
|
end
|
|
213
217
|
end
|
|
214
218
|
|
data/lib/checkoff/sections.rb
CHANGED
|
@@ -283,12 +283,13 @@ module Checkoff
|
|
|
283
283
|
# @return [void]
|
|
284
284
|
def file_task_by_section(by_section, task, project_gid)
|
|
285
285
|
membership = task.memberships.find do |m|
|
|
286
|
-
|
|
287
|
-
T.cast(
|
|
286
|
+
membership_hash = T.unsafe(m)
|
|
287
|
+
T.cast(membership_hash['project'], T::Hash[String, T.untyped])['gid'] == project_gid
|
|
288
288
|
end
|
|
289
289
|
raise "Could not find task in project_gid #{project_gid}: #{task}" if membership.nil?
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
membership_data = T.unsafe(membership)
|
|
292
|
+
section = T.cast(membership_data['section'], T::Hash[String, T.untyped])
|
|
292
293
|
section_name = T.cast(section['name'], String)
|
|
293
294
|
|
|
294
295
|
# @type [String, nil]
|
data/lib/checkoff/tasks.rb
CHANGED
|
@@ -165,7 +165,7 @@ module Checkoff
|
|
|
165
165
|
all_options = projects.task_options(extra_fields:,
|
|
166
166
|
only_uncompleted:)
|
|
167
167
|
# @type [Hash]
|
|
168
|
-
options = all_options.fetch(:options
|
|
168
|
+
options = all_options.fetch(:options) { {} }
|
|
169
169
|
options[:completed_since] = all_options[:completed_since] unless all_options[:completed_since].nil?
|
|
170
170
|
client.tasks.find_by_id(task_gid, options:)
|
|
171
171
|
rescue Asana::Errors::NotFound => e
|
|
@@ -292,6 +292,7 @@ module Checkoff
|
|
|
292
292
|
# @param portfolio_name [String]
|
|
293
293
|
# @param workspace_name [String]
|
|
294
294
|
# @return [Boolean]
|
|
295
|
+
# CI quality (pipeline 1902): "in_portfolio_named? return type could not be inferred".
|
|
295
296
|
# @sg-ignore
|
|
296
297
|
def in_portfolio_named?(task,
|
|
297
298
|
portfolio_name,
|
|
@@ -300,10 +301,8 @@ module Checkoff
|
|
|
300
301
|
task.memberships.any? do |membership|
|
|
301
302
|
m = T.cast(membership, T::Hash[String, T.untyped])
|
|
302
303
|
project_gid = T.cast(m.fetch('project'), T::Hash[String, T.untyped]).fetch('gid')
|
|
303
|
-
portfolio_projects.any?
|
|
304
|
-
|
|
305
|
-
end
|
|
306
|
-
end
|
|
304
|
+
portfolio_projects.any? { |portfolio_project| portfolio_project.gid == project_gid }
|
|
305
|
+
end == true
|
|
307
306
|
end
|
|
308
307
|
|
|
309
308
|
# True if the task is in a project which is in the given portfolio
|
data/lib/checkoff/timelines.rb
CHANGED
|
@@ -13,7 +13,7 @@ require_relative 'clients'
|
|
|
13
13
|
|
|
14
14
|
module Checkoff
|
|
15
15
|
# Manages timelines of dependent tasks with dates and milestones
|
|
16
|
-
class Timelines
|
|
16
|
+
class Timelines # rubocop:disable Metrics/ClassLength
|
|
17
17
|
# @!parse
|
|
18
18
|
# extend CacheMethod::ClassMethods
|
|
19
19
|
|
|
@@ -65,7 +65,6 @@ module Checkoff
|
|
|
65
65
|
# @param task [Asana::Resources::Task]
|
|
66
66
|
# @param limit_to_portfolio_name [String, nil]
|
|
67
67
|
# @return [Boolean]
|
|
68
|
-
# @sg-ignore
|
|
69
68
|
def last_task_milestone_depends_on_this_task?(task, limit_to_portfolio_name: nil)
|
|
70
69
|
unless limit_to_portfolio_name.nil?
|
|
71
70
|
limit_to_projects = @portfolios.projects_in_portfolio(@workspaces.default_workspace.name,
|
|
@@ -73,15 +72,19 @@ module Checkoff
|
|
|
73
72
|
end
|
|
74
73
|
|
|
75
74
|
all_dependent_task_gids = nil
|
|
76
|
-
|
|
75
|
+
# @type [Array<Hash{String => Object}>]
|
|
76
|
+
memberships = task.memberships
|
|
77
|
+
memberships.all? do |membership_data|
|
|
78
|
+
# @type [Hash{String => Object}]
|
|
79
|
+
md = membership_data
|
|
77
80
|
unless limit_to_portfolio_name.nil?
|
|
78
|
-
# @
|
|
79
|
-
|
|
81
|
+
# @type [Hash{String => Object}]
|
|
82
|
+
project_data = md.fetch('project')
|
|
83
|
+
project_gid = project_data.fetch('gid')
|
|
80
84
|
next true unless limit_to_projects.map(&:gid).include? project_gid
|
|
81
85
|
end
|
|
82
|
-
# @
|
|
83
|
-
section_data =
|
|
84
|
-
# @sg-ignore
|
|
86
|
+
# @type [Hash{String => Object}]
|
|
87
|
+
section_data = md.fetch('section')
|
|
85
88
|
section_gid = section_data.fetch('gid')
|
|
86
89
|
|
|
87
90
|
last_milestone = last_milestone_in_section(section_gid)
|
|
@@ -100,7 +103,6 @@ module Checkoff
|
|
|
100
103
|
# @param task [Asana::Resources::Task]
|
|
101
104
|
# @param limit_to_portfolio_name [String, nil]
|
|
102
105
|
# @return [Boolean]
|
|
103
|
-
# @sg-ignore
|
|
104
106
|
def any_milestone_depends_on_this_task?(task, limit_to_portfolio_name: nil)
|
|
105
107
|
unless limit_to_portfolio_name.nil?
|
|
106
108
|
limit_to_projects = @portfolios.projects_in_portfolio(@workspaces.default_workspace.name,
|
|
@@ -108,10 +110,15 @@ module Checkoff
|
|
|
108
110
|
end
|
|
109
111
|
|
|
110
112
|
all_dependent_milestones = nil
|
|
111
|
-
|
|
113
|
+
# @type [Array<Hash{String => Object}>]
|
|
114
|
+
memberships = task.memberships
|
|
115
|
+
memberships.all? do |membership_data|
|
|
116
|
+
# @type [Hash{String => Object}]
|
|
117
|
+
md = membership_data
|
|
112
118
|
unless limit_to_portfolio_name.nil?
|
|
113
|
-
# @
|
|
114
|
-
|
|
119
|
+
# @type [Hash{String => Object}]
|
|
120
|
+
project_data = md.fetch('project')
|
|
121
|
+
project_gid = project_data.fetch('gid')
|
|
115
122
|
next true unless limit_to_projects.map(&:gid).include? project_gid
|
|
116
123
|
end
|
|
117
124
|
|
data/lib/checkoff/timing.rb
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
require 'date'
|
|
7
7
|
require 'time'
|
|
8
8
|
require 'active_support'
|
|
9
|
+
require 'active_support/core_ext/integer/time'
|
|
9
10
|
# require 'active_support/time'
|
|
10
11
|
require 'forwardable'
|
|
11
12
|
require 'cache_method'
|
|
@@ -169,9 +170,9 @@ module Checkoff
|
|
|
169
170
|
|
|
170
171
|
# @param num_days [Integer]
|
|
171
172
|
#
|
|
172
|
-
# @return [
|
|
173
|
+
# @return [ActiveSupport::TimeWithZone]
|
|
173
174
|
def n_days_from_now(num_days)
|
|
174
|
-
|
|
175
|
+
num_days.days.since(@now_getter.now)
|
|
175
176
|
end
|
|
176
177
|
|
|
177
178
|
# @param num_days [Integer]
|
data/lib/checkoff/version.rb
CHANGED
data/rbi/checkoff.rbi
CHANGED
|
@@ -75,7 +75,7 @@ module Overcommit
|
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
module Checkoff
|
|
78
|
-
VERSION = '0.
|
|
78
|
+
VERSION = '0.247.0'
|
|
79
79
|
|
|
80
80
|
class Attachments
|
|
81
81
|
include Logging
|
|
@@ -2442,7 +2442,7 @@ end
|
|
|
2442
2442
|
# typed: ignore
|
|
2443
2443
|
# Command-line and gem client for Asana (unofficial)
|
|
2444
2444
|
module Checkoff
|
|
2445
|
-
VERSION = T.let('0.
|
|
2445
|
+
VERSION = T.let('0.247.0', T.untyped)
|
|
2446
2446
|
|
|
2447
2447
|
# Move tasks from one place to another
|
|
2448
2448
|
class MvSubcommand
|
|
@@ -3027,6 +3027,7 @@ module Checkoff
|
|
|
3027
3027
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
3028
3028
|
# True if the task is in a project which is in the given portfolio
|
|
3029
3029
|
#
|
|
3030
|
+
# CI quality (pipeline 1902): "in_portfolio_named? return type could not be inferred".
|
|
3030
3031
|
# @sg-ignore
|
|
3031
3032
|
#
|
|
3032
3033
|
# _@param_ `task`
|
|
@@ -3314,7 +3315,7 @@ module Checkoff
|
|
|
3314
3315
|
def now_or_before?(date_or_time); end
|
|
3315
3316
|
|
|
3316
3317
|
# _@param_ `num_days`
|
|
3317
|
-
sig { params(num_days: Integer).returns(
|
|
3318
|
+
sig { params(num_days: Integer).returns(ActiveSupport::TimeWithZone) }
|
|
3318
3319
|
def n_days_from_now(num_days); end
|
|
3319
3320
|
|
|
3320
3321
|
# @sg-ignore
|
|
@@ -4133,8 +4134,6 @@ module Checkoff
|
|
|
4133
4134
|
def task_dependent_on_previous_section_last_milestone?(task, limit_to_portfolio_gid: nil); end
|
|
4134
4135
|
|
|
4135
4136
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
4136
|
-
# @sg-ignore
|
|
4137
|
-
#
|
|
4138
4137
|
# _@param_ `task`
|
|
4139
4138
|
#
|
|
4140
4139
|
# _@param_ `limit_to_portfolio_name`
|
|
@@ -4142,8 +4141,6 @@ module Checkoff
|
|
|
4142
4141
|
def last_task_milestone_depends_on_this_task?(task, limit_to_portfolio_name: nil); end
|
|
4143
4142
|
|
|
4144
4143
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
4145
|
-
# @sg-ignore
|
|
4146
|
-
#
|
|
4147
4144
|
# _@param_ `task`
|
|
4148
4145
|
#
|
|
4149
4146
|
# _@param_ `limit_to_portfolio_name`
|
|
@@ -5965,6 +5962,9 @@ module Checkoff
|
|
|
5965
5962
|
def matches?; end
|
|
5966
5963
|
|
|
5967
5964
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
5965
|
+
# CI quality (pipeline 1902): "return type could not be inferred" on modified lines
|
|
5966
|
+
# after 7eeb5b1 removed @sg-ignore. Local overcommit may report "Unneeded @sg-ignore";
|
|
5967
|
+
# `== true` alone did not satisfy the CI overcommit Solargraph hook.
|
|
5968
5968
|
# @sg-ignore
|
|
5969
5969
|
#
|
|
5970
5970
|
# _@param_ `task`
|
|
@@ -5980,6 +5980,7 @@ module Checkoff
|
|
|
5980
5980
|
def matches?; end
|
|
5981
5981
|
|
|
5982
5982
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
5983
|
+
# Same CI/local Solargraph drift as UnassignedPFunctionEvaluator#evaluate (pipeline 1902).
|
|
5983
5984
|
# @sg-ignore
|
|
5984
5985
|
#
|
|
5985
5986
|
# _@param_ `task`
|
|
@@ -6131,9 +6132,6 @@ module Checkoff
|
|
|
6131
6132
|
end
|
|
6132
6133
|
def initialize(selector:, tasks:, timelines:, custom_fields:, **_kwargs); end
|
|
6133
6134
|
|
|
6134
|
-
sig { returns([Symbol, T::Array[T.untyped]]) }
|
|
6135
|
-
attr_reader :selector
|
|
6136
|
-
|
|
6137
6135
|
sig { returns(Checkoff::Tasks) }
|
|
6138
6136
|
attr_reader :tasks
|
|
6139
6137
|
|
|
@@ -6142,6 +6140,9 @@ module Checkoff
|
|
|
6142
6140
|
|
|
6143
6141
|
sig { returns(Checkoff::CustomFields) }
|
|
6144
6142
|
attr_reader :custom_fields
|
|
6143
|
+
|
|
6144
|
+
sig { returns([Symbol, T::Array[T.untyped]]) }
|
|
6145
|
+
attr_reader :selector
|
|
6145
6146
|
end
|
|
6146
6147
|
end
|
|
6147
6148
|
|
|
@@ -7129,6 +7130,15 @@ class TestTasks < BaseAsana
|
|
|
7129
7130
|
sig { void }
|
|
7130
7131
|
def test_in_portfolio_more_than_once; end
|
|
7131
7132
|
|
|
7133
|
+
sig { void }
|
|
7134
|
+
def test_in_portfolio_more_than_once_true; end
|
|
7135
|
+
|
|
7136
|
+
sig { void }
|
|
7137
|
+
def test_gid_for_task; end
|
|
7138
|
+
|
|
7139
|
+
sig { void }
|
|
7140
|
+
def test_gid_for_task_not_found; end
|
|
7141
|
+
|
|
7132
7142
|
sig { returns(T.untyped) }
|
|
7133
7143
|
def test_task_to_h_delegates; end
|
|
7134
7144
|
|
|
@@ -7170,15 +7180,6 @@ class TestTasks < BaseAsana
|
|
|
7170
7180
|
|
|
7171
7181
|
sig { void }
|
|
7172
7182
|
def class_under_test; end
|
|
7173
|
-
|
|
7174
|
-
sig { void }
|
|
7175
|
-
def test_in_portfolio_more_than_once_true; end
|
|
7176
|
-
|
|
7177
|
-
sig { void }
|
|
7178
|
-
def test_gid_for_task; end
|
|
7179
|
-
|
|
7180
|
-
sig { void }
|
|
7181
|
-
def test_gid_for_task_not_found; end
|
|
7182
7183
|
end
|
|
7183
7184
|
|
|
7184
7185
|
# Test the Checkoff::CLI class with mv subcommand
|
|
@@ -7906,19 +7907,19 @@ class TestTimelines < ClassTest
|
|
|
7906
7907
|
def test_init; end
|
|
7907
7908
|
|
|
7908
7909
|
sig { void }
|
|
7909
|
-
def
|
|
7910
|
+
def test_any_milestone_depends_on_this_task_false; end
|
|
7910
7911
|
|
|
7911
7912
|
sig { void }
|
|
7912
|
-
def
|
|
7913
|
+
def test_any_milestone_depends_on_this_task_true; end
|
|
7913
7914
|
|
|
7914
7915
|
sig { void }
|
|
7915
|
-
def
|
|
7916
|
+
def class_under_test; end
|
|
7916
7917
|
|
|
7917
7918
|
sig { void }
|
|
7918
|
-
def
|
|
7919
|
+
def respond_like_instance_of; end
|
|
7919
7920
|
|
|
7920
7921
|
sig { void }
|
|
7921
|
-
def
|
|
7922
|
+
def respond_like; end
|
|
7922
7923
|
end
|
|
7923
7924
|
|
|
7924
7925
|
class TestPortfolios < ClassTest
|
|
@@ -8022,15 +8023,6 @@ class TestAttachments < ClassTest
|
|
|
8022
8023
|
sig { void }
|
|
8023
8024
|
def test_create_attachment_from_url; end
|
|
8024
8025
|
|
|
8025
|
-
sig { void }
|
|
8026
|
-
def class_under_test; end
|
|
8027
|
-
|
|
8028
|
-
sig { void }
|
|
8029
|
-
def respond_like_instance_of; end
|
|
8030
|
-
|
|
8031
|
-
sig { void }
|
|
8032
|
-
def respond_like; end
|
|
8033
|
-
|
|
8034
8026
|
# _@param_ `gid`
|
|
8035
8027
|
#
|
|
8036
8028
|
# _@param_ `url`
|
|
@@ -8042,6 +8034,15 @@ class TestAttachments < ClassTest
|
|
|
8042
8034
|
|
|
8043
8035
|
sig { void }
|
|
8044
8036
|
def test_run; end
|
|
8037
|
+
|
|
8038
|
+
sig { void }
|
|
8039
|
+
def class_under_test; end
|
|
8040
|
+
|
|
8041
|
+
sig { void }
|
|
8042
|
+
def respond_like_instance_of; end
|
|
8043
|
+
|
|
8044
|
+
sig { void }
|
|
8045
|
+
def respond_like; end
|
|
8045
8046
|
end
|
|
8046
8047
|
|
|
8047
8048
|
# double to inject cache_method, pretending to be cache_method gem
|
|
@@ -8325,15 +8326,6 @@ class TestTaskSearches < ClassTest
|
|
|
8325
8326
|
sig { void }
|
|
8326
8327
|
def test_as_cache_key; end
|
|
8327
8328
|
|
|
8328
|
-
sig { void }
|
|
8329
|
-
def class_under_test; end
|
|
8330
|
-
|
|
8331
|
-
sig { void }
|
|
8332
|
-
def respond_like_instance_of; end
|
|
8333
|
-
|
|
8334
|
-
sig { void }
|
|
8335
|
-
def respond_like; end
|
|
8336
|
-
|
|
8337
8329
|
sig { void }
|
|
8338
8330
|
def test_raw_task_search_without_selector; end
|
|
8339
8331
|
|
|
@@ -8343,6 +8335,15 @@ class TestTaskSearches < ClassTest
|
|
|
8343
8335
|
|
|
8344
8336
|
sig { void }
|
|
8345
8337
|
def test_raw_task_search_paginates_when_full_page; end
|
|
8338
|
+
|
|
8339
|
+
sig { void }
|
|
8340
|
+
def class_under_test; end
|
|
8341
|
+
|
|
8342
|
+
sig { void }
|
|
8343
|
+
def respond_like_instance_of; end
|
|
8344
|
+
|
|
8345
|
+
sig { void }
|
|
8346
|
+
def respond_like; end
|
|
8346
8347
|
end
|
|
8347
8348
|
|
|
8348
8349
|
# rubocop:disable Metrics/ClassLength
|
|
@@ -8581,6 +8582,12 @@ class TestTaskSelectors < ClassTest
|
|
|
8581
8582
|
sig { returns(T.untyped) }
|
|
8582
8583
|
def test_filter_via_task_selector_in_project_named_true; end
|
|
8583
8584
|
|
|
8585
|
+
sig { returns(T.untyped) }
|
|
8586
|
+
def test_filter_via_task_selector_in_section_named_false; end
|
|
8587
|
+
|
|
8588
|
+
sig { returns(T.untyped) }
|
|
8589
|
+
def test_filter_via_task_selector_in_section_named_true; end
|
|
8590
|
+
|
|
8584
8591
|
sig { returns(T.untyped) }
|
|
8585
8592
|
def test_dependent_on_previous_section_last_milestone; end
|
|
8586
8593
|
|
|
@@ -8596,15 +8603,6 @@ class TestTaskSelectors < ClassTest
|
|
|
8596
8603
|
sig { void }
|
|
8597
8604
|
def test_last_task_milestone_does_not_depend_on_this_task; end
|
|
8598
8605
|
|
|
8599
|
-
sig { void }
|
|
8600
|
-
def respond_like_instance_of; end
|
|
8601
|
-
|
|
8602
|
-
sig { void }
|
|
8603
|
-
def respond_like; end
|
|
8604
|
-
|
|
8605
|
-
sig { returns(T.class_of(Checkoff::TaskSelectors)) }
|
|
8606
|
-
def class_under_test; end
|
|
8607
|
-
|
|
8608
8606
|
sig { void }
|
|
8609
8607
|
def test_in_a_real_project_true; end
|
|
8610
8608
|
|
|
@@ -8629,11 +8627,49 @@ class TestTaskSelectors < ClassTest
|
|
|
8629
8627
|
sig { void }
|
|
8630
8628
|
def test_no_milestone_depends_on_this_task_true; end
|
|
8631
8629
|
|
|
8632
|
-
sig {
|
|
8633
|
-
def
|
|
8630
|
+
sig { void }
|
|
8631
|
+
def respond_like_instance_of; end
|
|
8634
8632
|
|
|
8635
|
-
sig {
|
|
8636
|
-
def
|
|
8633
|
+
sig { void }
|
|
8634
|
+
def respond_like; end
|
|
8635
|
+
|
|
8636
|
+
sig { returns(T.class_of(Checkoff::TaskSelectors)) }
|
|
8637
|
+
def class_under_test; end
|
|
8638
|
+
end
|
|
8639
|
+
|
|
8640
|
+
# Test the Checkoff::ViewSubcommand class used in CLI processing
|
|
8641
|
+
class TestViewSubcommand < ClassTest
|
|
8642
|
+
extend Forwardable
|
|
8643
|
+
|
|
8644
|
+
sig { returns(String) }
|
|
8645
|
+
def task_name; end
|
|
8646
|
+
|
|
8647
|
+
sig { returns(String) }
|
|
8648
|
+
def due_at_value; end
|
|
8649
|
+
|
|
8650
|
+
sig { void }
|
|
8651
|
+
def expect_task_lookup; end
|
|
8652
|
+
|
|
8653
|
+
sig { void }
|
|
8654
|
+
def stub_task_due_fields; end
|
|
8655
|
+
|
|
8656
|
+
sig { void }
|
|
8657
|
+
def test_run_on_task; end
|
|
8658
|
+
|
|
8659
|
+
sig { void }
|
|
8660
|
+
def test_run_on_task_not_found; end
|
|
8661
|
+
|
|
8662
|
+
sig { params(clazz: T.untyped).returns(Checkoff::ViewSubcommand) }
|
|
8663
|
+
def create_object(clazz = class_under_test); end
|
|
8664
|
+
|
|
8665
|
+
sig { returns(T.class_of(Checkoff::ViewSubcommand)) }
|
|
8666
|
+
def class_under_test; end
|
|
8667
|
+
|
|
8668
|
+
sig { void }
|
|
8669
|
+
def respond_like_instance_of; end
|
|
8670
|
+
|
|
8671
|
+
sig { void }
|
|
8672
|
+
def respond_like; end
|
|
8637
8673
|
end
|
|
8638
8674
|
|
|
8639
8675
|
class TestLogging < Minitest::Test
|
|
@@ -8953,6 +8989,12 @@ class TestSearchUrlParser < ClassTest
|
|
|
8953
8989
|
sig { returns(Checkoff::Internal::SearchUrl::Parser) }
|
|
8954
8990
|
def get_test_object; end
|
|
8955
8991
|
|
|
8992
|
+
# Ruby 3.4+ Hash#inspect inserts spaces around =>; normalize for assertions.
|
|
8993
|
+
#
|
|
8994
|
+
# _@param_ `message`
|
|
8995
|
+
sig { params(message: String).returns(String) }
|
|
8996
|
+
def normalize_error_message(message); end
|
|
8997
|
+
|
|
8956
8998
|
sig { void }
|
|
8957
8999
|
def test_convert_params_1; end
|
|
8958
9000
|
|
|
@@ -9099,12 +9141,6 @@ class TestSearchUrlParser < ClassTest
|
|
|
9099
9141
|
|
|
9100
9142
|
sig { returns(T.class_of(Checkoff::Internal::SearchUrl::Parser)) }
|
|
9101
9143
|
def class_under_test; end
|
|
9102
|
-
|
|
9103
|
-
# Ruby 3.4+ Hash#inspect inserts spaces around =>; normalize for assertions.
|
|
9104
|
-
#
|
|
9105
|
-
# _@param_ `message`
|
|
9106
|
-
sig { params(message: String).returns(String) }
|
|
9107
|
-
def normalize_error_message(message); end
|
|
9108
9144
|
end
|
|
9109
9145
|
|
|
9110
9146
|
class TestAsanaEventFilter < ClassTest
|
|
@@ -9247,38 +9283,3 @@ class TestAsanaEventFilter < ClassTest
|
|
|
9247
9283
|
sig { void }
|
|
9248
9284
|
def respond_like; end
|
|
9249
9285
|
end
|
|
9250
|
-
|
|
9251
|
-
# Test the Checkoff::ViewSubcommand class used in CLI processing
|
|
9252
|
-
class TestViewSubcommand < ClassTest
|
|
9253
|
-
extend Forwardable
|
|
9254
|
-
|
|
9255
|
-
sig { returns(String) }
|
|
9256
|
-
def task_name; end
|
|
9257
|
-
|
|
9258
|
-
sig { returns(String) }
|
|
9259
|
-
def due_at_value; end
|
|
9260
|
-
|
|
9261
|
-
sig { void }
|
|
9262
|
-
def expect_task_lookup; end
|
|
9263
|
-
|
|
9264
|
-
sig { void }
|
|
9265
|
-
def stub_task_due_fields; end
|
|
9266
|
-
|
|
9267
|
-
sig { void }
|
|
9268
|
-
def test_run_on_task; end
|
|
9269
|
-
|
|
9270
|
-
sig { void }
|
|
9271
|
-
def test_run_on_task_not_found; end
|
|
9272
|
-
|
|
9273
|
-
sig { params(clazz: T.untyped).returns(Checkoff::ViewSubcommand) }
|
|
9274
|
-
def create_object(clazz = class_under_test); end
|
|
9275
|
-
|
|
9276
|
-
sig { returns(T.class_of(Checkoff::ViewSubcommand)) }
|
|
9277
|
-
def class_under_test; end
|
|
9278
|
-
|
|
9279
|
-
sig { void }
|
|
9280
|
-
def respond_like_instance_of; end
|
|
9281
|
-
|
|
9282
|
-
sig { void }
|
|
9283
|
-
def respond_like; end
|
|
9284
|
-
end
|
data/sig/checkoff.rbs
CHANGED
|
@@ -499,6 +499,7 @@ module Checkoff
|
|
|
499
499
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
500
500
|
# True if the task is in a project which is in the given portfolio
|
|
501
501
|
#
|
|
502
|
+
# CI quality (pipeline 1902): "in_portfolio_named? return type could not be inferred".
|
|
502
503
|
# @sg-ignore
|
|
503
504
|
#
|
|
504
505
|
# _@param_ `task`
|
|
@@ -727,7 +728,7 @@ module Checkoff
|
|
|
727
728
|
def now_or_before?: ((Date | Time)? date_or_time) -> bool
|
|
728
729
|
|
|
729
730
|
# _@param_ `num_days`
|
|
730
|
-
def n_days_from_now: (Integer num_days) ->
|
|
731
|
+
def n_days_from_now: (Integer num_days) -> ActiveSupport::TimeWithZone
|
|
731
732
|
|
|
732
733
|
# @sg-ignore
|
|
733
734
|
#
|
|
@@ -1424,16 +1425,12 @@ module Checkoff
|
|
|
1424
1425
|
def task_dependent_on_previous_section_last_milestone?: (Asana::Resources::Task task, ?limit_to_portfolio_gid: String?) -> bool
|
|
1425
1426
|
|
|
1426
1427
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
1427
|
-
# @sg-ignore
|
|
1428
|
-
#
|
|
1429
1428
|
# _@param_ `task`
|
|
1430
1429
|
#
|
|
1431
1430
|
# _@param_ `limit_to_portfolio_name`
|
|
1432
1431
|
def last_task_milestone_depends_on_this_task?: (Asana::Resources::Task task, ?limit_to_portfolio_name: String?) -> bool
|
|
1433
1432
|
|
|
1434
1433
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
1435
|
-
# @sg-ignore
|
|
1436
|
-
#
|
|
1437
1434
|
# _@param_ `task`
|
|
1438
1435
|
#
|
|
1439
1436
|
# _@param_ `limit_to_portfolio_name`
|
|
@@ -2937,6 +2934,9 @@ module Checkoff
|
|
|
2937
2934
|
def matches?: () -> bool
|
|
2938
2935
|
|
|
2939
2936
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
2937
|
+
# CI quality (pipeline 1902): "return type could not be inferred" on modified lines
|
|
2938
|
+
# after 7eeb5b1 removed @sg-ignore. Local overcommit may report "Unneeded @sg-ignore";
|
|
2939
|
+
# `== true` alone did not satisfy the CI overcommit Solargraph hook.
|
|
2940
2940
|
# @sg-ignore
|
|
2941
2941
|
#
|
|
2942
2942
|
# _@param_ `task`
|
|
@@ -2950,6 +2950,7 @@ module Checkoff
|
|
|
2950
2950
|
def matches?: () -> bool
|
|
2951
2951
|
|
|
2952
2952
|
# sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
|
|
2953
|
+
# Same CI/local Solargraph drift as UnassignedPFunctionEvaluator#evaluate (pipeline 1902).
|
|
2953
2954
|
# @sg-ignore
|
|
2954
2955
|
#
|
|
2955
2956
|
# _@param_ `task`
|
|
@@ -3078,13 +3079,13 @@ module Checkoff
|
|
|
3078
3079
|
**::Hash[untyped, untyped] _kwargs
|
|
3079
3080
|
) -> void
|
|
3080
3081
|
|
|
3081
|
-
attr_reader selector: [Symbol, ::Array[untyped]]
|
|
3082
|
-
|
|
3083
3082
|
attr_reader tasks: Checkoff::Tasks
|
|
3084
3083
|
|
|
3085
3084
|
attr_reader timelines: Checkoff::Timelines
|
|
3086
3085
|
|
|
3087
3086
|
attr_reader custom_fields: Checkoff::CustomFields
|
|
3087
|
+
|
|
3088
|
+
attr_reader selector: [Symbol, ::Array[untyped]]
|
|
3088
3089
|
end
|
|
3089
3090
|
end
|
|
3090
3091
|
|
|
@@ -3839,6 +3840,12 @@ class TestTasks < BaseAsana
|
|
|
3839
3840
|
|
|
3840
3841
|
def test_in_portfolio_more_than_once: () -> void
|
|
3841
3842
|
|
|
3843
|
+
def test_in_portfolio_more_than_once_true: () -> void
|
|
3844
|
+
|
|
3845
|
+
def test_gid_for_task: () -> void
|
|
3846
|
+
|
|
3847
|
+
def test_gid_for_task_not_found: () -> void
|
|
3848
|
+
|
|
3842
3849
|
def test_task_to_h_delegates: () -> untyped
|
|
3843
3850
|
|
|
3844
3851
|
def expect_default_workspace_name_pulled: () -> void
|
|
@@ -3866,12 +3873,6 @@ class TestTasks < BaseAsana
|
|
|
3866
3873
|
def test_as_cache_key: () -> void
|
|
3867
3874
|
|
|
3868
3875
|
def class_under_test: () -> void
|
|
3869
|
-
|
|
3870
|
-
def test_in_portfolio_more_than_once_true: () -> void
|
|
3871
|
-
|
|
3872
|
-
def test_gid_for_task: () -> void
|
|
3873
|
-
|
|
3874
|
-
def test_gid_for_task_not_found: () -> void
|
|
3875
3876
|
end
|
|
3876
3877
|
|
|
3877
3878
|
# Test the Checkoff::CLI class with mv subcommand
|
|
@@ -4351,15 +4352,15 @@ class TestTimelines < ClassTest
|
|
|
4351
4352
|
|
|
4352
4353
|
def test_init: () -> void
|
|
4353
4354
|
|
|
4355
|
+
def test_any_milestone_depends_on_this_task_false: () -> void
|
|
4356
|
+
|
|
4357
|
+
def test_any_milestone_depends_on_this_task_true: () -> void
|
|
4358
|
+
|
|
4354
4359
|
def class_under_test: () -> void
|
|
4355
4360
|
|
|
4356
4361
|
def respond_like_instance_of: () -> void
|
|
4357
4362
|
|
|
4358
4363
|
def respond_like: () -> void
|
|
4359
|
-
|
|
4360
|
-
def test_any_milestone_depends_on_this_task_false: () -> void
|
|
4361
|
-
|
|
4362
|
-
def test_any_milestone_depends_on_this_task_true: () -> void
|
|
4363
4364
|
end
|
|
4364
4365
|
|
|
4365
4366
|
class TestPortfolios < ClassTest
|
|
@@ -4421,12 +4422,6 @@ class TestAttachments < ClassTest
|
|
|
4421
4422
|
|
|
4422
4423
|
def test_create_attachment_from_url: () -> void
|
|
4423
4424
|
|
|
4424
|
-
def class_under_test: () -> void
|
|
4425
|
-
|
|
4426
|
-
def respond_like_instance_of: () -> void
|
|
4427
|
-
|
|
4428
|
-
def respond_like: () -> void
|
|
4429
|
-
|
|
4430
4425
|
# _@param_ `gid`
|
|
4431
4426
|
#
|
|
4432
4427
|
# _@param_ `url`
|
|
@@ -4435,6 +4430,12 @@ class TestAttachments < ClassTest
|
|
|
4435
4430
|
def capture_attachments_run: () -> String
|
|
4436
4431
|
|
|
4437
4432
|
def test_run: () -> void
|
|
4433
|
+
|
|
4434
|
+
def class_under_test: () -> void
|
|
4435
|
+
|
|
4436
|
+
def respond_like_instance_of: () -> void
|
|
4437
|
+
|
|
4438
|
+
def respond_like: () -> void
|
|
4438
4439
|
end
|
|
4439
4440
|
|
|
4440
4441
|
# double to inject cache_method, pretending to be cache_method gem
|
|
@@ -4636,18 +4637,18 @@ class TestTaskSearches < ClassTest
|
|
|
4636
4637
|
|
|
4637
4638
|
def test_as_cache_key: () -> void
|
|
4638
4639
|
|
|
4639
|
-
def class_under_test: () -> void
|
|
4640
|
-
|
|
4641
|
-
def respond_like_instance_of: () -> void
|
|
4642
|
-
|
|
4643
|
-
def respond_like: () -> void
|
|
4644
|
-
|
|
4645
4640
|
def test_raw_task_search_without_selector: () -> void
|
|
4646
4641
|
|
|
4647
4642
|
# _@param_ `task_searches`
|
|
4648
4643
|
def mock_full_page_raw_task_search: (Checkoff::TaskSearches task_searches) -> ::Array[untyped]
|
|
4649
4644
|
|
|
4650
4645
|
def test_raw_task_search_paginates_when_full_page: () -> void
|
|
4646
|
+
|
|
4647
|
+
def class_under_test: () -> void
|
|
4648
|
+
|
|
4649
|
+
def respond_like_instance_of: () -> void
|
|
4650
|
+
|
|
4651
|
+
def respond_like: () -> void
|
|
4651
4652
|
end
|
|
4652
4653
|
|
|
4653
4654
|
# rubocop:disable Metrics/ClassLength
|
|
@@ -4809,6 +4810,10 @@ class TestTaskSelectors < ClassTest
|
|
|
4809
4810
|
|
|
4810
4811
|
def test_filter_via_task_selector_in_project_named_true: () -> untyped
|
|
4811
4812
|
|
|
4813
|
+
def test_filter_via_task_selector_in_section_named_false: () -> untyped
|
|
4814
|
+
|
|
4815
|
+
def test_filter_via_task_selector_in_section_named_true: () -> untyped
|
|
4816
|
+
|
|
4812
4817
|
def test_dependent_on_previous_section_last_milestone: () -> untyped
|
|
4813
4818
|
|
|
4814
4819
|
def test_in_portfolio_named_true: () -> untyped
|
|
@@ -4819,12 +4824,6 @@ class TestTaskSelectors < ClassTest
|
|
|
4819
4824
|
|
|
4820
4825
|
def test_last_task_milestone_does_not_depend_on_this_task: () -> void
|
|
4821
4826
|
|
|
4822
|
-
def respond_like_instance_of: () -> void
|
|
4823
|
-
|
|
4824
|
-
def respond_like: () -> void
|
|
4825
|
-
|
|
4826
|
-
def class_under_test: () -> singleton(Checkoff::TaskSelectors)
|
|
4827
|
-
|
|
4828
4827
|
def test_in_a_real_project_true: () -> void
|
|
4829
4828
|
|
|
4830
4829
|
def test_in_a_real_project_false_only_my_tasks: () -> void
|
|
@@ -4841,9 +4840,36 @@ class TestTaskSelectors < ClassTest
|
|
|
4841
4840
|
|
|
4842
4841
|
def test_no_milestone_depends_on_this_task_true: () -> void
|
|
4843
4842
|
|
|
4844
|
-
def
|
|
4843
|
+
def respond_like_instance_of: () -> void
|
|
4845
4844
|
|
|
4846
|
-
def
|
|
4845
|
+
def respond_like: () -> void
|
|
4846
|
+
|
|
4847
|
+
def class_under_test: () -> singleton(Checkoff::TaskSelectors)
|
|
4848
|
+
end
|
|
4849
|
+
|
|
4850
|
+
# Test the Checkoff::ViewSubcommand class used in CLI processing
|
|
4851
|
+
class TestViewSubcommand < ClassTest
|
|
4852
|
+
extend Forwardable
|
|
4853
|
+
|
|
4854
|
+
def task_name: () -> String
|
|
4855
|
+
|
|
4856
|
+
def due_at_value: () -> String
|
|
4857
|
+
|
|
4858
|
+
def expect_task_lookup: () -> void
|
|
4859
|
+
|
|
4860
|
+
def stub_task_due_fields: () -> void
|
|
4861
|
+
|
|
4862
|
+
def test_run_on_task: () -> void
|
|
4863
|
+
|
|
4864
|
+
def test_run_on_task_not_found: () -> void
|
|
4865
|
+
|
|
4866
|
+
def create_object: (?untyped clazz) -> Checkoff::ViewSubcommand
|
|
4867
|
+
|
|
4868
|
+
def class_under_test: () -> singleton(Checkoff::ViewSubcommand)
|
|
4869
|
+
|
|
4870
|
+
def respond_like_instance_of: () -> void
|
|
4871
|
+
|
|
4872
|
+
def respond_like: () -> void
|
|
4847
4873
|
end
|
|
4848
4874
|
|
|
4849
4875
|
class TestLogging < Minitest::Test
|
|
@@ -4994,6 +5020,11 @@ end
|
|
|
4994
5020
|
class TestSearchUrlParser < ClassTest
|
|
4995
5021
|
def get_test_object: () -> Checkoff::Internal::SearchUrl::Parser
|
|
4996
5022
|
|
|
5023
|
+
# Ruby 3.4+ Hash#inspect inserts spaces around =>; normalize for assertions.
|
|
5024
|
+
#
|
|
5025
|
+
# _@param_ `message`
|
|
5026
|
+
def normalize_error_message: (String message) -> String
|
|
5027
|
+
|
|
4997
5028
|
def test_convert_params_1: () -> void
|
|
4998
5029
|
|
|
4999
5030
|
def test_convert_params_2: () -> void
|
|
@@ -5091,11 +5122,6 @@ class TestSearchUrlParser < ClassTest
|
|
|
5091
5122
|
def test_convert_params_48: () -> void
|
|
5092
5123
|
|
|
5093
5124
|
def class_under_test: () -> singleton(Checkoff::Internal::SearchUrl::Parser)
|
|
5094
|
-
|
|
5095
|
-
# Ruby 3.4+ Hash#inspect inserts spaces around =>; normalize for assertions.
|
|
5096
|
-
#
|
|
5097
|
-
# _@param_ `message`
|
|
5098
|
-
def normalize_error_message: (String message) -> String
|
|
5099
5125
|
end
|
|
5100
5126
|
|
|
5101
5127
|
class TestAsanaEventFilter < ClassTest
|
|
@@ -5134,30 +5160,5 @@ class TestAsanaEventFilter < ClassTest
|
|
|
5134
5160
|
|
|
5135
5161
|
def respond_like_instance_of: () -> void
|
|
5136
5162
|
|
|
5137
|
-
def respond_like: () -> void
|
|
5138
|
-
end
|
|
5139
|
-
|
|
5140
|
-
# Test the Checkoff::ViewSubcommand class used in CLI processing
|
|
5141
|
-
class TestViewSubcommand < ClassTest
|
|
5142
|
-
extend Forwardable
|
|
5143
|
-
|
|
5144
|
-
def task_name: () -> String
|
|
5145
|
-
|
|
5146
|
-
def due_at_value: () -> String
|
|
5147
|
-
|
|
5148
|
-
def expect_task_lookup: () -> void
|
|
5149
|
-
|
|
5150
|
-
def stub_task_due_fields: () -> void
|
|
5151
|
-
|
|
5152
|
-
def test_run_on_task: () -> void
|
|
5153
|
-
|
|
5154
|
-
def test_run_on_task_not_found: () -> void
|
|
5155
|
-
|
|
5156
|
-
def create_object: (?untyped clazz) -> Checkoff::ViewSubcommand
|
|
5157
|
-
|
|
5158
|
-
def class_under_test: () -> singleton(Checkoff::ViewSubcommand)
|
|
5159
|
-
|
|
5160
|
-
def respond_like_instance_of: () -> void
|
|
5161
|
-
|
|
5162
5163
|
def respond_like: () -> void
|
|
5163
5164
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: checkoff
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.247.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vince Broz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-05-
|
|
11
|
+
date: 2026-05-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|