Skip to content

Commit 8b13a8f

Browse files
update tests
1 parent 40fd32f commit 8b13a8f

31 files changed

Lines changed: 2092 additions & 1324 deletions

Cargo.lock

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ members = [
5050
"modules/sdk-test-view",
5151
"modules/sdk-test-case-conversion",
5252
"modules/sdk-test-view-pk",
53+
"modules/sdk-test-procedural-view-pk",
5354
"modules/sdk-test-event-table",
5455
"sdks/rust/tests/test-client",
5556
"sdks/rust/tests/test-counter",
@@ -58,6 +59,7 @@ members = [
5859
"sdks/rust/tests/view-client",
5960
"sdks/rust/tests/case-conversion-client",
6061
"sdks/rust/tests/view-pk-client",
62+
"sdks/rust/tests/procedural-view-pk-client",
6163
"sdks/rust/tests/event-table-client",
6264
"tools/ci",
6365
"tools/upgrade-version",
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[package]
2+
name = "sdk-test-procedural-view-pk"
3+
version = "0.1.0"
4+
edition.workspace = true
5+
license-file = "LICENSE"
6+
7+
[lib]
8+
crate-type = ["cdylib"]
9+
10+
[dependencies]
11+
spacetimedb.workspace = true
12+
13+
[lints]
14+
workspace = true
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
use spacetimedb::{reducer, table, view, Identity, ReducerContext, Table, ViewContext};
2+
3+
#[table(accessor = left_source, public)]
4+
pub struct LeftSource {
5+
#[primary_key]
6+
pub id: u64,
7+
#[index(btree)]
8+
pub sender: Identity,
9+
pub filter: u64,
10+
}
11+
12+
#[table(accessor = right_source, public)]
13+
pub struct RightSource {
14+
#[primary_key]
15+
pub id: u64,
16+
#[index(btree)]
17+
pub sender: Identity,
18+
pub filter: u64,
19+
}
20+
21+
#[reducer]
22+
pub fn insert_left(ctx: &ReducerContext, id: u64, filter: u64) {
23+
ctx.db.left_source().insert(LeftSource {
24+
id,
25+
sender: ctx.sender(),
26+
filter,
27+
});
28+
}
29+
30+
#[reducer]
31+
pub fn update_left(ctx: &ReducerContext, id: u64, filter: u64) {
32+
ctx.db.left_source().id().update(LeftSource {
33+
id,
34+
sender: ctx.sender(),
35+
filter,
36+
});
37+
}
38+
39+
#[reducer]
40+
pub fn insert_right(ctx: &ReducerContext, id: u64, filter: u64) {
41+
ctx.db.right_source().insert(RightSource {
42+
id,
43+
sender: ctx.sender(),
44+
filter,
45+
});
46+
}
47+
48+
#[view(accessor = sender_left_view, public, primary_key = id)]
49+
pub fn sender_left_view(ctx: &ViewContext) -> Vec<LeftSource> {
50+
ctx.db.left_source().sender().filter(ctx.sender()).collect()
51+
}
52+
53+
#[view(accessor = sender_right_view, public, primary_key = id)]
54+
pub fn sender_right_view(ctx: &ViewContext) -> Vec<RightSource> {
55+
ctx.db.right_source().sender().filter(ctx.sender()).collect()
56+
}

modules/sdk-test-view-pk/src/lib.rs

Lines changed: 1 addition & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use spacetimedb::{reducer, table, view, Identity, Query, ReducerContext, SpacetimeType, Table, ViewContext};
1+
use spacetimedb::{reducer, table, view, Query, ReducerContext, Table, ViewContext};
22

33
#[table(accessor = view_pk_player, public)]
44
pub struct ViewPkPlayer {
@@ -23,31 +23,6 @@ pub struct ViewPkMembershipSecondary {
2323
pub player_id: u64,
2424
}
2525

26-
#[derive(Clone, SpacetimeType)]
27-
pub struct ProceduralViewPkPlayer {
28-
pub id: u64,
29-
pub name: String,
30-
}
31-
32-
#[table(accessor = procedural_view_pk_player_source, public)]
33-
pub struct ProceduralViewPkPlayerSource {
34-
#[primary_key]
35-
pub record_id: u64,
36-
#[index(btree)]
37-
pub id: u64,
38-
pub name: String,
39-
}
40-
41-
#[table(accessor = sender_procedural_view_pk_player_source, public)]
42-
pub struct SenderProceduralViewPkPlayerSource {
43-
#[primary_key]
44-
pub record_id: u64,
45-
#[index(btree)]
46-
pub owner: Identity,
47-
pub id: u64,
48-
pub name: String,
49-
}
50-
5126
#[reducer]
5227
pub fn insert_view_pk_player(ctx: &ReducerContext, id: u64, name: String) {
5328
ctx.db.view_pk_player().insert(ViewPkPlayer { id, name });
@@ -70,78 +45,11 @@ pub fn insert_view_pk_membership_secondary(ctx: &ReducerContext, id: u64, player
7045
.insert(ViewPkMembershipSecondary { id, player_id });
7146
}
7247

73-
#[reducer]
74-
pub fn insert_procedural_view_pk_player(ctx: &ReducerContext, record_id: u64, id: u64, name: String) {
75-
ctx.db
76-
.procedural_view_pk_player_source()
77-
.insert(ProceduralViewPkPlayerSource { record_id, id, name });
78-
}
79-
80-
#[reducer]
81-
pub fn update_procedural_view_pk_player(ctx: &ReducerContext, record_id: u64, id: u64, name: String) {
82-
ctx.db
83-
.procedural_view_pk_player_source()
84-
.record_id()
85-
.update(ProceduralViewPkPlayerSource { record_id, id, name });
86-
}
87-
88-
#[reducer]
89-
pub fn insert_sender_procedural_view_pk_player(ctx: &ReducerContext, record_id: u64, id: u64, name: String) {
90-
ctx.db
91-
.sender_procedural_view_pk_player_source()
92-
.insert(SenderProceduralViewPkPlayerSource {
93-
record_id,
94-
owner: ctx.sender(),
95-
id,
96-
name,
97-
});
98-
}
99-
100-
#[reducer]
101-
pub fn update_sender_procedural_view_pk_player(ctx: &ReducerContext, record_id: u64, id: u64, name: String) {
102-
ctx.db
103-
.sender_procedural_view_pk_player_source()
104-
.record_id()
105-
.update(SenderProceduralViewPkPlayerSource {
106-
record_id,
107-
owner: ctx.sender(),
108-
id,
109-
name,
110-
});
111-
}
112-
11348
#[view(accessor = all_view_pk_players, public)]
11449
pub fn all_view_pk_players(ctx: &ViewContext) -> impl Query<ViewPkPlayer> {
11550
ctx.from.view_pk_player()
11651
}
11752

118-
#[view(accessor = all_procedural_view_pk_players, public, primary_key = id)]
119-
pub fn all_procedural_view_pk_players(ctx: &ViewContext) -> Vec<ProceduralViewPkPlayer> {
120-
ctx.db
121-
.procedural_view_pk_player_source()
122-
.id()
123-
.filter(0u64..)
124-
.map(|row| ProceduralViewPkPlayer {
125-
id: row.id,
126-
name: row.name,
127-
})
128-
.collect()
129-
}
130-
131-
#[view(accessor = sender_procedural_view_pk_players, public, primary_key = id)]
132-
pub fn sender_procedural_view_pk_players(ctx: &ViewContext) -> Vec<ProceduralViewPkPlayer> {
133-
let sender = ctx.sender();
134-
ctx.db
135-
.sender_procedural_view_pk_player_source()
136-
.owner()
137-
.filter(sender)
138-
.map(|row| ProceduralViewPkPlayer {
139-
id: row.id,
140-
name: row.name,
141-
})
142-
.collect()
143-
}
144-
14553
#[view(accessor = sender_view_pk_players_a, public)]
14654
pub fn sender_view_pk_players_a(ctx: &ViewContext) -> impl Query<ViewPkPlayer> {
14755
ctx.from
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
[package]
2+
name = "procedural-view-pk-client"
3+
version.workspace = true
4+
edition.workspace = true
5+
license-file = "LICENSE"
6+
7+
[lib]
8+
crate-type = ["cdylib", "rlib"]
9+
10+
[features]
11+
default = ["native"]
12+
13+
native = [
14+
"dep:env_logger",
15+
"dep:tokio",
16+
]
17+
18+
browser = [
19+
"spacetimedb-sdk/browser",
20+
"dep:wasm-bindgen",
21+
"dep:wasm-bindgen-futures",
22+
"dep:console_error_panic_hook",
23+
"dep:futures",
24+
]
25+
26+
[[bin]]
27+
name = "procedural-view-pk-client"
28+
path = "src/main.rs"
29+
required-features = ["native"]
30+
31+
[dependencies]
32+
spacetimedb-sdk = { path = "../.." }
33+
test-counter = { path = "../test-counter" }
34+
anyhow.workspace = true
35+
env_logger = { workspace = true, optional = true }
36+
tokio = { workspace = true, optional = true }
37+
futures = { workspace = true, optional = true }
38+
39+
wasm-bindgen = { version = "0.2.100", optional = true }
40+
wasm-bindgen-futures = { version = "0.4.45", optional = true }
41+
console_error_panic_hook = { version = "0.1.7", optional = true }
42+
43+
[lints]
44+
workspace = true
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
This test client is used with the Rust-only module:
2+
3+
- [`sdk-test-procedural-view-pk`](/modules/sdk-test-procedural-view-pk)
4+
5+
To (re-)generate the `module_bindings`, from this directory, run:
6+
7+
```sh
8+
mkdir -p src/module_bindings
9+
spacetime generate --lang rust --out-dir src/module_bindings --module-path ../../../../modules/sdk-test-procedural-view-pk
10+
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#![allow(clippy::disallowed_macros)]
2+
3+
mod module_bindings;
4+
pub mod test_handlers;
5+
6+
#[cfg(all(target_arch = "wasm32", feature = "browser"))]
7+
use wasm_bindgen::prelude::wasm_bindgen;
8+
9+
#[cfg(all(target_arch = "wasm32", feature = "browser"))]
10+
#[wasm_bindgen]
11+
pub async fn run(test_name: String, db_name: String) {
12+
console_error_panic_hook::set_once();
13+
test_handlers::dispatch(&test_name, &db_name).await;
14+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use procedural_view_pk_client::test_handlers;
2+
3+
fn exit_on_panic() {
4+
let default_hook = std::panic::take_hook();
5+
std::panic::set_hook(Box::new(move |panic_info| {
6+
default_hook(panic_info);
7+
std::process::exit(1);
8+
}));
9+
}
10+
11+
fn main() {
12+
env_logger::init();
13+
exit_on_panic();
14+
15+
let test = std::env::args()
16+
.nth(1)
17+
.expect("Pass a test name as a command-line argument to the test client");
18+
let db_name = std::env::var("SPACETIME_SDK_TEST_DB_NAME").expect("Failed to read db name from env");
19+
20+
tokio::runtime::Runtime::new()
21+
.unwrap()
22+
.block_on(test_handlers::dispatch(&test, &db_name));
23+
}

0 commit comments

Comments
 (0)