public void SaveModifiedMockEntitiesTest() { DataProviderBase mockRepos = new MemoryDataProvider(); // load mock data var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var myMockEntityQuery = DataModel <MockPoco> .NewQuery() .WhereColumn["customentity_id"].IsGreaterThan(-1); var entities = mockRepos.LoadModels(myMockEntityQuery); entities[0].Entity.MockStringValue = "jkl"; entities[1].Entity.MockStringValue = "mno"; entities[2].Entity.MockStringValue = "pqr"; entities.Save(); entities = mockRepos.LoadModels(myMockEntityQuery); Assert.IsTrue(entities[0].Entity.MockStringValue == "jkl"); Assert.IsTrue(entities[1].Entity.MockStringValue == "mno"); Assert.IsTrue(entities[2].Entity.MockStringValue == "pqr"); }
public void DeepLoadEntityManyToManyTest() { var usersTable = CreateAndPopulateMockTable("User"); var groupsTable = CreateAndPopulateMockTable("Group"); var groupUserTable = CreateAndPopulateMockTable("GroupUser"); var memProvider = new MemoryDataProvider(); memProvider.AddTable(usersTable); memProvider.AddTable(groupsTable); memProvider.AddTable(groupUserTable); var query = new DataModelQuery <DataModel <Group> >(); var egroups = memProvider.DeepLoadModels(query); var groups = new DataModelCollection <DataModel <Group> >(egroups); Assert.IsTrue(groups.Count == 2, "Groups did not load"); Assert.IsNotNull(groups[0].Entity, "Group 0 Entity was not set"); Assert.IsNotNull(groups[0].Entity.Users, "Group 0 Users were not set"); Assert.IsTrue(groups[0].Entity.Users.Count == 2, "Users count (group 0 of 0,1) is not 2"); Assert.IsNotNull(groups[1].Entity, "Group 1 Entity was not set"); Assert.IsNotNull(groups[0].Entity.Users, "Group 1 Users were not set"); Assert.IsTrue(groups[1].Entity.Users.Count == 2, "Users count (group 1 of 0,1) is not 2"); Assert.IsTrue(groups[0].Entity.Users[0].ID != groups[1].Entity.Users[0].ID, "Same user loaded between groups"); Assert.IsTrue(groups[0].Entity.Users[0].ID != groups[1].Entity.Users[1].ID, "Same user loaded between groups"); Assert.IsTrue(groups[1].Entity.Users[0].ID != groups[0].Entity.Users[0].ID, "Same user loaded between groups"); }
public void RepositoryStart_DataProviderExtensions_OverrideDefault() { var dbProvider = new InMemoryDataProvider(); var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty()); var searchEngine = new InMemorySearchEngine(GetInitialIndex()); var accessProvider = new DesktopAccessProvider(); var emvrProvider = new ElevatedModificationVisibilityRule(); // switch this ON here for testing purposes (to check that repo start does not override it) SnTrace.Custom.Enabled = true; // switch this ON here for testing purposes (to check that repo start does not override it) SnTrace.Custom.Enabled = true; var repoBuilder = new RepositoryBuilder() .UseAccessProvider(new DesktopAccessProvider()) .UseDataProvider(dbProvider) .UseInitialData(GetInitialData()) .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider)) .UseBlobProviderSelector(new InMemoryBlobProviderSelector()) .UseAccessTokenDataProviderExtension(new TestAccessTokenDataProvider()) // ACTION: set test provider .UseSecurityDataProvider(securityDbProvider) .UseSearchEngine(searchEngine) .UseAccessProvider(accessProvider) .UseElevatedModificationVisibilityRuleProvider(emvrProvider) .StartIndexingEngine(false) .StartWorkflowEngine(false) .UseTraceCategories("Test", "Web", "System"); using (Repository.Start(repoBuilder)) { Assert.AreEqual(typeof(TestAccessTokenDataProvider), DataStore.GetDataProviderExtension <IAccessTokenDataProviderExtension>().GetType()); } }
public void SaveItem_AddedTwoObjects_TrueWithCrossReferenceAssert() { //Arrange MemoryDataProvider memoryDataProvider = new MemoryDataProvider(); string className = "testKeyClassName"; string key1 = $"{className}_1"; List <string> item1 = new List <string>() { "item1", "item2", "item3" }; string key2 = $"{className}_2"; List <string> item2 = new List <string>() { "item1", "item2", "item3" }; //Act2 bool result1 = memoryDataProvider.SaveItem(key1, item1); bool result2 = memoryDataProvider.SaveItem(key2, item2); //Assert Assert.IsTrue(result1, "SaveItem is returning a False in item 1 when have to return a True"); Assert.IsTrue(result2, "SaveItem is returning a False in item 2 when have to return a True"); Assert.ReferenceEquals(item1, memoryDataProvider.GetItem <List <string> >(key1)); Assert.AreNotEqual(item1, memoryDataProvider.GetItem <List <string> >(key2)); Assert.ReferenceEquals(item2, memoryDataProvider.GetItem <List <string> >(key2)); Assert.AreNotEqual(item2, memoryDataProvider.GetItem <List <string> >(key1)); Assert.AreEqual(memoryDataProvider.GetItems <List <List <string> > >(className).Count, 2); }
public void SaveModifiedEntityTest() { DataProviderBase mockRepos = new MemoryDataProvider(); // load mock data var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var myMockEntityQuery = DataModel <MockPoco> .NewQuery() .WhereColumn["string_value"].IsEqualTo("abc"); var entity = mockRepos.LoadModel(myMockEntityQuery); entity.Entity.MockStringValue = "xyz"; entity.Save(); myMockEntityQuery = DataModel <MockPoco> .NewQuery() .WhereColumn["string_value"].IsEqualTo("xyz"); entity = mockRepos.LoadModel(myMockEntityQuery); Assert.IsNotNull(entity); Assert.AreEqual("xyz", entity.Entity.MockStringValue); Assert.IsTrue(entity.DataProvider == mockRepos); }
public void DeepLoadEntityOneToManyTest() { var companyTable = CreateAndPopulateMockTable("Company"); var contactTable = CreateAndPopulateMockTable("Contact"); var memProvider = new MemoryDataProvider(); memProvider.AddTable(companyTable); memProvider.AddTable(contactTable); var query = new DataModelQuery <DataModel <Company> >() .WhereProperty["ID"].IsEqualTo(1); var decompany = memProvider.DeepLoadModel(query) as DataModel <Company>; Assert.IsNotNull(decompany); Company company = decompany.Entity; Assert.IsNotNull(company); Assert.IsNotNull(company.Contacts, "Contacts not populated"); Assert.IsTrue(company.Contacts.Count == 2, company.Contacts.Count + " loaded (expected 2)."); Assert.IsTrue(company.Contacts[0].Name == "Betty Sue" || company.Contacts[0].Name == "John Doe"); Assert.IsTrue(company.Contacts[1].Name == "Betty Sue" || company.Contacts[1].Name == "John Doe"); }
public void LoadMockEntitiesTest() { DataProviderBase mockRepos = new MemoryDataProvider(); // load mock data var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var myMockEntityQuery = DataModel <MockPoco> .NewQuery() .WhereColumn["customentity_id"].IsGreaterThan(-1) .AddSortItem("customentity_id"); var entities = myMockEntityQuery.SelectMany(mockRepos); // mockRepos.LoadModels(myMockEntityQuery); Assert.IsNotNull(entities); Assert.IsTrue(entities.Count > 0); Assert.IsTrue(entities.DataProvider == mockRepos); var objects = entities.Unwrap(); /*always true: * Assert.IsTrue(entities[0] is DataModel<MockPoco>);*/ Assert.IsTrue(objects[0] is MockPoco); Assert.IsNotNull(objects); Assert.IsTrue(objects.Count > 0); }
public void RepositoryStart_NamedProviders() { var dbProvider = new InMemoryDataProvider(); var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty()); var searchEngine = new InMemorySearchEngine(GetInitialIndex()); var accessProvider = new DesktopAccessProvider(); var emvrProvider = new ElevatedModificationVisibilityRule(); // switch this ON here for testing purposes (to check that repo start does not override it) SnTrace.Custom.Enabled = true; var repoBuilder = new RepositoryBuilder() .UseAccessProvider(new DesktopAccessProvider()) .UseDataProvider(dbProvider) .UseInitialData(GetInitialData()) .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider)) .UseBlobProviderSelector(new InMemoryBlobProviderSelector()) .AddBlobProvider(new InMemoryBlobProvider()) .UseSecurityDataProvider(securityDbProvider) .UseSecurityMessageProvider(new DefaultMessageProvider(new MessageSenderManager())) .UseSearchEngine(searchEngine) .UseAccessProvider(accessProvider) .UseElevatedModificationVisibilityRuleProvider(emvrProvider) .StartIndexingEngine(false) .StartWorkflowEngine(false) .UseTraceCategories("Test", "Web", "System"); using (Repository.Start(repoBuilder)) { Assert.AreSame(dbProvider, Providers.Instance.DataStore.DataProvider); Assert.AreEqual(searchEngine, SearchManager.SearchEngine); Assert.AreEqual(accessProvider, AccessProvider.Current); Assert.AreEqual(emvrProvider, Providers.Instance.ElevatedModificationVisibilityRuleProvider); // Currently this does not work, because the property below re-creates the security // db provider from the prototype, so it cannot be ref equal with the original. // Assert.AreEqual(securityDbProvider, SecurityHandler.SecurityContext.DataProvider); Assert.AreEqual(securityDbProvider, Providers.Instance.SecurityDataProvider); // Check a few trace categories that were switched ON above. Assert.IsTrue(SnTrace.Custom.Enabled); Assert.IsTrue(SnTrace.Test.Enabled); Assert.IsTrue(SnTrace.Web.Enabled); Assert.IsTrue(SnTrace.System.Enabled); Assert.IsFalse(SnTrace.TaskManagement.Enabled); Assert.IsFalse(SnTrace.Workflow.Enabled); } }
public void SaveItem_NewObject_False() { //Arrange MemoryDataProvider memoryDataProvider = new MemoryDataProvider(); string key = null; List <string> item = new List <string>() { "item1", "item2", "item3" }; //Act bool result = memoryDataProvider.SaveItem(key, item); //Assert Assert.IsFalse(result, "SaveItem is returning a True when have to return a False"); }
public void SaveItem_NewObject_TrueWithAsserts() { //Arrange MemoryDataProvider memoryDataProvider = new MemoryDataProvider(); string key = "testKey"; List <string> item = new List <string>() { "item1", "item2", "item3" }; //Act bool result = memoryDataProvider.SaveItem(key, item); //Assert Assert.IsTrue(result, "SaveItem is returning a False when have to return a True"); Assert.ReferenceEquals(item, memoryDataProvider.GetItem <List <string> >(key)); }
public void DeepLoadEntityManyToOneTest3() { var companyTable = CreateAndPopulateMockTable("Company"); var contactTable = CreateAndPopulateMockTable("Contact"); var memProvider = new MemoryDataProvider(); memProvider.AddTable(companyTable); memProvider.AddTable(contactTable); var query = new DataModelQuery <Contact>() .WhereProperty["ID"].IsEqualTo(3); var contact = memProvider.DeepLoadModel(query) as Contact; Assert.IsNotNull(contact); Assert.IsTrue(contact.Name == "John Doe"); Assert.IsNotNull(contact.Company); Assert.IsTrue(contact.Company.CompanyName == "Acme, Inc."); }
public void RepositoryStart_NullPopulator() { var dbProvider2 = new InMemoryDataProvider(); Providers.Instance.DataProvider = dbProvider2; var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty()); var searchEngine = new InMemorySearchEngine(GetInitialIndex()); var accessProvider = new DesktopAccessProvider(); var emvrProvider = new ElevatedModificationVisibilityRule(); var repoBuilder = new RepositoryBuilder() .UseAccessProvider(new DesktopAccessProvider()) .UseDataProvider(dbProvider2) .UseInitialData(GetInitialData()) .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider2)) .UseBlobProviderSelector(new InMemoryBlobProviderSelector()) .AddBlobProvider(new InMemoryBlobProvider()) .UseSecurityDataProvider(securityDbProvider) .UseSecurityMessageProvider(new DefaultMessageProvider(new MessageSenderManager())) .UseSearchEngine(searchEngine) .UseAccessProvider(accessProvider) .UseElevatedModificationVisibilityRuleProvider(emvrProvider) .StartIndexingEngine(false) .StartWorkflowEngine(false) .UseTraceCategories("Test", "Web", "System"); var originalIsOuterSearchEngineEnabled = Indexing.IsOuterSearchEngineEnabled; Indexing.IsOuterSearchEngineEnabled = false; try { using (Repository.Start(repoBuilder)) { Assert.IsFalse(SearchManager.IsOuterEngineEnabled); Assert.AreEqual(typeof(InternalSearchEngine), SearchManager.SearchEngine.GetType()); var populator = SearchManager.GetIndexPopulator(); Assert.AreEqual(typeof(NullPopulator), populator.GetType()); } } finally { Indexing.IsOuterSearchEngineEnabled = originalIsOuterSearchEngineEnabled; } }
public void RepositoryStart_AuditEventWriter_Database() { var originalWriter = SnLog.AuditEventWriter; var auditWriter = new DatabaseAuditEventWriter(); var dbProvider = new InMemoryDataProvider(); var securityDbProvider = new MemoryDataProvider(DatabaseStorage.CreateEmpty()); var searchEngine = new InMemorySearchEngine(GetInitialIndex()); var accessProvider = new DesktopAccessProvider(); var emvrProvider = new ElevatedModificationVisibilityRule(); try { // Clear the slot to ensure a real test. Providers.Instance.AuditEventWriter = null; var repoBuilder = new RepositoryBuilder() .UseAccessProvider(new DesktopAccessProvider()) .UseDataProvider(dbProvider) .UseAuditEventWriter(auditWriter) // <-- The important line .UseInitialData(GetInitialData()) .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dbProvider)) .UseBlobProviderSelector(new InMemoryBlobProviderSelector()) .AddBlobProvider(new InMemoryBlobProvider()) .UseSecurityDataProvider(securityDbProvider) .UseSecurityMessageProvider(new DefaultMessageProvider(new MessageSenderManager())) .UseSearchEngine(searchEngine) .UseAccessProvider(accessProvider) .UseElevatedModificationVisibilityRuleProvider(emvrProvider) .StartIndexingEngine(false) .StartWorkflowEngine(false) .UseTraceCategories("Test", "Web", "System"); using (Repository.Start(repoBuilder)) { Assert.AreSame(auditWriter, Providers.Instance.AuditEventWriter); Assert.AreSame(auditWriter, SnLog.AuditEventWriter); } } finally { SnLog.AuditEventWriter = originalWriter; } }
public void LoadMockEntityTest() { DataProviderBase mockRepos = new MemoryDataProvider(); // load mock data var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var myMockEntityQuery = DataModel <MockPoco> .NewQuery() .WhereProperty["ID"].IsEqualTo(2); var entity = myMockEntityQuery.SelectFirst(mockRepos); // mockRepos.LoadModel(myMockEntityQuery); Assert.IsNotNull(entity); Assert.AreEqual("ghi", entity.Entity.MockStringValue); Assert.IsTrue(entity.DataProvider == mockRepos); }
public void DeepLoadEntityManyToOneTest4() { var companyTable = CreateAndPopulateMockTable("Company"); var contactTable = CreateAndPopulateMockTable("Contact"); var memProvider = new MemoryDataProvider(); memProvider.AddTable(companyTable); memProvider.AddTable(contactTable); var query = new DataModelQuery <Contact>() .WhereProperty["ID"].IsEqualTo(4); var contact = memProvider.DeepLoadModel(query) as Contact; Assert.IsNotNull(contact); Assert.IsTrue(contact.Name == "Jane Lane"); Assert.IsNotNull(contact.Company); Assert.IsTrue(contact.Company.CompanyName == "Foobar, Ltd."); Assert.IsTrue(contact.Company.Contacts != null); Assert.IsTrue(contact.Company.Contacts.Count > 0); }
public void DeepLoadEntityTest() { DataProviderBase mockRepos = new MemoryDataProvider(); var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var table2 = ((MemoryDataProvider)mockRepos).AddTable("mock_table2"); PopulateMockTable(table2); var query = new DataModelQuery <DataModel <DataModelRelationshipMetadataTest.MockPocoChild> >() .WhereProperty["ID"].IsEqualTo(2); var e = mockRepos.DeepLoadModel(query) as DataModel <DataModelRelationshipMetadataTest.MockPocoChild>; Assert.IsNotNull(e, "Nothing was returned from DeepLoad query."); Assert.IsNotNull(e.Entity.MockPoco, "Child object not assigned in DeepLoad"); Assert.IsTrue(e.Entity.MockPoco.MockDecimalValue == e.Entity.MockDecimalValue, "Child object field value mismatch"); }
public void DeepLoadEntitiesTest() { DataProviderBase mockRepos = new MemoryDataProvider(); var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var table2 = ((MemoryDataProvider)mockRepos).AddTable("mock_table2"); PopulateMockTable(table2); var query = DataModel <DataModelRelationshipMetadataTest.MockPocoChild> .NewQuery(); DataModelCollection <DataModel <DataModelRelationshipMetadataTest.MockPocoChild> > entities = mockRepos.DeepLoadModels(query); Assert.IsNotNull(entities); Assert.IsTrue(entities.Count == 4); Assert.IsTrue(entities[0].Entity.MockPoco != null); Assert.IsTrue(entities[3].Entity.MockPoco != null); Assert.IsTrue(entities[2].Entity.MockPoco.MockDecimalValue .Equals(entities[2].Entity.MockDecimalValue)); }
public void DeleteEntityTest() { DataProviderBase mockRepos = new MemoryDataProvider(); // load mock data var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var myMockEntityQuery = DataModel <MockPoco> .NewQuery() .WhereColumn["string_value"].IsEqualTo("abc"); var entity = mockRepos.LoadModel(myMockEntityQuery); entity.MarkDeleted = true; entity.Save(); entity = mockRepos.LoadModel(myMockEntityQuery); Assert.IsNull(entity); }
public void DeleteEntitiesTest() { DataProviderBase mockRepos = new MemoryDataProvider(); // load mock data var table = ((MemoryDataProvider)mockRepos).AddTable("mock_table"); PopulateMockTable(table); var myMockEntityQuery = DataModel <MockPoco> .NewQuery() .WhereColumn["customentity_id"].IsGreaterThan(-1); var entities = mockRepos.LoadModels(myMockEntityQuery); entities[0].MarkDeleted = true; entities[2].MarkDeleted = true; entities.Save(); entities = mockRepos.LoadModels(myMockEntityQuery); Assert.IsTrue(entities.Count == 2); }
public void DeepSaveEntityTest() { // todo: test all four relationship types var companyTable = CreateAndPopulateMockTable("Company"); var contactTable = CreateAndPopulateMockTable("Contact"); var memProvider = new MemoryDataProvider(); memProvider.AddTable(companyTable); memProvider.AddTable(contactTable); var query = new DataModelQuery <DataModel <Company> >() .WhereProperty["ID"].IsEqualTo(1); var decompany = memProvider.DeepLoadModel(query); var company = decompany.Entity; company.CompanyName += "_"; foreach (var c in company.Contacts) { c.Name += "_"; } decompany.Save(true); query = new DataModelQuery <DataModel <Company> >() .WhereProperty["ID"].IsEqualTo(1); decompany = memProvider.DeepLoadModel(query); company = decompany.Entity; Assert.IsTrue(company.CompanyName.Length > 1 && company.CompanyName.EndsWith("_")); Assert.IsTrue(company.Contacts[0] .Name.Length > 1 && company.Contacts[0] .Name.EndsWith("_")); Assert.IsTrue(company.Contacts[company.Contacts.Count - 1] .Name.Length > 1 && company.Contacts[company.Contacts.Count - 1] .Name.EndsWith("_")); }
public void DeepSaveEntitiesTest() { var companyTable = CreateAndPopulateMockTable("Company"); var contactTable = CreateAndPopulateMockTable("Contact"); var memProvider = new MemoryDataProvider(); memProvider.AddTable(companyTable); memProvider.AddTable(contactTable); var query = new DataModelQuery <DataModel <Company> >() .WhereProperty["ID"].IsEqualTo(1); var decompany = memProvider.DeepLoadModel(query); var company = decompany.Entity; company.CompanyName += "_"; foreach (var c in company.Contacts) { c.Name += "_"; } var query2 = new DataModelQuery <DataModel <Company> >() .WhereProperty["ID"].IsEqualTo(2); var decompany2 = memProvider.DeepLoadModel(query2); var company2 = decompany2.Entity; company2.CompanyName = "_" + company2.CompanyName; foreach (var c in company2.Contacts) { c.Name = "_" + c.Name; } var col = new DataModelCollection <DataModel <Company> >(); col.Add(decompany); col.Add(decompany2); col.DataProvider = memProvider; col.Save(true); query = new DataModelQuery <DataModel <Company> >() .WhereProperty["ID"].IsEqualTo(1); decompany = memProvider.DeepLoadModel(query); company = decompany.Entity; Assert.IsTrue(company.CompanyName.Length > 1 && company.CompanyName.EndsWith("_")); Assert.IsTrue(company.Contacts[0] .Name.Length > 1 && company.Contacts[0] .Name.EndsWith("_")); Assert.IsTrue(company.Contacts[company.Contacts.Count - 1] .Name.Length > 1 && company.Contacts[company.Contacts.Count - 1] .Name.EndsWith("_")); query = new DataModelQuery <DataModel <Company> >() .WhereProperty["ID"].IsEqualTo(2); decompany = memProvider.DeepLoadModel(query); company = decompany.Entity; Assert.IsTrue(company.CompanyName.Length > 1 && company.CompanyName.StartsWith("_")); Assert.IsTrue(company.Contacts[0] .Name.Length > 1 && company.Contacts[0] .Name.StartsWith("_")); Assert.IsTrue(company.Contacts[company.Contacts.Count - 1] .Name.Length > 1 && company.Contacts[company.Contacts.Count - 1] .Name.StartsWith("_")); }