Michael Klein 39c5b91272
ui: chore upgrade to ember-qunit v5 (#14430)
* Refactor remaining `moduleFor`-tests

`moduleFor*` will be removed from ember-qunit v5

* Upgrade ember-qunit to v5

* Update how we use ember-sinon-qunit

With ember-qunit v5 we need to use ember-sinon-qunit differently.

* Fix submit-blank test

We can't click on disabled buttons with new test-helpers.
We need to adapt the test accordingly.

* Make sure we await fill-in with form yaml step

We need to await `fill-in`. This changes the reducer
function in the step to create a proper await
chain.

* Fix show-routing test

We need to await a tick before visiting again.

* Remove redundant `wait one tick`-step

* remove unneeded "next Tick" promise from form step

* Increase timeout show-routing feature

* Comment on pause hack for show-routing test
2022-09-01 17:37:37 +02:00

119 lines
3.5 KiB
JavaScript

import { module, skip, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import { run } from '@ember/runloop';
import { set } from '@ember/object';
import sinon from 'sinon';
module('Unit | Serializer | kv', function(hooks) {
setupTest(hooks);
// Replace this with your real tests.
test('it exists', function(assert) {
const store = this.owner.lookup('service:store');
const serializer = store.serializerFor('kv');
assert.ok(serializer);
});
// TODO: Would undefined be better instead of null?
test("it serializes records that aren't strings to null", function(assert) {
const store = this.owner.lookup('service:store');
const record = run(() => store.createRecord('kv', {}));
const serializedRecord = record.serialize();
// anything but a string ends up as null
assert.equal(serializedRecord, null);
});
skip(
'what should respondForCreate/UpdateRecord return when createRecord is called with a `false` payload'
);
test('respondForCreate/UpdateRecord returns a KV uid object when receiving a `true` payload', function(assert) {
const uid = 'key/name';
const dc = 'dc1';
const nspace = 'default';
const partition = 'default';
const expected = {
uid: JSON.stringify([partition, nspace, dc, uid]),
Key: uid,
Namespace: nspace,
Partition: partition,
Datacenter: dc,
};
const serializer = this.owner.lookup('serializer:kv');
serializer.primaryKey = 'uid';
serializer.slugKey = 'Key';
['respondForCreateRecord', 'respondForUpdateRecord'].forEach(function(item) {
const actual = serializer[item](
function(cb) {
const headers = {
'X-Consul-Namespace': nspace,
};
const body = true;
return cb(headers, body);
},
{},
{
Key: uid,
Datacenter: dc,
Partition: partition,
}
);
assert.deepEqual(actual, expected);
});
});
test("respondForCreate/UpdateRecord returns the original object if it's not a Boolean", function(assert) {
const uid = 'key/name';
const dc = 'dc1';
const nspace = 'default';
const partition = 'default';
const expected = {
uid: JSON.stringify([partition, nspace, dc, uid]),
Key: uid,
Partition: partition,
Namespace: nspace,
Datacenter: dc,
};
const serializer = this.owner.lookup('serializer:kv');
serializer.primaryKey = 'uid';
serializer.slugKey = 'Key';
['respondForCreateRecord'].forEach(function(item) {
const actual = serializer[item](
function(cb) {
const headers = {
'X-Consul-Namespace': nspace,
'X-Consul-Partition': partition,
};
const body = {
Key: uid,
Datacenter: dc,
};
return cb(headers, body);
},
{},
{
Key: uid,
Datacenter: dc,
Partition: partition,
}
);
assert.deepEqual(actual, expected);
});
});
test('serialize decodes Value if its a string', function(assert) {
const serializer = this.owner.lookup('serializer:kv');
set(serializer, 'decoder', {
execute: sinon.stub().returnsArg(0),
});
//
const expected = 'value';
const snapshot = {
attr: function(prop) {
return expected;
},
};
const options = {};
const actual = serializer.serialize(snapshot, options);
assert.equal(actual, expected);
assert.ok(serializer.decoder.execute.calledOnce);
});
});