@memberjunction/core 5.0.0 → 5.2.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.
- package/dist/generic/graphqlTypeNames.d.ts +23 -1
- package/dist/generic/graphqlTypeNames.d.ts.map +1 -1
- package/dist/generic/graphqlTypeNames.js +36 -5
- package/dist/generic/graphqlTypeNames.js.map +1 -1
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +11 -0
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/queryInfo.d.ts +1 -1
- package/dist/generic/queryInfo.js +1 -1
- package/dist/generic/runQuery.d.ts +7 -0
- package/dist/generic/runQuery.d.ts.map +1 -1
- package/dist/generic/runQuery.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +5 -0
- package/dist/__tests__/mocks/TestMetadataProvider.d.ts +0 -45
- package/dist/__tests__/mocks/TestMetadataProvider.d.ts.map +0 -1
- package/dist/__tests__/mocks/TestMetadataProvider.js +0 -217
- package/dist/__tests__/mocks/TestMetadataProvider.js.map +0 -1
- package/dist/__tests__/providerBase.concurrency.test.d.ts +0 -10
- package/dist/__tests__/providerBase.concurrency.test.d.ts.map +0 -1
- package/dist/__tests__/providerBase.concurrency.test.js +0 -253
- package/dist/__tests__/providerBase.concurrency.test.js.map +0 -1
- package/dist/__tests__/providerBase.refresh.test.d.ts +0 -10
- package/dist/__tests__/providerBase.refresh.test.d.ts.map +0 -1
- package/dist/__tests__/providerBase.refresh.test.js +0 -161
- package/dist/__tests__/providerBase.refresh.test.js.map +0 -1
- package/dist/__tests__/setup.d.ts +0 -5
- package/dist/__tests__/setup.d.ts.map +0 -1
- package/dist/__tests__/setup.js +0 -17
- package/dist/__tests__/setup.js.map +0 -1
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Baseline Tests for ProviderBase.Refresh() and Config()
|
|
4
|
-
*
|
|
5
|
-
* Purpose: Document current behavior before implementing thread safety fixes
|
|
6
|
-
* These tests establish a baseline to ensure the fix doesn't break existing functionality
|
|
7
|
-
*
|
|
8
|
-
* Related: METADATA_THREAD_SAFETY_IMPLEMENTATION.md - Phase 1, Task 1.3
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
const interfaces_1 = require("../generic/interfaces.js");
|
|
12
|
-
const TestMetadataProvider_1 = require("./mocks/TestMetadataProvider.js");
|
|
13
|
-
describe('ProviderBase.Refresh - Baseline Behavior', () => {
|
|
14
|
-
let provider;
|
|
15
|
-
let testConfig;
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
provider = new TestMetadataProvider_1.TestMetadataProvider();
|
|
18
|
-
testConfig = new interfaces_1.ProviderConfigDataBase({}, // data
|
|
19
|
-
'__mj', // MJCoreSchemaName
|
|
20
|
-
[], // includeSchemas
|
|
21
|
-
[], // excludeSchemas
|
|
22
|
-
true // ignoreExistingMetadata - don't copy from global
|
|
23
|
-
);
|
|
24
|
-
});
|
|
25
|
-
describe('Single Refresh Operations', () => {
|
|
26
|
-
test('Config() loads metadata successfully', async () => {
|
|
27
|
-
const result = await provider.Config(testConfig);
|
|
28
|
-
expect(result).toBe(true);
|
|
29
|
-
expect(provider.Entities).toBeDefined();
|
|
30
|
-
expect(provider.Entities.length).toBeGreaterThan(0);
|
|
31
|
-
});
|
|
32
|
-
test('Entities have Fields populated', async () => {
|
|
33
|
-
await provider.Config(testConfig);
|
|
34
|
-
const entity = provider.Entities[0];
|
|
35
|
-
expect(entity).toBeDefined();
|
|
36
|
-
expect(entity.Fields).toBeDefined();
|
|
37
|
-
expect(entity.Fields.length).toBe(2);
|
|
38
|
-
expect(entity.Fields[0].Name).toBe('ID');
|
|
39
|
-
});
|
|
40
|
-
test('Refresh() triggers Config() and reloads metadata', async () => {
|
|
41
|
-
// Initial load
|
|
42
|
-
await provider.Config(testConfig);
|
|
43
|
-
const initialCount = provider.Entities.length;
|
|
44
|
-
// Change mock data
|
|
45
|
-
provider.setMockMetadata({
|
|
46
|
-
...await provider['GetAllMetadata'](),
|
|
47
|
-
Entities: [
|
|
48
|
-
{
|
|
49
|
-
ID: '3',
|
|
50
|
-
Name: 'New Entity',
|
|
51
|
-
SchemaName: 'dbo',
|
|
52
|
-
BaseView: 'vwNewEntity',
|
|
53
|
-
BaseTable: 'NewEntity',
|
|
54
|
-
Fields: [{ ID: 'f5', Name: 'ID', Type: 'uniqueidentifier', IsPrimaryKey: true }]
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
});
|
|
58
|
-
// Refresh
|
|
59
|
-
await provider.Refresh();
|
|
60
|
-
// Should have new data
|
|
61
|
-
expect(provider.Entities.length).toBe(1);
|
|
62
|
-
expect(provider.Entities[0].Name).toBe('New Entity');
|
|
63
|
-
});
|
|
64
|
-
test('AllowRefresh=false prevents refresh', async () => {
|
|
65
|
-
await provider.Config(testConfig);
|
|
66
|
-
const initialCount = provider.Entities.length;
|
|
67
|
-
// Disable refresh
|
|
68
|
-
provider.setAllowRefresh(false);
|
|
69
|
-
// Try to refresh
|
|
70
|
-
const result = await provider.Refresh();
|
|
71
|
-
// Should return true but not actually refresh
|
|
72
|
-
expect(result).toBe(true);
|
|
73
|
-
expect(provider.Entities.length).toBe(initialCount);
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
describe('Metadata Access During Operations', () => {
|
|
77
|
-
test('Entities accessible immediately after Config()', async () => {
|
|
78
|
-
await provider.Config(testConfig);
|
|
79
|
-
// Should be able to access metadata immediately
|
|
80
|
-
const entities = provider.Entities;
|
|
81
|
-
expect(entities).toBeDefined();
|
|
82
|
-
expect(Array.isArray(entities)).toBe(true);
|
|
83
|
-
expect(entities.length).toBeGreaterThan(0);
|
|
84
|
-
});
|
|
85
|
-
test('Entities array is stable across multiple reads', async () => {
|
|
86
|
-
await provider.Config(testConfig);
|
|
87
|
-
const read1 = provider.Entities;
|
|
88
|
-
const read2 = provider.Entities;
|
|
89
|
-
const read3 = provider.Entities;
|
|
90
|
-
// Should return same array instance
|
|
91
|
-
expect(read1).toBe(read2);
|
|
92
|
-
expect(read2).toBe(read3);
|
|
93
|
-
});
|
|
94
|
-
test('Fields arrays are accessible', async () => {
|
|
95
|
-
await provider.Config(testConfig);
|
|
96
|
-
const entity = provider.Entities[0];
|
|
97
|
-
const fields1 = entity.Fields;
|
|
98
|
-
const fields2 = entity.Fields;
|
|
99
|
-
expect(fields1).toBeDefined();
|
|
100
|
-
expect(fields1).toBe(fields2); // Same array instance
|
|
101
|
-
expect(fields1.length).toBeGreaterThan(0);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
describe('Current Behavior - Documenting Issues', () => {
|
|
105
|
-
test('KNOWN ISSUE: Reading metadata during Config() may see empty data', async () => {
|
|
106
|
-
/**
|
|
107
|
-
* This test documents the current race condition.
|
|
108
|
-
* When Config() is called, it immediately clears metadata (line 341 of providerBase.ts)
|
|
109
|
-
* before GetAllMetadata() completes.
|
|
110
|
-
*
|
|
111
|
-
* During this window, readers see empty metadata.
|
|
112
|
-
* This test will FAIL before the fix and PASS after the atomic update fix.
|
|
113
|
-
*/
|
|
114
|
-
// Start config but don't await
|
|
115
|
-
const configPromise = provider.Config(testConfig);
|
|
116
|
-
// Try to read metadata during config (after slight delay)
|
|
117
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
118
|
-
const entitiesDuringConfig = provider.Entities;
|
|
119
|
-
// CURRENT BEHAVIOR: This might be empty or undefined
|
|
120
|
-
// DESIRED BEHAVIOR: Should return either old metadata (if any) or wait for new
|
|
121
|
-
// Note: On first call, there is no "old" metadata, so empty is expected
|
|
122
|
-
// Wait for config to complete
|
|
123
|
-
await configPromise;
|
|
124
|
-
// After config, should definitely have data
|
|
125
|
-
expect(provider.Entities.length).toBeGreaterThan(0);
|
|
126
|
-
// Document current behavior
|
|
127
|
-
console.log('Entities during config:', entitiesDuringConfig?.length ?? 'undefined/empty');
|
|
128
|
-
console.log('Entities after config:', provider.Entities.length);
|
|
129
|
-
});
|
|
130
|
-
test('✅ FIXED: Multiple concurrent Config() calls now safe', async () => {
|
|
131
|
-
/**
|
|
132
|
-
* This test verifies that concurrent Config() calls don't cause race conditions.
|
|
133
|
-
* With the atomic update fix, readers always see valid metadata (old or new).
|
|
134
|
-
*
|
|
135
|
-
* Before fix: Metadata would be cleared, causing empty array errors
|
|
136
|
-
* After fix: Metadata is atomically swapped, no intermediate empty state
|
|
137
|
-
*/
|
|
138
|
-
provider.resetCallCount();
|
|
139
|
-
// Start 3 concurrent Config() calls
|
|
140
|
-
const promises = [
|
|
141
|
-
provider.Config(testConfig),
|
|
142
|
-
provider.Config(testConfig),
|
|
143
|
-
provider.Config(testConfig),
|
|
144
|
-
];
|
|
145
|
-
// Wait for all to complete
|
|
146
|
-
const results = await Promise.all(promises);
|
|
147
|
-
// All should succeed
|
|
148
|
-
expect(results.every(r => r === true)).toBe(true);
|
|
149
|
-
// Should have valid metadata
|
|
150
|
-
expect(provider.Entities).toBeDefined();
|
|
151
|
-
expect(provider.Entities.length).toBeGreaterThan(0);
|
|
152
|
-
// Check efficiency - may coalesce some calls
|
|
153
|
-
const callCount = provider.getCallCount();
|
|
154
|
-
console.log('GetAllMetadata called:', callCount, 'times for 3 Config() calls');
|
|
155
|
-
console.log('Final entity count:', provider.Entities.length);
|
|
156
|
-
// ✅ FIXED: No more race conditions - metadata is always valid
|
|
157
|
-
// DESIRED BEHAVIOR: All calls complete safely, metadata is consistent
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
//# sourceMappingURL=providerBase.refresh.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providerBase.refresh.test.js","sourceRoot":"","sources":["../../src/__tests__/providerBase.refresh.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/dist/__tests__/setup.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Jest setup file for MJCore tests
|
|
3
|
-
* Runs before each test file
|
|
4
|
-
*/
|
|
5
|
-
// Increase timeout for async operations
|
|
6
|
-
jest.setTimeout(30000);
|
|
7
|
-
// Mock console methods to reduce noise (can be enabled per test)
|
|
8
|
-
global.console = {
|
|
9
|
-
...console,
|
|
10
|
-
// Uncomment to silence logs during tests
|
|
11
|
-
// log: jest.fn(),
|
|
12
|
-
// debug: jest.fn(),
|
|
13
|
-
// info: jest.fn(),
|
|
14
|
-
// warn: jest.fn(),
|
|
15
|
-
// error: jest.fn(),
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wCAAwC;AACxC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,iEAAiE;AACjE,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,yCAAyC;IACzC,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;CACrB,CAAC"}
|