88 lines
2.3 KiB
Rust
88 lines
2.3 KiB
Rust
#![cfg(feature = "test-bpf")]
|
|
|
|
use solana_program_test::*;
|
|
|
|
mod program_test;
|
|
|
|
use program_test::*;
|
|
use spl_governance::state::{
|
|
enums::MintMaxVoteWeightSource,
|
|
realm::{get_realm_address, RealmConfigArgs},
|
|
};
|
|
|
|
use self::args::SetRealmConfigArgs;
|
|
|
|
#[tokio::test]
|
|
async fn test_create_realm() {
|
|
// Arrange
|
|
let mut governance_test = GovernanceProgramTest::start_new().await;
|
|
|
|
// Act
|
|
let realm_cookie = governance_test.with_realm().await;
|
|
|
|
// Assert
|
|
let realm_account = governance_test
|
|
.get_realm_account(&realm_cookie.address)
|
|
.await;
|
|
|
|
assert_eq!(realm_cookie.account, realm_account);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_create_realm_with_non_default_config() {
|
|
// Arrange
|
|
let mut governance_test = GovernanceProgramTest::start_new().await;
|
|
|
|
let realm_config_args = RealmConfigArgs {
|
|
use_council_mint: false,
|
|
community_mint_max_vote_weight_source: MintMaxVoteWeightSource::SupplyFraction(1),
|
|
min_community_weight_to_create_governance: 10,
|
|
use_community_voter_weight_addin: false,
|
|
use_max_community_voter_weight_addin: false,
|
|
};
|
|
|
|
let set_realm_config_args = SetRealmConfigArgs {
|
|
realm_config_args,
|
|
community_voter_weight_addin: None,
|
|
max_community_voter_weight_addin: None,
|
|
};
|
|
|
|
// Act
|
|
let realm_cookie = governance_test
|
|
.with_realm_using_config_args(&set_realm_config_args)
|
|
.await;
|
|
|
|
// Assert
|
|
let realm_account = governance_test
|
|
.get_realm_account(&realm_cookie.address)
|
|
.await;
|
|
|
|
assert_eq!(realm_cookie.account, realm_account);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_create_realm_for_existing_pda() {
|
|
// Arrange
|
|
let mut governance_test = GovernanceProgramTest::start_new().await;
|
|
|
|
let realm_name = format!("Realm #{}", governance_test.next_realm_id).to_string();
|
|
let realm_address = get_realm_address(&governance_test.program_id, &realm_name);
|
|
|
|
let rent_exempt = governance_test.bench.rent.minimum_balance(0);
|
|
|
|
governance_test
|
|
.bench
|
|
.transfer_sol(&realm_address, rent_exempt)
|
|
.await;
|
|
|
|
// Act
|
|
let realm_cookie = governance_test.with_realm().await;
|
|
|
|
// Assert
|
|
let realm_account = governance_test
|
|
.get_realm_account(&realm_cookie.address)
|
|
.await;
|
|
|
|
assert_eq!(realm_cookie.account, realm_account);
|
|
}
|