Created the calculatedAttributes_test package.
This commit is contained in:
parent
649bf318c2
commit
8b0c41af45
8 changed files with 259 additions and 145 deletions
|
@ -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*
|
||||
|
|
|
@ -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
|
||||
Simon Sarasova | June 13, 2023 | 252
|
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in a new issue