ic_testkit/pic/
standalone.rs1use ic_platform::pocket_ic::PocketIc;
2use ic_platform::principal::ExternalPrincipal as Principal;
3
4use super::{CanisterInstallExt, InstallSpec, PocketIcInstance, StandaloneCanisterInstallError};
5
6pub struct StandaloneCanisterFixture {
11 instance: PocketIcInstance<PocketIc>,
12 canister_id: Principal,
13}
14
15impl StandaloneCanisterFixture {
16 pub fn try_install(
24 instance: PocketIcInstance<PocketIc>,
25 spec: InstallSpec,
26 ) -> Result<Self, StandaloneCanisterInstallError> {
27 let canister_id = match instance.instance().try_create_and_install(spec) {
28 Ok(canister_id) => canister_id,
29 Err(error) => return Err(StandaloneCanisterInstallError::new(instance, error)),
30 };
31
32 Ok(Self {
33 instance,
34 canister_id,
35 })
36 }
37
38 #[must_use]
40 pub const fn pocket_ic(&self) -> &PocketIc {
41 self.instance.instance()
42 }
43
44 #[must_use]
46 pub const fn canister_id(&self) -> Principal {
47 self.canister_id
48 }
49
50 pub fn into_parts(self) -> (PocketIcInstance<PocketIc>, Principal) {
52 (self.instance, self.canister_id)
53 }
54}