appydave-tools 0.16.0 → 0.17.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/.rubocop.yml +6 -0
- data/AGENTS.md +22 -0
- data/CHANGELOG.md +12 -0
- data/CLAUDE.md +206 -51
- data/README.md +144 -11
- data/bin/archive_project.rb +249 -0
- data/bin/configuration.rb +21 -1
- data/bin/generate_manifest.rb +357 -0
- data/bin/sync_from_ssd.rb +236 -0
- data/bin/vat +623 -0
- data/docs/README.md +169 -0
- data/docs/configuration/.env.example +19 -0
- data/docs/configuration/README.md +394 -0
- data/docs/configuration/channels.example.json +26 -0
- data/docs/configuration/settings.example.json +6 -0
- data/docs/development/CODEX-recommendations.md +123 -0
- data/docs/development/README.md +100 -0
- data/docs/development/cli-architecture-patterns.md +1604 -0
- data/docs/development/pattern-comparison.md +284 -0
- data/docs/prd-unified-brands-configuration.md +792 -0
- data/docs/project-brand-systems-analysis.md +934 -0
- data/docs/vat/dam-vision.md +123 -0
- data/docs/vat/session-summary-2025-11-09.md +297 -0
- data/docs/vat/usage.md +508 -0
- data/docs/vat/vat-testing-plan.md +801 -0
- data/lib/appydave/tools/configuration/models/brands_config.rb +238 -0
- data/lib/appydave/tools/configuration/models/config_base.rb +7 -0
- data/lib/appydave/tools/configuration/models/settings_config.rb +4 -0
- data/lib/appydave/tools/vat/config.rb +153 -0
- data/lib/appydave/tools/vat/config_loader.rb +91 -0
- data/lib/appydave/tools/vat/manifest_generator.rb +239 -0
- data/lib/appydave/tools/vat/project_listing.rb +198 -0
- data/lib/appydave/tools/vat/project_resolver.rb +132 -0
- data/lib/appydave/tools/vat/s3_operations.rb +560 -0
- data/lib/appydave/tools/version.rb +1 -1
- data/lib/appydave/tools.rb +9 -1
- data/package.json +1 -1
- metadata +57 -3
- data/docs/dam/overview.md +0 -28
|
@@ -0,0 +1,801 @@
|
|
|
1
|
+
# VAT (Video Asset Tools) - Integration Testing Plan
|
|
2
|
+
|
|
3
|
+
**Date**: 2025-11-08
|
|
4
|
+
**Purpose**: Validate VAT integration into appydave-tools gem
|
|
5
|
+
**Tester**: David Cruwys
|
|
6
|
+
**Status**: Ready for User Acceptance Testing
|
|
7
|
+
|
|
8
|
+
**Reference**: Original UAT plan at `/Users/davidcruwys/dev/video-projects/video-asset-tools/docs/testing-plan.md`
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Integration Status Summary
|
|
13
|
+
|
|
14
|
+
### ✅ Completed & Migrated
|
|
15
|
+
|
|
16
|
+
**Core Infrastructure**:
|
|
17
|
+
- ✅ Module namespacing (`Appydave::Tools::Vat::*`)
|
|
18
|
+
- ✅ Configuration system (`settings.json`, `.video-tools.env`)
|
|
19
|
+
- ✅ 64 RSpec tests (100% passing)
|
|
20
|
+
- ✅ RuboCop compliant
|
|
21
|
+
- ✅ Documentation complete
|
|
22
|
+
|
|
23
|
+
**Commands - Phase 1 Complete** (CLI args + auto-detect):
|
|
24
|
+
- ✅ `vat help` - Help system
|
|
25
|
+
- ✅ `vat list` - Project discovery (3 modes + pattern matching)
|
|
26
|
+
- ✅ `vat s3-up` - Upload to S3
|
|
27
|
+
|
|
28
|
+
**Commands - Phase 2 Complete** (CLI args + auto-detect):
|
|
29
|
+
- ✅ `vat s3-down` - Download from S3
|
|
30
|
+
- ✅ `vat s3-status` - Check sync status
|
|
31
|
+
- ✅ `vat s3-cleanup` - Delete S3 files
|
|
32
|
+
|
|
33
|
+
**Commands - Not Yet Migrated**:
|
|
34
|
+
- ⏳ `vat manifest` - Generate project manifest
|
|
35
|
+
- ⏳ `vat archive` - Archive to SSD
|
|
36
|
+
- ⏳ `vat sync-ssd` - Sync from SSD
|
|
37
|
+
|
|
38
|
+
**Utilities - Not Migrated** (not VAT commands):
|
|
39
|
+
- ❌ `status-all.sh` - Git status for all repos (workflow script, not needed in gem)
|
|
40
|
+
- ❌ `sync-all.sh` - Git pull for all repos (workflow script, not needed in gem)
|
|
41
|
+
- ❌ `clone-all.sh` - Clone all repos (workflow script, not needed in gem)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Prerequisites
|
|
46
|
+
|
|
47
|
+
### Setup Requirements
|
|
48
|
+
|
|
49
|
+
**For Development Testing** (before gem install):
|
|
50
|
+
```bash
|
|
51
|
+
# 1. Ensure you're in appydave-tools directory
|
|
52
|
+
cd ~/dev/ad/appydave-tools
|
|
53
|
+
|
|
54
|
+
# 2. Install dependencies
|
|
55
|
+
bundle install
|
|
56
|
+
|
|
57
|
+
# 3. Verify tests pass
|
|
58
|
+
bundle exec rspec spec/appydave/tools/vat/
|
|
59
|
+
# Expected: 64 examples, 0 failures
|
|
60
|
+
|
|
61
|
+
# 4. VAT commands available via bin/
|
|
62
|
+
ls bin/vat*
|
|
63
|
+
# Should show: vat, vat_init.rb, vat_help.rb, vat_list.rb, s3_sync_*.rb
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**For Gem Testing** (after gem install):
|
|
67
|
+
```bash
|
|
68
|
+
# 1. Build gem
|
|
69
|
+
rake build
|
|
70
|
+
|
|
71
|
+
# 2. Install locally
|
|
72
|
+
gem install pkg/appydave-tools-*.gem
|
|
73
|
+
|
|
74
|
+
# 3. Verify vat command available
|
|
75
|
+
which vat
|
|
76
|
+
# Should show: /Users/davidcruwys/.rbenv/shims/vat (or similar)
|
|
77
|
+
|
|
78
|
+
# 4. Initialize configuration
|
|
79
|
+
ad_config -c
|
|
80
|
+
# Creates ~/.config/appydave/settings.json
|
|
81
|
+
|
|
82
|
+
# 5. Verify config
|
|
83
|
+
cat ~/.config/appydave/settings.json
|
|
84
|
+
# Should show: {"video-projects-root": "/Users/davidcruwys/dev/video-projects"}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**AWS & Environment**:
|
|
88
|
+
- [ ] `~/.config/appydave/brands.json` populated with brand configuration
|
|
89
|
+
- [ ] `~/.aws/credentials` contains AWS profiles for each brand (e.g., `[david-appydave]`)
|
|
90
|
+
- [ ] `~/.config/appydave/settings.json` exists with `video-projects-root`
|
|
91
|
+
- [ ] External SSD (T7) connected (optional - only for archive/sync-ssd tests)
|
|
92
|
+
|
|
93
|
+
**Verify setup**:
|
|
94
|
+
```bash
|
|
95
|
+
# Check AWS credentials configured
|
|
96
|
+
cat ~/.aws/credentials | grep -A2 "\[david-appydave\]"
|
|
97
|
+
# Should show: aws_access_key_id and aws_secret_access_key
|
|
98
|
+
|
|
99
|
+
# Check brands config
|
|
100
|
+
ad_config -p brands
|
|
101
|
+
# Should show: All 6 brands with AWS profiles
|
|
102
|
+
|
|
103
|
+
# Check vat works
|
|
104
|
+
vat help
|
|
105
|
+
# Should show: VAT (Video Asset Tools) help
|
|
106
|
+
|
|
107
|
+
# Check config
|
|
108
|
+
vat list
|
|
109
|
+
# Should show: Brands: appydave, voz, aitldr, ... (or error if not configured)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Test Suite
|
|
115
|
+
|
|
116
|
+
### Phase 1: Unit Tests (Automated - RSpec)
|
|
117
|
+
|
|
118
|
+
**Status**: ✅ COMPLETE (64 tests passing)
|
|
119
|
+
|
|
120
|
+
#### Test 1.1: Config Module
|
|
121
|
+
```bash
|
|
122
|
+
bundle exec rspec spec/appydave/tools/vat/config_spec.rb
|
|
123
|
+
```
|
|
124
|
+
**Coverage**:
|
|
125
|
+
- ✅ projects_root configuration
|
|
126
|
+
- ✅ brand_path resolution
|
|
127
|
+
- ✅ expand_brand shortcuts (all 6 brands)
|
|
128
|
+
- ✅ available_brands discovery
|
|
129
|
+
- ✅ valid_brand? validation
|
|
130
|
+
- ✅ configured? checking
|
|
131
|
+
|
|
132
|
+
**Status**: ✅ 17 examples, 0 failures
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
#### Test 1.2: ProjectResolver Module
|
|
137
|
+
```bash
|
|
138
|
+
bundle exec rspec spec/appydave/tools/vat/project_resolver_spec.rb
|
|
139
|
+
```
|
|
140
|
+
**Coverage**:
|
|
141
|
+
- ✅ FliVideo short name expansion (b65 → full name)
|
|
142
|
+
- ✅ Storyline exact match (boy-baker)
|
|
143
|
+
- ✅ Pattern matching (b6* → b60-b69)
|
|
144
|
+
- ✅ detect_from_pwd auto-detection
|
|
145
|
+
- ✅ Multiple match interactive selection
|
|
146
|
+
- ✅ Error handling (no matches, invalid)
|
|
147
|
+
|
|
148
|
+
**Status**: ✅ 31 examples, 0 failures
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
#### Test 1.3: ConfigLoader Module
|
|
153
|
+
```bash
|
|
154
|
+
bundle exec rspec spec/appydave/tools/vat/config_loader_spec.rb
|
|
155
|
+
```
|
|
156
|
+
**Coverage**:
|
|
157
|
+
- ✅ .video-tools.env parsing
|
|
158
|
+
- ✅ Quote removal from values
|
|
159
|
+
- ✅ Comment and empty line handling
|
|
160
|
+
- ✅ Required key validation
|
|
161
|
+
- ✅ Error messages
|
|
162
|
+
|
|
163
|
+
**Status**: ✅ 16 examples, 0 failures
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
### Phase 2: Integration Tests (Manual - Development)
|
|
168
|
+
|
|
169
|
+
**Run from**: `~/dev/ad/appydave-tools` (development directory)
|
|
170
|
+
|
|
171
|
+
#### Test 2.1: Help System
|
|
172
|
+
```bash
|
|
173
|
+
# Test: Main help
|
|
174
|
+
bin/vat help
|
|
175
|
+
|
|
176
|
+
# Test: Command-specific help
|
|
177
|
+
bin/vat help list
|
|
178
|
+
bin/vat help s3-up
|
|
179
|
+
bin/vat help s3-down
|
|
180
|
+
bin/vat help brands
|
|
181
|
+
bin/vat help workflows
|
|
182
|
+
```
|
|
183
|
+
**Expected**:
|
|
184
|
+
- Full help overview
|
|
185
|
+
- Detailed command help
|
|
186
|
+
- Brand shortcuts listed
|
|
187
|
+
- Workflow explanations
|
|
188
|
+
|
|
189
|
+
**Status**: [ ] Pass [ ] Fail
|
|
190
|
+
**Notes**: ___________________________________________
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
#### Test 2.3: List Brands (Mode 1)
|
|
195
|
+
```bash
|
|
196
|
+
# Test: List brands only
|
|
197
|
+
bin/vat list
|
|
198
|
+
```
|
|
199
|
+
**Expected**: `Brands: aitldr, appydave, joy, kiros, ss, voz` (shortcuts)
|
|
200
|
+
|
|
201
|
+
**Status**: [ ] Pass [ ] Fail
|
|
202
|
+
**Notes**: ___________________________________________
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
#### Test 2.4: List Brands with Summary (Mode 2)
|
|
207
|
+
```bash
|
|
208
|
+
# Test: Brands with project counts
|
|
209
|
+
bin/vat list --summary
|
|
210
|
+
```
|
|
211
|
+
**Expected**:
|
|
212
|
+
```
|
|
213
|
+
aitldr: X projects
|
|
214
|
+
appydave: Y projects
|
|
215
|
+
joy: Z projects
|
|
216
|
+
...
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Status**: [ ] Pass [ ] Fail
|
|
220
|
+
**Notes**: ___________________________________________
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
#### Test 2.5: List Brand Projects (Mode 3)
|
|
225
|
+
```bash
|
|
226
|
+
# Test: All projects for brand
|
|
227
|
+
bin/vat list appydave
|
|
228
|
+
```
|
|
229
|
+
**Expected**: List of all appydave projects (excludes `archived/`, `.git`, etc.)
|
|
230
|
+
|
|
231
|
+
**Status**: [ ] Pass [ ] Fail
|
|
232
|
+
**Notes**: ___________________________________________
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
#### Test 2.6: Pattern Matching (Mode 3b)
|
|
237
|
+
```bash
|
|
238
|
+
# Test: Pattern matching
|
|
239
|
+
bin/vat list appydave 'b6*'
|
|
240
|
+
```
|
|
241
|
+
**Expected**: Only projects starting with `b6` (b60-b69)
|
|
242
|
+
|
|
243
|
+
**Status**: [ ] Pass [ ] Fail
|
|
244
|
+
**Notes**: ___________________________________________
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
#### Test 2.7: S3 Upload with CLI Args
|
|
249
|
+
```bash
|
|
250
|
+
# Test: Upload with explicit args (dry-run)
|
|
251
|
+
bin/s3_sync_up.rb appydave b65 --dry-run
|
|
252
|
+
```
|
|
253
|
+
**Expected**: Shows files that would be uploaded, no actual upload
|
|
254
|
+
|
|
255
|
+
**Status**: [ ] Pass [ ] Fail
|
|
256
|
+
**Notes**: ___________________________________________
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
#### Test 2.8: S3 Upload Auto-Detect
|
|
261
|
+
```bash
|
|
262
|
+
# Test: Upload from project directory
|
|
263
|
+
cd ~/dev/video-projects/v-appydave/b65-*
|
|
264
|
+
bin/s3_sync_up.rb --dry-run
|
|
265
|
+
```
|
|
266
|
+
**Expected**: Auto-detects brand and project, shows dry-run
|
|
267
|
+
|
|
268
|
+
**Status**: [ ] Pass [ ] Fail
|
|
269
|
+
**Notes**: ___________________________________________
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
#### Test 2.9: S3 Download with CLI Args ⭐ NEW
|
|
274
|
+
```bash
|
|
275
|
+
# Test: Download with explicit args (dry-run)
|
|
276
|
+
bin/s3_sync_down.rb appydave b65 --dry-run
|
|
277
|
+
```
|
|
278
|
+
**Expected**: Shows files that would be downloaded, no actual download
|
|
279
|
+
|
|
280
|
+
**Status**: [ ] Pass [ ] Fail
|
|
281
|
+
**Notes**: ___________________________________________
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
#### Test 2.10: S3 Download Auto-Detect ⭐ NEW
|
|
286
|
+
```bash
|
|
287
|
+
# Test: Download from project directory
|
|
288
|
+
cd ~/dev/video-projects/v-appydave/b65-*
|
|
289
|
+
bin/s3_sync_down.rb --dry-run
|
|
290
|
+
```
|
|
291
|
+
**Expected**: Auto-detects brand and project, shows dry-run
|
|
292
|
+
|
|
293
|
+
**Status**: [ ] Pass [ ] Fail
|
|
294
|
+
**Notes**: ___________________________________________
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
#### Test 2.11: S3 Status with CLI Args ⭐ NEW
|
|
299
|
+
```bash
|
|
300
|
+
# Test: Check status with explicit args
|
|
301
|
+
bin/s3_sync_status.rb appydave b65
|
|
302
|
+
```
|
|
303
|
+
**Expected**: Shows sync status (in sync, local only, S3 only, out of sync)
|
|
304
|
+
|
|
305
|
+
**Status**: [ ] Pass [ ] Fail
|
|
306
|
+
**Notes**: ___________________________________________
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
#### Test 2.12: S3 Status Auto-Detect ⭐ NEW
|
|
311
|
+
```bash
|
|
312
|
+
# Test: Check status from project directory
|
|
313
|
+
cd ~/dev/video-projects/v-appydave/b65-*
|
|
314
|
+
bin/s3_sync_status.rb
|
|
315
|
+
```
|
|
316
|
+
**Expected**: Auto-detects and shows sync status
|
|
317
|
+
|
|
318
|
+
**Status**: [ ] Pass [ ] Fail
|
|
319
|
+
**Notes**: ___________________________________________
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
#### Test 2.13: S3 Cleanup with CLI Args ⭐ NEW
|
|
324
|
+
```bash
|
|
325
|
+
# Test: Cleanup with explicit args (dry-run)
|
|
326
|
+
bin/s3_sync_cleanup.rb appydave b65 --dry-run
|
|
327
|
+
```
|
|
328
|
+
**Expected**: Shows files that would be deleted, no actual deletion
|
|
329
|
+
|
|
330
|
+
**Status**: [ ] Pass [ ] Fail
|
|
331
|
+
**Notes**: ___________________________________________
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
#### Test 2.14: S3 Cleanup Auto-Detect ⭐ NEW
|
|
336
|
+
```bash
|
|
337
|
+
# Test: Cleanup from project directory
|
|
338
|
+
cd ~/dev/video-projects/v-appydave/b65-*
|
|
339
|
+
bin/s3_sync_cleanup.rb --dry-run
|
|
340
|
+
```
|
|
341
|
+
**Expected**: Auto-detects and shows cleanup dry-run
|
|
342
|
+
|
|
343
|
+
**Status**: [ ] Pass [ ] Fail
|
|
344
|
+
**Notes**: ___________________________________________
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
### Phase 3: Gem Installation Tests (Manual - Installed Gem)
|
|
349
|
+
|
|
350
|
+
**Prerequisites**: `gem install pkg/appydave-tools-*.gem`
|
|
351
|
+
|
|
352
|
+
#### Test 3.1: Gem Commands Available
|
|
353
|
+
```bash
|
|
354
|
+
# Test: vat command in PATH
|
|
355
|
+
which vat
|
|
356
|
+
|
|
357
|
+
# Test: Help works
|
|
358
|
+
vat help
|
|
359
|
+
```
|
|
360
|
+
**Expected**:
|
|
361
|
+
- `which vat` shows gem bin path
|
|
362
|
+
- Help text displays
|
|
363
|
+
|
|
364
|
+
**Status**: [ ] Pass [ ] Fail
|
|
365
|
+
**Notes**: ___________________________________________
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
#### Test 3.2: All List Commands Work
|
|
370
|
+
```bash
|
|
371
|
+
vat list
|
|
372
|
+
vat list --summary
|
|
373
|
+
vat list appydave
|
|
374
|
+
vat list appydave 'b6*'
|
|
375
|
+
```
|
|
376
|
+
**Expected**: All modes work correctly
|
|
377
|
+
|
|
378
|
+
**Status**: [ ] Pass [ ] Fail
|
|
379
|
+
**Notes**: ___________________________________________
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
#### Test 3.3: S3 Commands Work (CLI Args)
|
|
384
|
+
```bash
|
|
385
|
+
vat s3-up appydave b65 --dry-run
|
|
386
|
+
vat s3-down appydave b65 --dry-run
|
|
387
|
+
vat s3-status appydave b65
|
|
388
|
+
vat s3-cleanup appydave b65 --dry-run
|
|
389
|
+
```
|
|
390
|
+
**Expected**: All commands work with explicit args
|
|
391
|
+
|
|
392
|
+
**Status**: [ ] Pass [ ] Fail
|
|
393
|
+
**Notes**: ___________________________________________
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
#### Test 3.4: S3 Commands Work (Auto-Detect)
|
|
398
|
+
```bash
|
|
399
|
+
cd ~/dev/video-projects/v-appydave/b65-*
|
|
400
|
+
|
|
401
|
+
vat s3-up --dry-run
|
|
402
|
+
vat s3-down --dry-run
|
|
403
|
+
vat s3-status
|
|
404
|
+
vat s3-cleanup --dry-run
|
|
405
|
+
```
|
|
406
|
+
**Expected**: All commands auto-detect from PWD
|
|
407
|
+
|
|
408
|
+
**Status**: [ ] Pass [ ] Fail
|
|
409
|
+
**Notes**: ___________________________________________
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
#### Test 3.5: Brand Shortcuts Work
|
|
414
|
+
```bash
|
|
415
|
+
# Test: All 6 brand shortcuts
|
|
416
|
+
vat list appydave # v-appydave
|
|
417
|
+
vat list voz # v-voz
|
|
418
|
+
vat list aitldr # v-aitldr
|
|
419
|
+
vat list kiros # v-kiros
|
|
420
|
+
vat list joy # v-beauty-and-joy
|
|
421
|
+
vat list ss # v-supportsignal
|
|
422
|
+
```
|
|
423
|
+
**Expected**: All shortcuts expand correctly
|
|
424
|
+
|
|
425
|
+
**Status**: [ ] Pass [ ] Fail
|
|
426
|
+
**Notes**: ___________________________________________
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
#### Test 3.6: Short Name Expansion (FliVideo)
|
|
431
|
+
```bash
|
|
432
|
+
# Test: Short name expands to full name
|
|
433
|
+
vat list appydave b65
|
|
434
|
+
# Should resolve to: b65-guy-monroe-marketing-plan (or similar)
|
|
435
|
+
```
|
|
436
|
+
**Expected**: Expands `b65` to full project name
|
|
437
|
+
|
|
438
|
+
**Status**: [ ] Pass [ ] Fail
|
|
439
|
+
**Notes**: ___________________________________________
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
### Phase 4: Edge Cases & Error Handling
|
|
444
|
+
|
|
445
|
+
#### Test 4.1: Invalid Brand Name
|
|
446
|
+
```bash
|
|
447
|
+
vat list invalid-brand
|
|
448
|
+
```
|
|
449
|
+
**Expected**: Error message listing available brands
|
|
450
|
+
|
|
451
|
+
**Status**: [ ] Pass [ ] Fail
|
|
452
|
+
**Notes**: ___________________________________________
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
#### Test 4.2: Invalid Project Name
|
|
457
|
+
```bash
|
|
458
|
+
vat list appydave invalid-project
|
|
459
|
+
```
|
|
460
|
+
**Expected**: Error "No project found matching 'invalid-project'"
|
|
461
|
+
|
|
462
|
+
**Status**: [ ] Pass [ ] Fail
|
|
463
|
+
**Notes**: ___________________________________________
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
#### Test 4.3: Missing Configuration
|
|
468
|
+
```bash
|
|
469
|
+
# Test: Temporarily rename config
|
|
470
|
+
mv ~/.config/appydave/settings.json ~/.config/appydave/settings.json.bak
|
|
471
|
+
vat list
|
|
472
|
+
mv ~/.config/appydave/settings.json.bak ~/.config/appydave/settings.json
|
|
473
|
+
```
|
|
474
|
+
**Expected**: Error "VIDEO_PROJECTS_ROOT not configured! Run: ad_config -e"
|
|
475
|
+
|
|
476
|
+
**Status**: [ ] Pass [ ] Fail
|
|
477
|
+
**Notes**: ___________________________________________
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
#### Test 4.4: No Arguments to vat
|
|
482
|
+
```bash
|
|
483
|
+
vat
|
|
484
|
+
```
|
|
485
|
+
**Expected**: Usage message and suggestion to run `vat help`
|
|
486
|
+
|
|
487
|
+
**Status**: [ ] Pass [ ] Fail
|
|
488
|
+
**Notes**: ___________________________________________
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
#### Test 4.5: Unknown Command
|
|
493
|
+
```bash
|
|
494
|
+
vat unknown-command
|
|
495
|
+
```
|
|
496
|
+
**Expected**: Error "Unknown command: unknown-command"
|
|
497
|
+
|
|
498
|
+
**Status**: [ ] Pass [ ] Fail
|
|
499
|
+
**Notes**: ___________________________________________
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
#### Test 4.6: S3 Commands Without Brand Path
|
|
504
|
+
```bash
|
|
505
|
+
cd /tmp
|
|
506
|
+
vat s3-up
|
|
507
|
+
```
|
|
508
|
+
**Expected**: Error "Could not detect brand and project from current directory"
|
|
509
|
+
|
|
510
|
+
**Status**: [ ] Pass [ ] Fail
|
|
511
|
+
**Notes**: ___________________________________________
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
### Phase 5: Performance Tests
|
|
516
|
+
|
|
517
|
+
#### Test 5.1: List Performance
|
|
518
|
+
```bash
|
|
519
|
+
time vat list --summary
|
|
520
|
+
```
|
|
521
|
+
**Expected**: Completes in < 2 seconds
|
|
522
|
+
|
|
523
|
+
**Status**: [ ] Pass [ ] Fail
|
|
524
|
+
**Time taken**: ___________________________________________
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
#### Test 5.2: Pattern Matching Performance
|
|
529
|
+
```bash
|
|
530
|
+
time vat list appydave 'b*'
|
|
531
|
+
```
|
|
532
|
+
**Expected**: Completes in < 1 second
|
|
533
|
+
|
|
534
|
+
**Status**: [ ] Pass [ ] Fail
|
|
535
|
+
**Time taken**: ___________________________________________
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
### Phase 6: Real-World Workflow Tests
|
|
540
|
+
|
|
541
|
+
#### Test 6.1: Complete Upload/Download Cycle
|
|
542
|
+
```bash
|
|
543
|
+
# 1. Upload project
|
|
544
|
+
vat s3-up appydave b65
|
|
545
|
+
|
|
546
|
+
# 2. Check status
|
|
547
|
+
vat s3-status appydave b65
|
|
548
|
+
# Expected: All files in sync
|
|
549
|
+
|
|
550
|
+
# 3. Download to different location (simulate collaborator)
|
|
551
|
+
vat s3-down appydave b65
|
|
552
|
+
|
|
553
|
+
# 4. Clean up
|
|
554
|
+
vat s3-cleanup appydave b65 --force
|
|
555
|
+
```
|
|
556
|
+
**Expected**: Full workflow works without errors
|
|
557
|
+
|
|
558
|
+
**Status**: [ ] Pass [ ] Fail
|
|
559
|
+
**Notes**: ___________________________________________
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
#### Test 6.2: Pattern-Based Discovery
|
|
564
|
+
```bash
|
|
565
|
+
# Discover all b60-series projects
|
|
566
|
+
vat list appydave 'b6*'
|
|
567
|
+
|
|
568
|
+
# Upload multiple projects (if needed)
|
|
569
|
+
for project in b60 b61 b65; do
|
|
570
|
+
vat s3-up appydave $project --dry-run
|
|
571
|
+
done
|
|
572
|
+
```
|
|
573
|
+
**Expected**: Pattern matching helps with batch operations
|
|
574
|
+
|
|
575
|
+
**Status**: [ ] Pass [ ] Fail
|
|
576
|
+
**Notes**: ___________________________________________
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## Not Yet Implemented (Future Work)
|
|
581
|
+
|
|
582
|
+
### Commands Migrated but Not Updated for CLI Args
|
|
583
|
+
|
|
584
|
+
These commands were copied from the original VAT but still need Phase 2 updates:
|
|
585
|
+
|
|
586
|
+
#### ⏳ Generate Manifest
|
|
587
|
+
```bash
|
|
588
|
+
# Current: bin/generate_manifest.rb
|
|
589
|
+
# Expected: vat manifest appydave
|
|
590
|
+
```
|
|
591
|
+
**Status**: Copied but needs CLI arg support
|
|
592
|
+
**Priority**: Low (utility command, not core workflow)
|
|
593
|
+
|
|
594
|
+
---
|
|
595
|
+
|
|
596
|
+
#### ⏳ Archive Project
|
|
597
|
+
```bash
|
|
598
|
+
# Current: bin/archive_project.rb
|
|
599
|
+
# Expected: vat archive appydave b63
|
|
600
|
+
```
|
|
601
|
+
**Status**: Copied but needs CLI arg support
|
|
602
|
+
**Priority**: Medium (used for completed projects)
|
|
603
|
+
|
|
604
|
+
---
|
|
605
|
+
|
|
606
|
+
#### ⏳ Sync from SSD
|
|
607
|
+
```bash
|
|
608
|
+
# Current: bin/sync_from_ssd.rb
|
|
609
|
+
# Expected: vat sync-ssd appydave
|
|
610
|
+
```
|
|
611
|
+
**Status**: Copied but needs CLI arg support
|
|
612
|
+
**Priority**: Medium (used for recovery)
|
|
613
|
+
|
|
614
|
+
---
|
|
615
|
+
|
|
616
|
+
### Workflow Scripts (Not Migrating to Gem)
|
|
617
|
+
|
|
618
|
+
These are repository management scripts, not VAT commands:
|
|
619
|
+
|
|
620
|
+
- ❌ `status-all.sh` - Git status for all v-* repos
|
|
621
|
+
- ❌ `sync-all.sh` - Git pull for all repos
|
|
622
|
+
- ❌ `clone-all.sh` - Clone all brand repos
|
|
623
|
+
|
|
624
|
+
**Rationale**: These are development workflow tools for managing the video-projects repository structure, not video asset operations. They belong in the video-projects folder, not the appydave-tools gem.
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## Test Results Summary
|
|
629
|
+
|
|
630
|
+
### Phase 1: Unit Tests (Automated)
|
|
631
|
+
- **Config**: 17 / 17 ✅
|
|
632
|
+
- **ProjectResolver**: 31 / 31 ✅
|
|
633
|
+
- **ConfigLoader**: 16 / 16 ✅
|
|
634
|
+
- **TOTAL**: **64 / 64 ✅**
|
|
635
|
+
|
|
636
|
+
### Phase 2: Integration Tests (Manual - Development)
|
|
637
|
+
- Passed: _____ / 13
|
|
638
|
+
- Failed: _____ / 13
|
|
639
|
+
|
|
640
|
+
### Phase 3: Gem Installation Tests (Manual - Installed)
|
|
641
|
+
- Passed: _____ / 6
|
|
642
|
+
- Failed: _____ / 6
|
|
643
|
+
|
|
644
|
+
### Phase 4: Edge Cases
|
|
645
|
+
- Passed: _____ / 6
|
|
646
|
+
- Failed: _____ / 6
|
|
647
|
+
|
|
648
|
+
### Phase 5: Performance
|
|
649
|
+
- Passed: _____ / 2
|
|
650
|
+
- Failed: _____ / 2
|
|
651
|
+
|
|
652
|
+
### Phase 6: Real-World Workflows
|
|
653
|
+
- Passed: _____ / 2
|
|
654
|
+
- Failed: _____ / 2
|
|
655
|
+
|
|
656
|
+
### **GRAND TOTAL**
|
|
657
|
+
- **Unit Tests**: 64 / 64 ✅
|
|
658
|
+
- **Manual Tests**: _____ / 29
|
|
659
|
+
- **Overall**: _____ / 93
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
## Implementation Status Checklist
|
|
664
|
+
|
|
665
|
+
### ✅ Completed Features
|
|
666
|
+
|
|
667
|
+
**Core Infrastructure**:
|
|
668
|
+
- [x] Module namespacing (`Appydave::Tools::Vat`)
|
|
669
|
+
- [x] Configuration system (`settings.json` via `ad_config`)
|
|
670
|
+
- [x] Brand shortcuts (all 6 brands)
|
|
671
|
+
- [x] Project resolution (short names, patterns, exact match)
|
|
672
|
+
- [x] Auto-detection from PWD
|
|
673
|
+
- [x] 64 RSpec tests (100% passing)
|
|
674
|
+
- [x] RuboCop compliant
|
|
675
|
+
- [x] Guard integration
|
|
676
|
+
- [x] Documentation complete
|
|
677
|
+
|
|
678
|
+
**Commands (CLI Args + Auto-Detect)**:
|
|
679
|
+
- [x] `vat help` - Help system
|
|
680
|
+
- [x] `vat list` - All 4 modes working
|
|
681
|
+
- [x] `vat s3-up` - Upload to S3
|
|
682
|
+
- [x] `vat s3-down` - Download from S3 ⭐ Phase 2 complete
|
|
683
|
+
- [x] `vat s3-status` - Check sync status ⭐ Phase 2 complete
|
|
684
|
+
- [x] `vat s3-cleanup` - Delete S3 files ⭐ Phase 2 complete
|
|
685
|
+
|
|
686
|
+
### ⏳ Pending Implementation
|
|
687
|
+
|
|
688
|
+
**Commands (Copied but need CLI arg support)**:
|
|
689
|
+
- [ ] `vat manifest` - Generate project manifest
|
|
690
|
+
- [ ] `vat archive` - Archive to SSD
|
|
691
|
+
- [ ] `vat sync-ssd` - Sync from SSD
|
|
692
|
+
|
|
693
|
+
**Testing**:
|
|
694
|
+
- [ ] Manual integration tests (Phase 2)
|
|
695
|
+
- [ ] Gem installation tests (Phase 3)
|
|
696
|
+
- [ ] Edge case validation (Phase 4)
|
|
697
|
+
- [ ] Performance verification (Phase 5)
|
|
698
|
+
- [ ] Real-world workflow testing (Phase 6)
|
|
699
|
+
|
|
700
|
+
**Future Enhancements**:
|
|
701
|
+
- [x] AWS SDK integration (replace AWS CLI shell commands) ✅ Phase 3 complete
|
|
702
|
+
- [ ] Pattern-based brand discovery (remove hardcoded list)
|
|
703
|
+
- [ ] Windows compatibility testing (Jan)
|
|
704
|
+
- [ ] Batch operations (upload/download multiple projects)
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
708
|
+
## Issues Found
|
|
709
|
+
|
|
710
|
+
| Test ID | Issue Description | Severity | Status |
|
|
711
|
+
|---------|------------------|----------|---------|
|
|
712
|
+
| TBD | (To be filled during testing) | | |
|
|
713
|
+
|
|
714
|
+
---
|
|
715
|
+
|
|
716
|
+
## Sign-Off
|
|
717
|
+
|
|
718
|
+
**Phase 1 - Unit Tests**: ✅ COMPLETE
|
|
719
|
+
- [x] All 64 RSpec tests pass
|
|
720
|
+
- [x] RuboCop clean
|
|
721
|
+
- [x] Guard configured
|
|
722
|
+
|
|
723
|
+
**Phase 2 - Integration Tests**: [ ] PENDING
|
|
724
|
+
- [ ] All development bin/ tests pass
|
|
725
|
+
- [ ] CLI args work
|
|
726
|
+
- [ ] Auto-detect works
|
|
727
|
+
- [ ] Phase 2 commands (s3-down, s3-status, s3-cleanup) work
|
|
728
|
+
|
|
729
|
+
**Phase 3 - Gem Tests**: [ ] PENDING
|
|
730
|
+
- [ ] Gem builds successfully
|
|
731
|
+
- [ ] Gem installs locally
|
|
732
|
+
- [ ] All vat commands work after install
|
|
733
|
+
|
|
734
|
+
**Phase 4 - Edge Cases**: [ ] PENDING
|
|
735
|
+
- [ ] Error handling works
|
|
736
|
+
- [ ] Helpful error messages
|
|
737
|
+
- [ ] Graceful failures
|
|
738
|
+
|
|
739
|
+
**Phase 5 - Performance**: [ ] PENDING
|
|
740
|
+
- [ ] List commands fast (< 2s)
|
|
741
|
+
- [ ] Pattern matching fast (< 1s)
|
|
742
|
+
|
|
743
|
+
**Phase 6 - Real-World**: [ ] PENDING
|
|
744
|
+
- [ ] Upload/download cycle works
|
|
745
|
+
- [ ] Collaboration workflow validated
|
|
746
|
+
|
|
747
|
+
**Final Approval**: [ ] APPROVED [ ] REJECTED
|
|
748
|
+
|
|
749
|
+
**Tested by**: ___________________________________________
|
|
750
|
+
**Date**: ___________________________________________
|
|
751
|
+
|
|
752
|
+
---
|
|
753
|
+
|
|
754
|
+
## Recommended Test Order
|
|
755
|
+
|
|
756
|
+
**Start here** (automated tests):
|
|
757
|
+
1. ✅ Run all RSpec tests: `bundle exec rspec spec/appydave/tools/vat/`
|
|
758
|
+
|
|
759
|
+
**Then manual development tests** (safest first):
|
|
760
|
+
2. Phase 2.1-2.5: Help and list commands
|
|
761
|
+
3. Phase 2.6-2.7: S3 upload with dry-run
|
|
762
|
+
4. Phase 2.8-2.13: Phase 2 commands (download, status, cleanup) with dry-run
|
|
763
|
+
5. Phase 4: Edge cases and error handling
|
|
764
|
+
|
|
765
|
+
**Then gem installation tests**:
|
|
766
|
+
6. Build and install gem
|
|
767
|
+
7. Phase 3: Run all tests with installed gem
|
|
768
|
+
|
|
769
|
+
**Then real operations** (after dry-run validation):
|
|
770
|
+
8. Phase 6.1: Real S3 upload/download cycle
|
|
771
|
+
9. Phase 5: Performance tests
|
|
772
|
+
|
|
773
|
+
**Finally**:
|
|
774
|
+
10. Phase 6.2: Real-world workflow validation
|
|
775
|
+
|
|
776
|
+
---
|
|
777
|
+
|
|
778
|
+
## Notes for Tester
|
|
779
|
+
|
|
780
|
+
### Key Differences from Original VAT
|
|
781
|
+
|
|
782
|
+
1. **Commands now work from anywhere**: Original required `cd` to project directory or explicit paths
|
|
783
|
+
2. **Phase 2 commands complete**: s3-down, s3-status, s3-cleanup now accept CLI args
|
|
784
|
+
3. **Namespace changed**: `VatConfig` → `Appydave::Tools::Vat::Config`
|
|
785
|
+
4. **Gem-based**: Install via `gem install appydave-tools` instead of shell alias
|
|
786
|
+
5. **Better tested**: 64 RSpec tests vs. manual testing only
|
|
787
|
+
6. **Configuration migrated**: `~/.vat-config` → `~/.config/appydave/settings.json` (managed via `ad_config`)
|
|
788
|
+
|
|
789
|
+
### What to Watch For
|
|
790
|
+
|
|
791
|
+
- **Backward compatibility**: Existing workflows should still work
|
|
792
|
+
- **Error messages**: Should be helpful, not cryptic
|
|
793
|
+
- **Performance**: Should not be slower than original
|
|
794
|
+
- **Windows compatibility**: Test with Jan when ready
|
|
795
|
+
|
|
796
|
+
---
|
|
797
|
+
|
|
798
|
+
**Created**: 2025-11-08
|
|
799
|
+
**Version**: 1.0 (Integration Testing Plan)
|
|
800
|
+
**Purpose**: Validate VAT integration into appydave-tools gem
|
|
801
|
+
**Reference**: `/Users/davidcruwys/dev/video-projects/video-asset-tools/docs/testing-plan.md`
|