From 8b0c41af45f8b5b1d97ac4e75ffd7ebffa2b2a38 Mon Sep 17 00:00:00 2001 From: Simon Sarasova Date: Fri, 7 Jun 2024 01:33:10 +0000 Subject: [PATCH] Created the calculatedAttributes_test package. --- Changelog.md | 1 + Contributors.md | 2 +- internal/appUsers/appUsers.go | 305 ++++++++++-------- .../myBlockedUsers/myBlockedUsers_test.go | 2 +- internal/myDatastores/myList/myList_test.go | 2 +- internal/myDatastores/myMap/myMap_test.go | 2 +- .../myDatastores/myMapList/myMapList_test.go | 4 +- .../calculatedAttributes_test.go | 86 +++++ 8 files changed, 259 insertions(+), 145 deletions(-) create mode 100644 internal/profiles/calculatedAttributes/calculatedAttributes_test.go diff --git a/Changelog.md b/Changelog.md index 488bcf2..7740d93 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,7 @@ Small and insignificant changes may not be included in this log. ## Unversioned Changes +* Created the calculatedAttributes_test package. - *Simon Sarasova* * Improved the creation process of genetic analyses in various ways. A sample of offspring polygenic disease risk scores are now created and viewable by users. - *Simon Sarasova* * Improved the genetic analysis creation process in various ways. Recombination breakpoints are more accurately predicted now. - *Simon Sarasova* * Improved the identity hash generation tool. The fastest quantity of goroutines is now identified and used. - *Simon Sarasova* diff --git a/Contributors.md b/Contributors.md index 9a7b304..0bb36e3 100644 --- a/Contributors.md +++ b/Contributors.md @@ -9,4 +9,4 @@ Many other people have written code for modules which are imported by Seekia. Th Name | Date Of First Commit | Number Of Commits --- | --- | --- -Simon Sarasova | June 13, 2023 | 251 \ No newline at end of file +Simon Sarasova | June 13, 2023 | 252 \ No newline at end of file diff --git a/internal/appUsers/appUsers.go b/internal/appUsers/appUsers.go index 68a4343..c9b32c0 100644 --- a/internal/appUsers/appUsers.go +++ b/internal/appUsers/appUsers.go @@ -77,155 +77,20 @@ func SignInToAppUser(userName string, startBackgroundJobs bool)error{ appMemory.SetMemoryEntry("AppUser", userName) - userDirectoryPath, err := localFilesystem.GetAppUserFolderPath() + err := createAppUserDataFolders() if (err != nil) { return err } - _, err = localFilesystem.CreateFolder(userDirectoryPath) - if (err != nil) { return err } - - err = myMap.InitializeMyMapsFolder() - if (err != nil) { return err } - - err = myList.InitializeMyListsFolder() - if (err != nil) { return err } - - err = myMapList.InitializeMyMapListsFolder() - if (err != nil) { return err } - - err = mySeedPhrases.InitializeMySeedPhrasesDatastore() - if (err != nil) { return err } - - err = myBroadcasts.InitializeMyBroadcastsFolders() - if (err != nil) { return err } - - err = myLocalDesires.InitializeMyDesiresDatastore() - if (err != nil) { return err } - - err = myMateCriteria.InitializeMyCriteriaDatastore() - if (err != nil) { return err } - - err = myMatchScore.InitializeMyMatchScorePointsDatastore() - if (err != nil) { return err } - - err = mySettings.InitializeMySettingsDatastore() - if (err != nil) { return err } - - err = myLocalProfiles.InitializeMyLocalProfileDatastores() - if (err != nil) { return err } - - err = myMatches.InitializeMyMatchesDatastores() - if (err != nil) { return err } - - err = myContacts.InitializeMyContactDatastores() - if (err != nil) { return err } - - err = myIgnoredUsers.InitializeMyIgnoredUsersDatastore() - if (err != nil) { return err } - - err = myBlockedUsers.InitializeMyBlockedUsersDatastore() - if (err != nil) { return err } - - err = mySecretInboxes.InitializeMySecretInboxesDatastore() - if (err != nil) { return err } - - err = myChatKeys.InitializeMyChatKeysDatastores() - if (err != nil) { return err } - - err = myCipherKeys.InitializeMyMessageCipherKeysDatastore() - if (err != nil) { return err } - - err = myReadStatus.InitializeMyReadStatusDatastore() - if (err != nil) { return err } - - err = myConversationIndexes.InitializeMyConversationIndexesDatastore() - if (err != nil) { return err } - - err = myChatFilters.InitializeMyChatFiltersDatastores() - if (err != nil) { return err } - - err = myLikedUsers.InitializeMyLikedUsersDatastore() - if (err != nil) { return err } - - err = myChatConversations.InitializeMyChatConversationsDatastores() - if (err != nil) { return err } - - err = myChatMessages.InitializeMyChatMessageDatastores() - if (err != nil) { return err } - - err = myMessageQueue.InitializeMyMessageQueueDatastore() - if (err != nil) { return err } - - err = peerChatKeys.InitializePeerChatKeysDatastores() - if (err != nil) { return err } - - err = peerSecretInboxes.InitializePeerSecretInboxesDatastore() - if (err != nil) { return err } - - err = peerDevices.InitializePeerDevicesDatastore() - if (err != nil) { return err } - - err = sendMessages.InitializeSentMessagesDatastore() - if (err != nil) { return err } - - err = myGenomes.InitializeMyGenomeDatastore() - if (err != nil) { return err } - - err = myGenomes.CreateUserGenomesFolder() - if (err != nil) { return err } - - err = myPeople.InitializeMyGenomePeopleDatastore() - if (err != nil) { return err } - - err = myCouples.InitializeMyGenomeCouplesDatastore() - if (err != nil) { return err } - - err = myAnalyses.InitializeMyAnalysesDatastores() - if (err != nil) { return err } - - err = myAnalyses.CreateMyAnalysesFolder() + err = initializeAppUserDatastores() if (err != nil) { return err } err = myAnalyses.PruneOldAnalyses() if (err != nil) { return err } - err = viewedContent.InitializeViewedContentDatastores() - if (err != nil) { return err } - - err = logger.InitializeMyLogDatastores() - if (err != nil) { return err } - - err = viewedModerators.InitializeViewedModeratorsDatastores() - if (err != nil) { return err } - - err = viewedHosts.InitializeViewedHostsDatastores() - if (err != nil) { return err } - - err = mySkippedContent.InitializeMySkippedContentDatastores() - if (err != nil) { return err } - - err = myHiddenContent.InitializeMyHiddenContentDatastores() - if (err != nil) { return err } - if (applicationVariablesInitialized == false){ // This only needs to be done once per application startup - err := worldLocations.InitializeWorldLocationsVariables() - if (err != nil) { return err } - - err = worldLanguages.InitializeWorldLanguageVariables() - if (err != nil) { return err } - - err = locusMetadata.InitializeLocusMetadataVariables() - if (err != nil) { return err } - - monogenicDiseases.InitializeMonogenicDiseaseVariables() - - polygenicDiseases.InitializePolygenicDiseaseVariables() - - traits.InitializeTraitVariables() - - err = profileFormat.InitializeProfileFormatVariables() + err := initializeApplicationVariables() if (err != nil) { return err } applicationVariablesInitialized = true @@ -484,7 +349,7 @@ func DeleteAppUser(userName string)(bool, error){ // We use this to partially sign in to the first app user when testing packages that need it // An example is myMap, which requires an app user to be signed in to use it // We don't need to sign the user out after calling this function, because we only use this for testing -func InitializeAppUserForTests()error{ +func InitializeAppUserForTests(initializeAppDatastores bool, initializeAppVariables bool)error{ appUsersList, err := GetAppUsersList() if (err != nil){ return err } @@ -497,6 +362,51 @@ func InitializeAppUserForTests()error{ appMemory.SetMemoryEntry("AppUser", userName) + err = createAppUserDataFolders() + if (err != nil) { return err } + + if (initializeAppDatastores == true){ + + err := initializeAppUserDatastores() + if (err != nil) { return err } + } + + if (initializeAppVariables == true){ + + err := initializeApplicationVariables() + if (err != nil) { return err } + } + + return nil +} + +func initializeApplicationVariables()error{ + + // This only needs to be done once per application startup + + err := worldLocations.InitializeWorldLocationsVariables() + if (err != nil) { return err } + + err = worldLanguages.InitializeWorldLanguageVariables() + if (err != nil) { return err } + + err = locusMetadata.InitializeLocusMetadataVariables() + if (err != nil) { return err } + + monogenicDiseases.InitializeMonogenicDiseaseVariables() + + polygenicDiseases.InitializePolygenicDiseaseVariables() + + traits.InitializeTraitVariables() + + err = profileFormat.InitializeProfileFormatVariables() + if (err != nil) { return err } + + return nil +} + +func createAppUserDataFolders()error{ + userDirectoryPath, err := localFilesystem.GetAppUserFolderPath() if (err != nil) { return err } @@ -512,7 +422,124 @@ func InitializeAppUserForTests()error{ err = myMapList.InitializeMyMapListsFolder() if (err != nil) { return err } + err = myBroadcasts.InitializeMyBroadcastsFolders() + if (err != nil) { return err } + + err = myGenomes.CreateUserGenomesFolder() + if (err != nil) { return err } + + err = myAnalyses.CreateMyAnalysesFolder() + if (err != nil) { return err } + + return nil +} + +func initializeAppUserDatastores()error{ + + err := mySeedPhrases.InitializeMySeedPhrasesDatastore() + if (err != nil) { return err } + + err = myLocalDesires.InitializeMyDesiresDatastore() + if (err != nil) { return err } + + err = myMateCriteria.InitializeMyCriteriaDatastore() + if (err != nil) { return err } + + err = myMatchScore.InitializeMyMatchScorePointsDatastore() + if (err != nil) { return err } + + err = mySettings.InitializeMySettingsDatastore() + if (err != nil) { return err } + + err = myLocalProfiles.InitializeMyLocalProfileDatastores() + if (err != nil) { return err } + + err = myMatches.InitializeMyMatchesDatastores() + if (err != nil) { return err } + + err = myContacts.InitializeMyContactDatastores() + if (err != nil) { return err } + + err = myIgnoredUsers.InitializeMyIgnoredUsersDatastore() + if (err != nil) { return err } + + err = myBlockedUsers.InitializeMyBlockedUsersDatastore() + if (err != nil) { return err } + + err = mySecretInboxes.InitializeMySecretInboxesDatastore() + if (err != nil) { return err } + + err = myChatKeys.InitializeMyChatKeysDatastores() + if (err != nil) { return err } + + err = myCipherKeys.InitializeMyMessageCipherKeysDatastore() + if (err != nil) { return err } + + err = myReadStatus.InitializeMyReadStatusDatastore() + if (err != nil) { return err } + + err = myConversationIndexes.InitializeMyConversationIndexesDatastore() + if (err != nil) { return err } + + err = myChatFilters.InitializeMyChatFiltersDatastores() + if (err != nil) { return err } + + err = myLikedUsers.InitializeMyLikedUsersDatastore() + if (err != nil) { return err } + + err = myChatConversations.InitializeMyChatConversationsDatastores() + if (err != nil) { return err } + + err = myChatMessages.InitializeMyChatMessageDatastores() + if (err != nil) { return err } + + err = myMessageQueue.InitializeMyMessageQueueDatastore() + if (err != nil) { return err } + + err = peerChatKeys.InitializePeerChatKeysDatastores() + if (err != nil) { return err } + + err = peerSecretInboxes.InitializePeerSecretInboxesDatastore() + if (err != nil) { return err } + + err = peerDevices.InitializePeerDevicesDatastore() + if (err != nil) { return err } + + err = sendMessages.InitializeSentMessagesDatastore() + if (err != nil) { return err } + + err = myGenomes.InitializeMyGenomeDatastore() + if (err != nil) { return err } + + err = myPeople.InitializeMyGenomePeopleDatastore() + if (err != nil) { return err } + + err = myCouples.InitializeMyGenomeCouplesDatastore() + if (err != nil) { return err } + + err = myAnalyses.InitializeMyAnalysesDatastores() + if (err != nil) { return err } + + err = viewedContent.InitializeViewedContentDatastores() + if (err != nil) { return err } + + err = logger.InitializeMyLogDatastores() + if (err != nil) { return err } + + err = viewedModerators.InitializeViewedModeratorsDatastores() + if (err != nil) { return err } + + err = viewedHosts.InitializeViewedHostsDatastores() + if (err != nil) { return err } + + err = mySkippedContent.InitializeMySkippedContentDatastores() + if (err != nil) { return err } + + err = myHiddenContent.InitializeMyHiddenContentDatastores() + if (err != nil) { return err } + return nil } + diff --git a/internal/myBlockedUsers/myBlockedUsers_test.go b/internal/myBlockedUsers/myBlockedUsers_test.go index 8b93d75..9f27004 100644 --- a/internal/myBlockedUsers/myBlockedUsers_test.go +++ b/internal/myBlockedUsers/myBlockedUsers_test.go @@ -14,7 +14,7 @@ func TestBlockUnblockUser(t *testing.T){ t.Fatalf("Failed to initialize app datastores: " + err.Error()) } - err = appUsers.InitializeAppUserForTests() + err = appUsers.InitializeAppUserForTests(false, false) if (err != nil){ t.Fatalf("Failed to initialize app user for tests: " + err.Error()) } diff --git a/internal/myDatastores/myList/myList_test.go b/internal/myDatastores/myList/myList_test.go index 841a65d..ba0dd70 100644 --- a/internal/myDatastores/myList/myList_test.go +++ b/internal/myDatastores/myList/myList_test.go @@ -16,7 +16,7 @@ func TestMyList(t *testing.T){ if (err != nil){ t.Fatalf("Failed to initialize app datastores: " + err.Error()) } - err = appUsers.InitializeAppUserForTests() + err = appUsers.InitializeAppUserForTests(false, false) if (err != nil){ t.Fatalf("Failed to initalize app user for tests: " + err.Error()) } diff --git a/internal/myDatastores/myMap/myMap_test.go b/internal/myDatastores/myMap/myMap_test.go index 6420cc9..08eaf01 100644 --- a/internal/myDatastores/myMap/myMap_test.go +++ b/internal/myDatastores/myMap/myMap_test.go @@ -14,7 +14,7 @@ func TestMyMap(t *testing.T) { if (err != nil){ t.Fatalf("Failed to initialize app datastores: " + err.Error()) } - err = appUsers.InitializeAppUserForTests() + err = appUsers.InitializeAppUserForTests(false, false) if (err != nil){ t.Fatalf("Failed to initalize app user for tests: " + err.Error()) } diff --git a/internal/myDatastores/myMapList/myMapList_test.go b/internal/myDatastores/myMapList/myMapList_test.go index fb8bcf3..6a28b4e 100644 --- a/internal/myDatastores/myMapList/myMapList_test.go +++ b/internal/myDatastores/myMapList/myMapList_test.go @@ -16,7 +16,7 @@ func TestAddDeleteMapListData(t *testing.T) { if (err != nil){ t.Fatalf("Failed to initialize app datastores: " + err.Error()) } - err = appUsers.InitializeAppUserForTests() + err = appUsers.InitializeAppUserForTests(false, false) if (err != nil){ t.Fatalf("Failed to initalize app user for tests: " + err.Error()) } @@ -178,7 +178,7 @@ func TestMapListCopying(t *testing.T){ if (err != nil){ t.Fatalf("Failed to initialize app datastores: " + err.Error()) } - err = appUsers.InitializeAppUserForTests() + err = appUsers.InitializeAppUserForTests(false, false) if (err != nil){ t.Fatalf("Failed to initalize app user for tests: " + err.Error()) } diff --git a/internal/profiles/calculatedAttributes/calculatedAttributes_test.go b/internal/profiles/calculatedAttributes/calculatedAttributes_test.go new file mode 100644 index 0000000..0d54196 --- /dev/null +++ b/internal/profiles/calculatedAttributes/calculatedAttributes_test.go @@ -0,0 +1,86 @@ +package calculatedAttributes_test + +import "seekia/internal/profiles/calculatedAttributes" + +import "seekia/internal/appUsers" +import "seekia/internal/generate" +import "seekia/internal/identity" +import "seekia/internal/localFilesystem" +import "seekia/internal/profiles/readProfiles" + +import "testing" + + + +func TestCalculatedAttributes(t *testing.T){ + + err := localFilesystem.InitializeAppDatastores() + if (err != nil){ + t.Fatalf("InitializeAppDatastores failed: " + err.Error()) + } + + err = appUsers.InitializeAppUserForTests(true, true) + if (err != nil) { + t.Fatalf("InitializeAppUserForTests failed: " + err.Error()) + } + + calculatedAttributesList := calculatedAttributes.GetCalculatedAttributesList() + + for i:=0; i<100; i++{ + + identityPublicKey, identityPrivateKey, err := identity.GetNewRandomPublicPrivateIdentityKeys() + if (err != nil){ + t.Fatalf("GetNewRandomPublicPrivateIdentityKeys failed: " + err.Error()) + return + } + + fakeProfileBytes, err := generate.GetFakeProfile("Mate", identityPublicKey, identityPrivateKey, 1) + if (err != nil){ + t.Fatalf("GetFakeProfile failed: " + err.Error()) + return + } + + ableToRead, profileVersion, _, profileAuthor, _, _, rawProfileMap, err := readProfiles.ReadProfile(true, fakeProfileBytes) + if (err != nil){ + t.Fatalf("ReadProfile failed: " + err.Error()) + return + } + if (ableToRead == false){ + t.Fatalf("ReadProfile cant read profile returned from GetFakeProfile.") + return + } + + profileType, err := identity.GetIdentityTypeFromIdentityHash(profileAuthor) + if (err != nil){ + t.Fatalf("ReadProfile returning invalid identityHash: " + err.Error()) + return + } + + getProfileAttributesFunction := func(attributeName string)(bool, int, string, error){ + + attributeExists, attributeValue, err := readProfiles.GetFormattedProfileAttributeFromRawProfileMap(rawProfileMap, attributeName) + if (err != nil) { return false, 0, "", err } + if (attributeExists == false){ + return false, profileVersion, "", nil + } + return true, profileVersion, attributeValue, nil + } + + for _, attributeName := range calculatedAttributesList{ + + if (profileType != "Moderator"){ + if (attributeName == "IdentityScore" || attributeName == "Controversy" || attributeName == "NumberOfReviews"){ + continue + } + } + + _, _, _, err := calculatedAttributes.GetAnyProfileAttributeIncludingCalculated(attributeName, getProfileAttributesFunction) + if (err != nil) { + t.Fatalf("GetAnyProfileAttributeIncludingCalculated failed: " + err.Error()) + return + } + } + } +} + +