diff --git a/templates/program/app/src/lib.rs b/templates/program/app/src/lib.rs index e54166ed..2607322e 100644 --- a/templates/program/app/src/lib.rs +++ b/templates/program/app/src/lib.rs @@ -14,6 +14,11 @@ impl {{ service-struct-name }} { pub fn do_something(&mut self) -> String { "Hello from {{ service-name }}!".to_string() } + + // Service's query + pub fn get_something(&self) -> String { + "Hello from {{ service-name }}!".to_string() + } } pub struct {{ program-struct-name }}(()); diff --git a/templates/program/tests/gtest.rs b/templates/program/tests/gtest.rs index 920d934e..859300bd 100644 --- a/templates/program/tests/gtest.rs +++ b/templates/program/tests/gtest.rs @@ -15,7 +15,7 @@ async fn do_something_works() { let program_factory = {{ client_crate_name }}::{{ service-name }}Factory::new(remoting.clone()); let program_id = program_factory - .new() // Call program's constructor (see src/lib.rs:27) + .new() // Call program's constructor (see app/src/lib.rs:29) .send_recv(program_code_id, b"salt") .await .unwrap(); @@ -23,10 +23,37 @@ async fn do_something_works() { let mut service_client = {{ client_crate_name }}::{{ service-name }}::new(remoting.clone()); let result = service_client - .do_something() // Call service's method (see src/lib.rs:17) + .do_something() // Call service's method (see app/src/lib.rs:14) .send_recv(program_id) .await .unwrap(); assert_eq!(result, "Hello from {{ service-name }}!".to_string()); } + +#[tokio::test] +async fn get_something_works() { + let remoting = GTestRemoting::new(ACTOR_ID.into()); + remoting.system().init_logger(); + + // Submit program code into the system + let program_code_id = remoting.system().submit_code({{ crate_name }}::WASM_BINARY); + + let program_factory = {{ client_crate_name }}::{{ service-name }}Factory::new(remoting.clone()); + + let program_id = program_factory + .new() // Call program's constructor (see app/src/lib.rs:29) + .send_recv(program_code_id, b"salt") + .await + .unwrap(); + + let service_client = {{ client_crate_name }}::{{ service-name }}::new(remoting.clone()); + + let result = service_client + .get_something() // Call service's query (see app/src/lib.rs:19) + .recv(program_id) + .await + .unwrap(); + + assert_eq!(result, "Hello from {{ service-name }}!".to_string()); +}