mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-16 03:27:01 +02:00
110 lines
3.0 KiB
JavaScript
110 lines
3.0 KiB
JavaScript
import { run } from '@ember/runloop';
|
|
import Model, { attr } from '@ember-data/model';
|
|
import { setupTest } from 'ember-qunit';
|
|
import { module, test } from 'qunit';
|
|
import Adapter from '@ember/test/adapter';
|
|
|
|
/**
|
|
* This test is testing ember internals for what we need available on lazyPaginatedQuery
|
|
*/
|
|
module('Unit | Model | unloadAll works as expected', function (hooks) {
|
|
setupTest(hooks);
|
|
|
|
hooks.beforeEach(function () {
|
|
const Company = Model.extend({
|
|
name: attr('string'),
|
|
});
|
|
|
|
const CompanyAdapter = Adapter.extend({
|
|
updateRecord: () => {
|
|
return undefined;
|
|
},
|
|
createRecord: () => {
|
|
return {
|
|
id: '4',
|
|
data: {
|
|
name: 'Foobar',
|
|
},
|
|
};
|
|
},
|
|
});
|
|
|
|
this.owner.register('model:company', Company);
|
|
this.owner.register('adapter:company', CompanyAdapter);
|
|
this.store = this.owner.lookup('service:store');
|
|
});
|
|
|
|
test('edit then unload correctly removes all records', async function (assert) {
|
|
this.store.push({
|
|
data: [
|
|
{
|
|
id: '1',
|
|
type: 'company',
|
|
attributes: {
|
|
name: 'ACME',
|
|
},
|
|
},
|
|
{
|
|
id: '2',
|
|
type: 'company',
|
|
attributes: {
|
|
name: 'EMCA',
|
|
},
|
|
},
|
|
],
|
|
});
|
|
assert.strictEqual(this.store.peekAll('company').length, 2, '2 companies loaded');
|
|
const editRecord = this.store.peekRecord('company', '1');
|
|
editRecord.name = 'Rebrand';
|
|
await editRecord.save();
|
|
assert.false(editRecord.hasDirtyAttributes, 'edit record does not have dirty attrs after save');
|
|
this.store.peekAll('company').length;
|
|
run(() => {
|
|
this.store.unloadAll('company');
|
|
});
|
|
|
|
assert.strictEqual(this.store.peekAll('company').length, 0, 'peekAll 0 - companies unloaded');
|
|
assert.strictEqual(
|
|
this.store.peekAll('company').toArray().length,
|
|
0,
|
|
'peekAll array 0 - companies unloaded'
|
|
);
|
|
});
|
|
test('create then unload correctly removes all records', async function (assert) {
|
|
this.store.push({
|
|
data: [
|
|
{
|
|
id: '1',
|
|
type: 'company',
|
|
attributes: {
|
|
name: 'ACME',
|
|
},
|
|
},
|
|
{
|
|
id: '2',
|
|
type: 'company',
|
|
attributes: {
|
|
name: 'EMCA',
|
|
},
|
|
},
|
|
],
|
|
});
|
|
assert.strictEqual(this.store.peekAll('company').length, 2, '2 companies loaded');
|
|
const newRecord = this.store.createRecord('company', { name: 'Foobar' });
|
|
|
|
await newRecord.save();
|
|
assert.false(newRecord.hasDirtyAttributes, 'new record does not have dirty attrs after save');
|
|
this.store.peekAll('company').length;
|
|
run(() => {
|
|
this.store.unloadAll('company');
|
|
});
|
|
|
|
assert.strictEqual(this.store.peekAll('company').length, 0, 'peekAll 0 - companies unloaded');
|
|
assert.strictEqual(
|
|
this.store.peekAll('company').toArray().length,
|
|
0,
|
|
'peekAll array 0 - companies unloaded'
|
|
);
|
|
});
|
|
});
|