diff --git a/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js b/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js index 619e1b77c3..efa7046569 100644 --- a/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js +++ b/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js @@ -1,5 +1,5 @@ angular.module('umbraco.mocks'). - factory('mocksUtils', ['$cookies', function ($cookies) { + factory('mocksUtils', ['$cookies', 'udiService', function ($cookies, udiService) { 'use strict'; //by default we will perform authorization @@ -40,13 +40,17 @@ angular.module('umbraco.mocks'). }, /** Creats a mock content object */ - getMockContent: function(id) { + getMockContent: function (id, key, udi) { + key = key || String.CreateGuid(); + var udi = udi || udiService.build("content", key); var node = { name: "My content with id: " + id, updateDate: new Date().toIsoDateTimeString(), publishDate: new Date().toIsoDateTimeString(), createDate: new Date().toIsoDateTimeString(), id: id, + key: key, + udi: udi, parentId: 1234, icon: "icon-umb-content", owner: { name: "Administrator", id: 0 }, @@ -282,13 +286,17 @@ angular.module('umbraco.mocks'). /** Creats a mock variant content object */ - getMockVariantContent: function(id) { + getMockVariantContent: function(id, key, udi) { + key = key || String.CreateGuid(); + var udi = udi || udiService.build("content", key); var node = { name: "My content with id: " + id, updateDate: new Date().toIsoDateTimeString(), publishDate: new Date().toIsoDateTimeString(), createDate: new Date().toIsoDateTimeString(), id: id, + key: key, + udi: udi, parentId: 1234, icon: "icon-umb-content", owner: { name: "Administrator", id: 0 }, diff --git a/src/Umbraco.Web.UI.Client/test/unit/common/services/block-editor-service.spec.js b/src/Umbraco.Web.UI.Client/test/unit/common/services/block-editor-service.spec.js index 7af4b7a74a..577cb1b3e8 100644 --- a/src/Umbraco.Web.UI.Client/test/unit/common/services/block-editor-service.spec.js +++ b/src/Umbraco.Web.UI.Client/test/unit/common/services/block-editor-service.spec.js @@ -1,12 +1,15 @@ describe('blockEditorService tests', function () { + var key = "6A1F5BDD-67EF-4173-B061-D6348ED07094"; + var udi = "umb://element/6A1F5BDD67EF4173B061D6348ED07094"; + var blockEditorService, contentResource, $rootScope, $scope; beforeEach(module('umbraco.services')); beforeEach(module('umbraco.resources')); beforeEach(module('umbraco.mocks')); beforeEach(module('umbraco')); - + beforeEach(inject(function ($injector, mocksUtils, _$rootScope_) { mocksUtils.disableAuth(); @@ -17,7 +20,7 @@ contentResource = $injector.get("contentResource"); spyOn(contentResource, "getScaffoldByKey").and.callFake( function () { - return Promise.resolve(mocksUtils.getMockVariantContent(1234)) + return Promise.resolve(mocksUtils.getMockVariantContent(1234, key, udi)) } ); @@ -26,13 +29,13 @@ })); - var blockConfigurationMock = { contentTypeKey: "7C5B74D1-E2F9-45A3-AE4B-FC7A829BF8AB", label:"Test label", settingsElementTypeKey: null, view: "testview.html"}; + var blockConfigurationMock = { contentTypeKey: "7C5B74D1-E2F9-45A3-AE4B-FC7A829BF8AB", label: "Test label", settingsElementTypeKey: null, view: "testview.html" }; var propertyModelMock = { layout: { "Umbraco.TestBlockEditor": [ { - udi: 1234 + udi: udi } ] }, @@ -45,7 +48,7 @@ ] }; - var blockWithSettingsConfigurationMock = { contentTypeKey: "7C5B74D1-E2F9-45A3-AE4B-FC7A829BF8AB", label:"Test label", settingsElementTypeKey: "7C5B74D1-E2F9-45A3-AE4B-FC7A829BF8AB", view: "testview.html"}; + var blockWithSettingsConfigurationMock = { contentTypeKey: "7C5B74D1-E2F9-45A3-AE4B-FC7A829BF8AB", label: "Test label", settingsElementTypeKey: "7C5B74D1-E2F9-45A3-AE4B-FC7A829BF8AB", view: "testview.html" }; var propertyModelWithSettingsMock = { layout: { "Umbraco.TestBlockEditor": [ @@ -57,7 +60,7 @@ }, contentData: [ { - udi: 1234, + udi: udi, contentTypeKey: "7C5B74D1-E2F9-45A3-AE4B-FC7A829BF8AB", testproperty: "myTestValue" } @@ -72,7 +75,7 @@ }; describe('init blockEditorModelObject', function () { - + it('fail if no model value', function () { function createWithNoModelValue() { blockEditorService.createModelObject(null, "Umbraco.TestBlockEditor", [], $scope, $scope); @@ -89,29 +92,29 @@ it('getBlockConfiguration provide the requested block configurtion', function () { var modelObject = blockEditorService.createModelObject({}, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + expect(modelObject.getBlockConfiguration(blockConfigurationMock.contentTypeKey).label).toBe(blockConfigurationMock.label); }); it('load provides data for itemPicker', function (done) { var modelObject = blockEditorService.createModelObject({}, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { var itemPickerOptions = modelObject.getAvailableBlocksForBlockPicker(); expect(itemPickerOptions.length).toBe(1); expect(itemPickerOptions[0].blockConfigModel.contentTypeKey).toBe(blockConfigurationMock.contentTypeKey); done(); }); - + }); - + it('getLayoutEntry has values', function (done) { - + var modelObject = blockEditorService.createModelObject(propertyModelMock, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - + var layout = modelObject.getLayout(); expect(layout).not.toBeUndefined(); @@ -121,85 +124,95 @@ done(); }); - + }); - + it('getBlockObject has values', function (done) { - + var modelObject = blockEditorService.createModelObject(propertyModelMock, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - - var layout = modelObject.getLayout(); - var blockObject = modelObject.getBlockObject(layout[0]); + try { + var layout = modelObject.getLayout(); - expect(blockObject).not.toBeUndefined(); - expect(blockObject.data.udi).toBe(propertyModelMock.contentData[0].udi); - expect(blockObject.content.variants[0].tabs[0].properties[0].value).toBe(propertyModelMock.contentData[0].testproperty); + var blockObject = modelObject.getBlockObject(layout[0]); - done(); + expect(blockObject).not.toBeUndefined(); + expect(blockObject.data.udi).toBe(propertyModelMock.contentData[0].udi); + expect(blockObject.content.variants[0].tabs[0].properties[0].value).toBe(propertyModelMock.contentData[0].testproperty); + + done(); + } catch (e) { + done.fail(e); + } }); - + }); - + it('getBlockObject syncs primitive values', function (done) { var propertyModel = angular.copy(propertyModelMock); var modelObject = blockEditorService.createModelObject(propertyModel, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - - var layout = modelObject.getLayout(); - var blockObject = modelObject.getBlockObject(layout[0]); + try { + var layout = modelObject.getLayout(); - blockObject.content.variants[0].tabs[0].properties[0].value = "anotherTestValue"; + var blockObject = modelObject.getBlockObject(layout[0]); - $rootScope.$digest();// invoke angularJS Store. + blockObject.content.variants[0].tabs[0].properties[0].value = "anotherTestValue"; - expect(blockObject.data).toEqual(propertyModel.contentData[0]); - expect(blockObject.data.testproperty).toBe("anotherTestValue"); - expect(propertyModel.contentData[0].testproperty).toBe("anotherTestValue"); + $rootScope.$digest();// invoke angularJS Store. - // + expect(blockObject.data).toEqual(propertyModel.contentData[0]); + expect(blockObject.data.testproperty).toBe("anotherTestValue"); + expect(propertyModel.contentData[0].testproperty).toBe("anotherTestValue"); - done(); + done(); + } catch (e) { + done.fail(e); + } }); - + }); - + it('getBlockObject syncs values of object', function (done) { var propertyModel = angular.copy(propertyModelMock); - var complexValue = {"list": ["A", "B", "C"]}; + var complexValue = { "list": ["A", "B", "C"] }; propertyModel.contentData[0].testproperty = complexValue; var modelObject = blockEditorService.createModelObject(propertyModel, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - - var layout = modelObject.getLayout(); - var blockObject = modelObject.getBlockObject(layout[0]); + try { + var layout = modelObject.getLayout(); - blockObject.content.variants[0].tabs[0].properties[0].value.list[0] = "AA"; - blockObject.content.variants[0].tabs[0].properties[0].value.list.push("D"); + var blockObject = modelObject.getBlockObject(layout[0]); - $rootScope.$digest();// invoke angularJS Store. + blockObject.content.variants[0].tabs[0].properties[0].value.list[0] = "AA"; + blockObject.content.variants[0].tabs[0].properties[0].value.list.push("D"); - expect(propertyModel.contentData[0].testproperty.list[0]).toBe("AA"); - expect(propertyModel.contentData[0].testproperty.list.length).toBe(4); + $rootScope.$digest();// invoke angularJS Store. - done(); + expect(propertyModel.contentData[0].testproperty.list[0]).toBe("AA"); + expect(propertyModel.contentData[0].testproperty.list.length).toBe(4); + + done(); + } catch (e) { + done.fail(e); + } }); - + }); it('layout is referencing layout of propertyModel', function (done) { @@ -207,9 +220,9 @@ var propertyModel = angular.copy(propertyModelMock); var modelObject = blockEditorService.createModelObject(propertyModel, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - + var layout = modelObject.getLayout(); // remove from layout; @@ -220,7 +233,7 @@ done(); }); - + }); it('removeDataAndDestroyModel removes data', function (done) { @@ -228,30 +241,31 @@ var propertyModel = angular.copy(propertyModelMock); var modelObject = blockEditorService.createModelObject(propertyModel, "Umbraco.TestBlockEditor", [blockConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - - var layout = modelObject.getLayout(); - var blockObject = modelObject.getBlockObject(layout[0]); + try { + var layout = modelObject.getLayout(); - expect(blockObject).not.toBeUndefined(); - expect(blockObject).not.toBe(null); + var blockObject = modelObject.getBlockObject(layout[0]); - // remove from layout; - layout.splice(0, 1); + expect(blockObject).not.toBeUndefined(); + expect(blockObject).not.toBe(null); - // remove from data; - modelObject.removeDataAndDestroyModel(blockObject); + // remove from layout; + layout.splice(0, 1); - expect(propertyModel.contentData.length).toBe(0); - expect(propertyModel.contentData[0]).toBeUndefined(); - expect(propertyModel.layout["Umbraco.TestBlockEditor"].length).toBe(0); - expect(propertyModel.layout["Umbraco.TestBlockEditor"][0]).toBeUndefined(); + // remove from data; + modelObject.removeDataAndDestroyModel(blockObject); + + expect(propertyModel.contentData.length).toBe(0); + expect(propertyModel.contentData[0]).toBeUndefined(); + expect(propertyModel.layout["Umbraco.TestBlockEditor"].length).toBe(0); + expect(propertyModel.layout["Umbraco.TestBlockEditor"][0]).toBeUndefined(); + + done(); + }); - done(); - }); - }); @@ -263,11 +277,11 @@ it('getBlockObject of block with settings has values', function (done) { var propertyModel = angular.copy(propertyModelWithSettingsMock); - + var modelObject = blockEditorService.createModelObject(propertyModel, "Umbraco.TestBlockEditor", [blockWithSettingsConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - + var layout = modelObject.getLayout(); var blockObject = modelObject.getBlockObject(layout[0]); @@ -278,18 +292,18 @@ done(); }); - + }); - + it('getBlockObject of block with settings syncs primative values', function (done) { var propertyModel = angular.copy(propertyModelWithSettingsMock); var modelObject = blockEditorService.createModelObject(propertyModel, "Umbraco.TestBlockEditor", [blockWithSettingsConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - + var layout = modelObject.getLayout(); var blockObject = modelObject.getBlockObject(layout[0]); @@ -302,7 +316,7 @@ expect(blockObject.data).toEqual(propertyModel.contentData[0]); expect(blockObject.data.testproperty).toBe("anotherTestValue"); expect(propertyModel.contentData[0].testproperty).toBe("anotherTestValue"); - + expect(blockObject.settingsData).toEqual(propertyModel.settingsData[0]); expect(blockObject.settingsData.testproperty).toBe("anotherTestValueForSettings"); expect(propertyModel.settingsData[0].testproperty).toBe("anotherTestValueForSettings"); @@ -311,24 +325,24 @@ done(); }); - + }); - + it('getBlockObject of block with settings syncs values of object', function (done) { var propertyModel = angular.copy(propertyModelWithSettingsMock); - var complexValue = {"list": ["A", "B", "C"]}; + var complexValue = { "list": ["A", "B", "C"] }; propertyModel.contentData[0].testproperty = complexValue; - var complexSettingsValue = {"list": ["A", "B", "C"]}; + var complexSettingsValue = { "list": ["A", "B", "C"] }; propertyModel.settingsData[0].testproperty = complexSettingsValue; var modelObject = blockEditorService.createModelObject(propertyModel, "Umbraco.TestBlockEditor", [blockWithSettingsConfigurationMock], $scope, $scope); - + modelObject.load().then(() => { - + var layout = modelObject.getLayout(); var blockObject = modelObject.getBlockObject(layout[0]); @@ -348,11 +362,14 @@ expect(propertyModel.settingsData[0].testproperty.list.length).toBe(4); done(); - }); - + } catch (e) { + done.fail(e); + } }); + }); - }); + +}); });