Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit b0f7241

Browse files
committed
update tests
1 parent 2856ecd commit b0f7241

File tree

1 file changed

+133
-88
lines changed

1 file changed

+133
-88
lines changed

frame/support/test/tests/storage_layers.rs

Lines changed: 133 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -16,182 +16,227 @@
1616
// limitations under the License.
1717

1818
use frame_support::{
19-
assert_noop, assert_ok,
20-
dispatch::{DispatchError, DispatchResult},
19+
assert_noop, assert_ok, dispatch::DispatchResult, pallet_prelude::ConstU32,
2120
storage::with_storage_layer,
22-
StorageMap, StorageValue,
2321
};
22+
use pallet::*;
2423
use sp_io::TestExternalities;
2524

26-
pub trait Config: frame_support_test::Config {}
25+
#[frame_support::pallet]
26+
pub mod pallet {
27+
use frame_support::{ensure, pallet_prelude::*};
28+
use frame_system::pallet_prelude::*;
2729

28-
frame_support::decl_module! {
29-
pub struct Module<T: Config> for enum Call where origin: T::Origin, system=frame_support_test {
30-
#[weight = 0]
31-
fn value_commits(_origin, v: u32) {
32-
Value::set(v);
33-
}
30+
#[pallet::pallet]
31+
pub struct Pallet<T>(_);
3432

35-
#[weight = 0]
36-
fn value_rollbacks(_origin, v: u32) -> DispatchResult {
37-
Value::set(v);
38-
Err(DispatchError::Other("nah"))
39-
}
33+
#[pallet::config]
34+
pub trait Config: frame_system::Config {}
35+
36+
#[pallet::storage]
37+
pub type Value<T> = StorageValue<_, u32, ValueQuery>;
38+
39+
#[pallet::storage]
40+
pub type Map<T> = StorageMap<_, Blake2_128Concat, u32, u32, ValueQuery>;
41+
42+
#[pallet::error]
43+
pub enum Error<T> {
44+
Revert,
4045
}
41-
}
4246

43-
frame_support::decl_storage! {
44-
trait Store for Module<T: Config> as StorageTransactions {
45-
pub Value: u32;
46-
pub Map: map hasher(twox_64_concat) String => u32;
47+
#[pallet::call]
48+
impl<T: Config> Pallet<T> {
49+
#[pallet::weight(1)]
50+
pub fn set_value(_origin: OriginFor<T>, value: u32) -> DispatchResult {
51+
Value::<T>::put(value);
52+
ensure!(value != 1, Error::<T>::Revert);
53+
Ok(())
54+
}
4755
}
4856
}
4957

50-
struct Runtime;
58+
pub type BlockNumber = u64;
59+
pub type Index = u64;
60+
pub type Header = sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>;
61+
pub type Block = sp_runtime::generic::Block<Header, UncheckedExtrinsic>;
62+
pub type UncheckedExtrinsic = sp_runtime::generic::UncheckedExtrinsic<u32, Call, (), ()>;
5163

52-
impl frame_support_test::Config for Runtime {
53-
type Origin = u32;
54-
type BlockNumber = u32;
55-
type PalletInfo = frame_support_test::PanicPalletInfo;
64+
impl frame_system::Config for Runtime {
65+
type BlockWeights = ();
66+
type BlockLength = ();
5667
type DbWeight = ();
68+
type BaseCallFilter = frame_support::traits::Everything;
69+
type Origin = Origin;
70+
type Index = u64;
71+
type BlockNumber = u32;
72+
type Call = Call;
73+
type Hash = sp_runtime::testing::H256;
74+
type Hashing = sp_runtime::traits::BlakeTwo256;
75+
type AccountId = u64;
76+
type Lookup = sp_runtime::traits::IdentityLookup<Self::AccountId>;
77+
type Header = Header;
78+
type Event = Event;
79+
type BlockHashCount = ConstU32<250>;
80+
type Version = ();
81+
type PalletInfo = PalletInfo;
82+
type AccountData = ();
83+
type OnNewAccount = ();
84+
type OnKilledAccount = ();
85+
type SystemWeightInfo = ();
86+
type SS58Prefix = ();
87+
type OnSetCode = ();
88+
type MaxConsumers = ConstU32<16>;
5789
}
5890

59-
impl Config for Runtime {}
91+
impl pallet::Config for Runtime {}
92+
93+
frame_support::construct_runtime!(
94+
pub enum Runtime where
95+
Block = Block,
96+
NodeBlock = Block,
97+
UncheckedExtrinsic = UncheckedExtrinsic
98+
{
99+
System: frame_system,
100+
MyPallet: pallet,
101+
}
102+
);
60103

61104
#[test]
62105
fn storage_transaction_basic_commit() {
63106
TestExternalities::default().execute_with(|| {
64-
assert_eq!(Value::get(), 0);
65-
assert!(!Map::contains_key("val0"));
107+
assert_eq!(Value::<Runtime>::get(), 0);
108+
assert!(!Map::<Runtime>::contains_key(0));
66109

67110
assert_ok!(with_storage_layer(|| -> DispatchResult {
68-
Value::set(99);
69-
Map::insert("val0", 99);
70-
assert_eq!(Value::get(), 99);
71-
assert_eq!(Map::get("val0"), 99);
111+
Value::<Runtime>::set(99);
112+
Map::<Runtime>::insert(0, 99);
113+
assert_eq!(Value::<Runtime>::get(), 99);
114+
assert_eq!(Map::<Runtime>::get(0), 99);
72115
Ok(())
73116
}));
74117

75-
assert_eq!(Value::get(), 99);
76-
assert_eq!(Map::get("val0"), 99);
118+
assert_eq!(Value::<Runtime>::get(), 99);
119+
assert_eq!(Map::<Runtime>::get(0), 99);
77120
});
78121
}
79122

80123
#[test]
81124
fn storage_transaction_basic_rollback() {
82125
TestExternalities::default().execute_with(|| {
83-
assert_eq!(Value::get(), 0);
84-
assert_eq!(Map::get("val0"), 0);
126+
assert_eq!(Value::<Runtime>::get(), 0);
127+
assert_eq!(Map::<Runtime>::get(0), 0);
85128

86129
assert_noop!(
87130
with_storage_layer(|| -> DispatchResult {
88-
Value::set(99);
89-
Map::insert("val0", 99);
90-
assert_eq!(Value::get(), 99);
91-
assert_eq!(Map::get("val0"), 99);
131+
Value::<Runtime>::set(99);
132+
Map::<Runtime>::insert(0, 99);
133+
assert_eq!(Value::<Runtime>::get(), 99);
134+
assert_eq!(Map::<Runtime>::get(0), 99);
92135
Err("revert".into())
93136
}),
94137
"revert"
95138
);
96139

97-
assert_eq!(Value::get(), 0);
98-
assert_eq!(Map::get("val0"), 0);
140+
assert_eq!(Value::<Runtime>::get(), 0);
141+
assert_eq!(Map::<Runtime>::get(0), 0);
99142
});
100143
}
101144

102145
#[test]
103146
fn storage_transaction_rollback_then_commit() {
104147
TestExternalities::default().execute_with(|| {
105-
Value::set(1);
106-
Map::insert("val1", 1);
148+
Value::<Runtime>::set(1);
149+
Map::<Runtime>::insert(1, 1);
107150

108151
assert_ok!(with_storage_layer(|| -> DispatchResult {
109-
Value::set(2);
110-
Map::insert("val1", 2);
111-
Map::insert("val2", 2);
152+
Value::<Runtime>::set(2);
153+
Map::<Runtime>::insert(1, 2);
154+
Map::<Runtime>::insert(2, 2);
112155

113156
assert_noop!(
114157
with_storage_layer(|| -> DispatchResult {
115-
Value::set(3);
116-
Map::insert("val1", 3);
117-
Map::insert("val2", 3);
118-
Map::insert("val3", 3);
158+
Value::<Runtime>::set(3);
159+
Map::<Runtime>::insert(1, 3);
160+
Map::<Runtime>::insert(2, 3);
161+
Map::<Runtime>::insert(3, 3);
119162

120-
assert_eq!(Value::get(), 3);
121-
assert_eq!(Map::get("val1"), 3);
122-
assert_eq!(Map::get("val2"), 3);
123-
assert_eq!(Map::get("val3"), 3);
163+
assert_eq!(Value::<Runtime>::get(), 3);
164+
assert_eq!(Map::<Runtime>::get(1), 3);
165+
assert_eq!(Map::<Runtime>::get(2), 3);
166+
assert_eq!(Map::<Runtime>::get(3), 3);
124167

125168
Err("revert".into())
126169
}),
127170
"revert"
128171
);
129172

130-
assert_eq!(Value::get(), 2);
131-
assert_eq!(Map::get("val1"), 2);
132-
assert_eq!(Map::get("val2"), 2);
133-
assert_eq!(Map::get("val3"), 0);
173+
assert_eq!(Value::<Runtime>::get(), 2);
174+
assert_eq!(Map::<Runtime>::get(1), 2);
175+
assert_eq!(Map::<Runtime>::get(2), 2);
176+
assert_eq!(Map::<Runtime>::get(3), 0);
134177

135178
Ok(())
136179
}));
137180

138-
assert_eq!(Value::get(), 2);
139-
assert_eq!(Map::get("val1"), 2);
140-
assert_eq!(Map::get("val2"), 2);
141-
assert_eq!(Map::get("val3"), 0);
181+
assert_eq!(Value::<Runtime>::get(), 2);
182+
assert_eq!(Map::<Runtime>::get(1), 2);
183+
assert_eq!(Map::<Runtime>::get(2), 2);
184+
assert_eq!(Map::<Runtime>::get(3), 0);
142185
});
143186
}
144187

145188
#[test]
146189
fn storage_transaction_commit_then_rollback() {
147190
TestExternalities::default().execute_with(|| {
148-
Value::set(1);
149-
Map::insert("val1", 1);
191+
Value::<Runtime>::set(1);
192+
Map::<Runtime>::insert(1, 1);
150193

151194
assert_noop!(
152195
with_storage_layer(|| -> DispatchResult {
153-
Value::set(2);
154-
Map::insert("val1", 2);
155-
Map::insert("val2", 2);
196+
Value::<Runtime>::set(2);
197+
Map::<Runtime>::insert(1, 2);
198+
Map::<Runtime>::insert(2, 2);
156199

157200
assert_ok!(with_storage_layer(|| -> DispatchResult {
158-
Value::set(3);
159-
Map::insert("val1", 3);
160-
Map::insert("val2", 3);
161-
Map::insert("val3", 3);
201+
Value::<Runtime>::set(3);
202+
Map::<Runtime>::insert(1, 3);
203+
Map::<Runtime>::insert(2, 3);
204+
Map::<Runtime>::insert(3, 3);
162205

163-
assert_eq!(Value::get(), 3);
164-
assert_eq!(Map::get("val1"), 3);
165-
assert_eq!(Map::get("val2"), 3);
166-
assert_eq!(Map::get("val3"), 3);
206+
assert_eq!(Value::<Runtime>::get(), 3);
207+
assert_eq!(Map::<Runtime>::get(1), 3);
208+
assert_eq!(Map::<Runtime>::get(2), 3);
209+
assert_eq!(Map::<Runtime>::get(3), 3);
167210

168211
Ok(())
169212
}));
170213

171-
assert_eq!(Value::get(), 3);
172-
assert_eq!(Map::get("val1"), 3);
173-
assert_eq!(Map::get("val2"), 3);
174-
assert_eq!(Map::get("val3"), 3);
214+
assert_eq!(Value::<Runtime>::get(), 3);
215+
assert_eq!(Map::<Runtime>::get(1), 3);
216+
assert_eq!(Map::<Runtime>::get(2), 3);
217+
assert_eq!(Map::<Runtime>::get(3), 3);
175218

176219
Err("revert".into())
177220
}),
178221
"revert"
179222
);
180223

181-
assert_eq!(Value::get(), 1);
182-
assert_eq!(Map::get("val1"), 1);
183-
assert_eq!(Map::get("val2"), 0);
184-
assert_eq!(Map::get("val3"), 0);
224+
assert_eq!(Value::<Runtime>::get(), 1);
225+
assert_eq!(Map::<Runtime>::get(1), 1);
226+
assert_eq!(Map::<Runtime>::get(2), 0);
227+
assert_eq!(Map::<Runtime>::get(3), 0);
185228
});
186229
}
187230

188231
#[test]
189232
fn storage_layer_in_decl_module() {
190233
TestExternalities::default().execute_with(|| {
191-
let origin = 0;
192-
assert_ok!(<Module<Runtime>>::value_commits(origin, 2));
193-
assert_eq!(Value::get(), 2);
234+
use sp_runtime::traits::Dispatchable;
235+
let call1 = Call::MyPallet(pallet::Call::set_value { value: 2 });
236+
assert_ok!(call1.dispatch(Origin::signed(0)));
237+
assert_eq!(Value::<Runtime>::get(), 2);
194238

195-
assert_noop!(<Module<Runtime>>::value_rollbacks(origin, 3), "nah");
239+
let call2 = Call::MyPallet(pallet::Call::set_value { value: 1 });
240+
assert_noop!(call2.dispatch(Origin::signed(0)), Error::<Runtime>::Revert);
196241
});
197242
}

0 commit comments

Comments
 (0)