mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 02:11:44 +03:00
633dc08c11
refs https://github.com/TryGhost/Team/issues/1289 We had a bug where Tiers would have a name of 'Default Product', and a Stripe Product would be created with the same name. This migration will fixes those broken Stripe Products
107 lines
3.4 KiB
JavaScript
107 lines
3.4 KiB
JavaScript
const assert = require('assert');
|
|
const sinon = require('sinon');
|
|
const Migrations = require('../../../lib/Migrations');
|
|
|
|
describe('Migrations', function () {
|
|
describe('updateStripeProductNamesFromDefaultProduct', function () {
|
|
it('Does not update Stripe product if name is not "Default Product"', async function () {
|
|
const api = {
|
|
getProduct: sinon.stub().resolves({
|
|
id: 'prod_123',
|
|
name: 'Bronze'
|
|
}),
|
|
updateProduct: sinon.stub().resolves()
|
|
};
|
|
const models = {
|
|
Product: {
|
|
transaction: fn => fn()
|
|
},
|
|
StripeProduct: {
|
|
findPage: sinon.stub().resolves({
|
|
data: [{
|
|
get(key) {
|
|
return key;
|
|
}
|
|
}],
|
|
meta: {}
|
|
})
|
|
},
|
|
Settings: {
|
|
findOne: sinon.stub().resolves({
|
|
key: 'title',
|
|
value: 'Site Title'
|
|
})
|
|
}
|
|
};
|
|
const migrations = new Migrations({
|
|
models,
|
|
api
|
|
});
|
|
|
|
await migrations.updateStripeProductNamesFromDefaultProduct();
|
|
|
|
assert(
|
|
api.updateProduct.called === false,
|
|
'Stripe product should not be updated if name is not "Default Product"'
|
|
);
|
|
});
|
|
|
|
it('Updates the Stripe Product name if it is Default Product', async function () {
|
|
const api = {
|
|
getProduct: sinon.stub().resolves({
|
|
id: 'prod_123',
|
|
name: 'Default Product'
|
|
}),
|
|
updateProduct: sinon.stub().resolves()
|
|
};
|
|
const models = {
|
|
Product: {
|
|
transaction: fn => fn()
|
|
},
|
|
StripeProduct: {
|
|
findPage: sinon.stub().resolves({
|
|
data: [{
|
|
get(key) {
|
|
return key;
|
|
}
|
|
}],
|
|
meta: {}
|
|
})
|
|
},
|
|
Settings: {
|
|
findOne: sinon.stub().resolves({
|
|
get(key) {
|
|
if (key === 'key') {
|
|
return 'title';
|
|
}
|
|
if (key === 'value') {
|
|
return 'Site Title';
|
|
}
|
|
|
|
return key;
|
|
}
|
|
})
|
|
}
|
|
};
|
|
const migrations = new Migrations({
|
|
models,
|
|
api
|
|
});
|
|
|
|
await migrations.updateStripeProductNamesFromDefaultProduct();
|
|
|
|
assert(
|
|
api.updateProduct.calledOnce,
|
|
'Stripe product should be updated if name is "Default Product"'
|
|
);
|
|
|
|
assert(
|
|
api.updateProduct.calledWith('prod_123', {
|
|
name: 'Site Title'
|
|
}),
|
|
'Stripe product should have been updated with the site title as name'
|
|
);
|
|
});
|
|
});
|
|
});
|