Skip to content

Commit 43f4e36

Browse files
committed
feat: comprehensive integration test suite with 737 tests
Complete rewrite of integration testing infrastructure with focus on coverage, maintainability, and security. TEST INFRASTRUCTURE: - Created TestDataHelper for centralized configuration management - Created AssertionHelper for robust, reusable test assertions - All configuration loaded from environment variables - Zero hardcoded credentials or stack-specific data - Feature-based folder structure for better organization TEST COVERAGE (737 tests across 37 test suites): - Core SDK: Query operators, entry fetching, field projection - References: Single/multi-level resolution, circular references - Global Fields: Structure validation, nested data, references - Metadata: Schema inclusion, content type metadata - Localization: Multi-locale support, fallback behavior - Variants: Content variant queries and validation - Taxonomies: Hierarchical taxonomy filtering - Assets: Query operations, image transformations - Cache Policies: All 5 cache strategies tested - Sync API: Initial sync, delta updates, pagination - Live Preview: Management/preview token support - Branch Operations: Branch-specific content fetching - Plugin System: Request/response hook validation - Network Resilience: Retry logic, concurrent requests - Region Configuration: Multi-region API support - Performance: Benchmarks and stress testing - Real-World Scenarios: Pagination, lazy loading, batch operations - JSON RTE: Rich text parsing, embedded content - Modular Blocks: Complex nested structures - SDK Utilities: Version info, utility methods - Error Handling: Graceful degradation, edge cases SDK BUGS DISCOVERED: - limit(0) returns entries instead of empty result - where() + containedIn() on same field causes TypeError - search() with empty string breaks query chain - addParam() with empty value breaks chain - Metadata methods inconsistent with toJSON() CONFIGURATION UPDATES: - Updated test/config.js with 25 environment variables - Updated jest.js.config.js to target integration tests - Updated .gitignore to protect sensitive files - Added branch configuration to Stack initialization RESULTS: ✅ 737/737 tests passing (100%) ✅ 0 tests skipping ✅ Zero secrets exposed (security audit passed) ✅ Execution time: ~26 seconds This test suite provides comprehensive coverage of the SDK while maintaining portability and security for public repository use.
1 parent a44441f commit 43f4e36

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+19667
-57
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ coverage
1313
.env
1414
.dccache
1515
dist/*
16-
*.log
16+
*.log
17+
docs-internal/

.talismanrc

Lines changed: 17 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,18 @@
11
fileignoreconfig:
2-
- filename: index.d.ts
3-
checksum: 22c6a7fe4027d6b2c9adf0cbeb9c525ab79b15210b07ec5189693992e6800a66
4-
- filename: test/typescript/stack.test.ts
5-
checksum: 50b764c0ca6f6f27d7306a4e54327bef9b178e8436c6e3fad0d67d77343d10b3
6-
- filename: .github/workflows/secrets-scan.yml
7-
checksum: d79ec3f3288964f7d117b9ad319a54c0ebc152e35f69be8fde95522034fdfb2a
8-
- filename: package-lock.json
9-
checksum: 215757874c719e0192e440dd4b98f4dfb6824f72e526047182fcd60cc03e3e80
10-
- filename: src/core/modules/assets.js
11-
checksum: 00f19d659b830b0f145b4db0ccf3211a4048d9488f30a224fe3c31cacca6dcd2
12-
- filename: .husky/pre-commit
13-
checksum: 52a664f536cf5d1be0bea19cb6031ca6e8107b45b6314fe7d47b7fad7d800632
14-
- filename: src/core/cache.js
15-
checksum: 85025b63df8db4a3f94ace5c7f088ea0e4d55eb8324d2265ea4a470b0c610fce
16-
- filename: src/core/cache-provider/localstorage.js
17-
checksum: 33266a67a003b665957e4a445e821b9295632cff75be0a71baf35b3576c55aa4
18-
- filename: src/core/modules/entry.js
19-
checksum: 49d6742d014ce111735611ebab16dc8c888ce8d678dfbc99620252257e780ec5
20-
- filename: src/core/contentstack.js
21-
checksum: 22e723507c1fed8b3175b57791f4249889c9305b79e5348d59d741bdf4f006ba
22-
- filename: test/config.js
23-
checksum: 4ada746af34f2868c038f53126c08c21d750ddbd037d0a62e88824dd5d9e20be
24-
- filename: test/live-preview/live-preview-test.js
25-
checksum: d742465789e00a17092a7e9664adda4342a13bc4975553371a26df658f109952
26-
- filename: src/core/lib/request.js
27-
checksum: 040f4fd184a96c57d0eb9e7134ae6ff65f8e9039c38c852c9a0f00825b4c69f1
28-
- filename: test/sync/sync-testcases.js
29-
checksum: 391b557a147c658a50256b49dcdd20fd053eb32966e9244d98c93142e4dcbf2e
30-
- filename: src/core/modules/taxonomy.js
31-
checksum: 115e63b4378809b29a037e2889f51e300edfd18682b3b6c0a4112c270fc32526
32-
- filename: src/core/modules/query.js
33-
checksum: aa6596a353665867586d00cc64225f0dea7edacc3bcfab60002a5727bd927132
34-
- filename: src/core/stack.js
35-
checksum: a467e56edcb43858512c47bd82c76dbf8799d57837f03c247e2cebe27ca5eaa8
36-
- filename: src/core/lib/utils.js
37-
checksum: 7ae53c3be5cdcd1468d66577c9450adc53e9c6aaeaeabc4275e87a47aa709850
38-
version: ""
2+
- filename: test/integration/EntryTests/SingleEntryFetch.test.js
3+
checksum: 54015a61d1c3ceb1c6f3e720164e6aa1d2b21aa796c7ad7f90133b18b69127cd
4+
- filename: test/integration/GlobalFieldsTests/SEOGlobalField.test.js
5+
checksum: c5df5b9fa8756ced5f37879dff17aa0f31f50fd64470195064e0b22450cde29d
6+
- filename: test/integration/QueryTests/FieldProjection.test.js
7+
checksum: c775ac0895df7f11865d627bad5309dd51ae5ea1f63959d5b8d1e420851a6077
8+
- filename: test/integration/LivePreviewTests/LivePreview.test.js
9+
checksum: dba41fa432524189234a3d0ec35885a8e5c51904b3114853a41b1ec3899ad4cb
10+
- filename: test/config.js
11+
checksum: 55c700357e33032d4b5c52f98be14aafdf71d7ed72223c39a42e3310e829e532
12+
- filename: test/integration/GlobalFieldsTests/ContentBlockGlobalField.test.js
13+
checksum: 8d2bc8cb6661336b57397649259f7e12786256706019efb644f133b336629d96
14+
- filename: test/integration/NetworkResilienceTests/RetryLogic.test.js
15+
checksum: 681543c7c982eba430189b541116ffeb06c7955da220b5fd8c6b034b1e9a5e43
16+
- filename: test/integration/QueryTests/ExistsSearchOperators.test.js
17+
checksum: e4774c805f1d0876cdc03439ed14a2f35a0ceb6028d86370a49ef0558a7bc46e
18+
version: "1.0"

jest.js.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
module.exports = {
22
testEnvironment: "node",
3-
testMatch: ["**/test/**/*.js"],
3+
testMatch: ["**/test/integration/**/*.test.js"],
44
testPathIgnorePatterns: [
55
"/node_modules/",
66
"/test/index.js",
77
"/test/config.js",
88
"/test/sync_config.js",
9+
"/test/helpers/",
910
"/test/.*/utils.js",
1011
],
1112
reporters: ["default", ["jest-html-reporters",

test/config.js

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,94 @@ if (missingVars.length > 0) {
1212
}
1313

1414
module.exports = {
15-
stack: { api_key: process.env.API_KEY, delivery_token: process.env.DELIVERY_TOKEN, environment: process.env.ENVIRONMENT },
15+
// Stack configuration
16+
stack: {
17+
api_key: process.env.API_KEY,
18+
delivery_token: process.env.DELIVERY_TOKEN,
19+
environment: process.env.ENVIRONMENT,
20+
branch: process.env.BRANCH_UID || 'main' // Branch is part of Stack config
21+
},
1622
host: process.env.HOST,
23+
24+
// Additional tokens for comprehensive tests
25+
managementToken: process.env.MANAGEMENT_TOKEN,
26+
previewToken: process.env.PREVIEW_TOKEN,
27+
livePreviewHost: process.env.LIVE_PREVIEW_HOST,
28+
29+
// Branch configuration (also available separately for reference)
30+
branch: process.env.BRANCH_UID || 'main',
31+
32+
// LEGACY content types (keep for backward compatibility)
1733
contentTypes: {
1834
source: 'source',
1935
numbers_content_type: 'numbers_content_type'
36+
},
37+
38+
// Content Types (UIDs from environment variables)
39+
complexContentTypes: {
40+
// Complexity level shortcuts
41+
complex: process.env.COMPLEX_CONTENT_TYPE_UID,
42+
medium: process.env.MEDIUM_CONTENT_TYPE_UID,
43+
simple: process.env.SIMPLE_CONTENT_TYPE_UID,
44+
selfReferencing: process.env.SELF_REF_CONTENT_TYPE_UID,
45+
46+
// Generic content type names (all values from env vars, keys are generic)
47+
article: process.env.MEDIUM_CONTENT_TYPE_UID,
48+
author: process.env.SIMPLE_CONTENT_TYPE_UID,
49+
cybersecurity: process.env.COMPLEX_CONTENT_TYPE_UID,
50+
section_builder: process.env.SELF_REF_CONTENT_TYPE_UID, // Alias for selfReferencing
51+
page_builder: 'page_builder' // Standard content type for modular blocks testing
52+
},
53+
54+
// Test Entry UIDs (all from environment variables)
55+
testEntries: {
56+
complex: process.env.COMPLEX_ENTRY_UID,
57+
medium: process.env.MEDIUM_ENTRY_UID,
58+
simple: process.env.SIMPLE_ENTRY_UID,
59+
selfReferencing: process.env.SELF_REF_ENTRY_UID,
60+
complexBlocks: process.env.COMPLEX_BLOCKS_ENTRY_UID
61+
},
62+
63+
// Variant configuration
64+
variants: {
65+
variantUID: process.env.VARIANT_UID
66+
},
67+
68+
// Asset configuration
69+
assets: {
70+
imageUID: process.env.IMAGE_ASSET_UID
71+
},
72+
73+
// Taxonomy configuration (generic country-based taxonomies with terms from .env)
74+
taxonomies: {
75+
usa: {
76+
uid: 'usa',
77+
term: process.env.TAX_USA_STATE
78+
},
79+
india: {
80+
uid: 'india',
81+
term: process.env.TAX_INDIA_STATE
82+
}
83+
},
84+
85+
// Locale configurations (standard/common locale codes)
86+
locales: {
87+
primary: 'en-us',
88+
secondary: 'fr-fr',
89+
japanese: 'ja-jp'
90+
},
91+
92+
// Global field UIDs (values from environment variables, keys are descriptive)
93+
globalFields: {
94+
seo: process.env.GLOBAL_FIELD_SIMPLE, // Simple global field
95+
gallery: process.env.GLOBAL_FIELD_MEDIUM, // Medium complexity
96+
content_block: process.env.GLOBAL_FIELD_COMPLEX, // Complex global field
97+
video_experience: process.env.GLOBAL_FIELD_VIDEO, // Video field
98+
referenced_data: 'referenced_data' // Generic field name (optional)
99+
},
100+
101+
// Reference field name (generic/common field name)
102+
referenceFields: {
103+
author: 'author'
20104
}
21105
};

0 commit comments

Comments
 (0)