1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| private Mock<IDataFactoryFacade> dataFactoryMock; private Mock<IVerksamhetRepository> verksamhetRepositoryMock; private Mock<PagePropertyUtils> pagePropertyUtilsMock; private Mock<IPageReferenceFacade> pageReferenceMock; private PageData utbildningsPage; private UtbildningPageHandler utbildning;
[SetUp] public void Setup() { int utbildningsPageId = 4711; utbildningsPage = CreatePageDataObject( "Testutbildning", utbildningsPageId ); verksamhetRepositoryMock = new Mock<IVerksamhetRepository>(); pagePropertyUtilsMock = new Mock<PagePropertyUtils>(); pageReferenceMock = new Mock<IPageReferenceFacade>(); dataFactoryMock = new Mock<IDataFactoryFacade>(); dataFactoryMock.Setup( d => d.GetPage( It.Is<PageReference>( p => p.ID == utbildningsPageId ) ) ) .Returns( utbildningsPage ); utbildning = new UtbildningPageHandler( dataFactoryMock.Object, verksamhetRepositoryMock.Object, pagePropertyUtilsMock.Object, pageReferenceMock.Object, utbildningsPageId ); }
private int MockOrtContainerPage() { var pageName = GetPrivateField<string>( utbildning, "OrtContainerPageName" ); int containerPageId = 17;
var containerPage = CreatePageDataObject( pageName, containerPageId );
dataFactoryMock.Setup( d => d.GetChildren( It.Is<PageReference>( p => p.ID == utbildningsPage.PageLink.ID ) ) ).Returns( new PageDataCollection( new List<PageData> { containerPage } ) ); return containerPageId; }
protected static PageData CreateDefaultPageDataObject() { var page = new PageData(); page.Property.Add( "PageName", new PropertyString() ); var propertyPageReference = new PropertyPageReference( PageReference.EmptyReference ); SetPrivateField<Guid>( propertyPageReference, "_pageGuid", Guid.NewGuid() ); page.Property.Add( "PageLink", propertyPageReference ); page.ACL = new EPiServer.Security.AccessControlList(); return page; }
protected static T GetPrivateField<T>( object o, string fieldName ) { Type type = o.GetType(); BindingFlags privateBindings = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static; FieldInfo match = type.GetField( fieldName, privateBindings ); if (match != null) { return (T)match.GetValue( o ); } return default(T); }
[Test] public void CreateOrtkoppling_Will_Create_Page_And_Save_VerksamhetsId_As_Property() { var containerPageId = MockOrtContainerPage(); var verksamhet = new Verksamhet { Id = 17, Besöksadress = "Gatan 1", Ort = "Staden", Postadress = "123 45" }; verksamhetRepositoryMock.Setup( v => v.Get( verksamhet.Id ) ).Returns( verksamhet ); var defaultPageData = CreateDefaultPageDataObject(); var propertyName = GetPrivateField<string>( utbildning, "VerksamhetsIdProperty" ); defaultPageData.Property.Add( propertyName, new PropertyNumber() ); var ortPageTypeId = 19; pagePropertyUtilsMock.Setup( p => p.GetPropertyValue<int>( It.IsAny<PageReference>(), "UtbildningsOrtPageType" ) ).Returns( ortPageTypeId ); dataFactoryMock.Setup( d => d.GetDefaultPageData( It.Is<PageReference>( p => p.ID == containerPageId ), ortPageTypeId ) ) .Returns( defaultPageData ); dataFactoryMock.Setup(d => d.Save(defaultPageData, EPiServer.DataAccess.SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess)) .Callback<PageData, EPiServer.DataAccess.SaveAction, EPiServer.Security.AccessLevel>( ( pageToSave, saveAction, accessLevel ) => { var id = (int)pageToSave.Property[propertyName].Value; Assert.That( id, Is.EqualTo( verksamhet.Id ) ); Assert.That( pageToSave.PageName, Is.EqualTo( string.Format( "{0}, {1}", verksamhet.Ort, verksamhet.Besöksadress ) ) ); } );
utbildning.CreateOrtkoppling( verksamhet.Id );
dataFactoryMock.VerifyAll(); verksamhetRepositoryMock.VerifyAll(); }
|