@@ -146,3 +146,41 @@ module minimarket::minimarket {
146146 withdraw_fees (admin, admin_addr);
147147 }
148148}
149+
150+ #[test_only]
151+ module minimarket ::minimarket_tests {
152+ use std::signer;
153+ use minimarket::minimarket;
154+
155+ #[test(admin = @0 xA)]
156+ public entry fun test_init_ok (admin: &signer ) {
157+ minimarket::init (admin, 250 ); // 2.5%
158+ }
159+
160+ #[test(admin = @0 xB)]
161+ #[expected_failure(abort_code = 1 )] // E_ALREADY_INITIALIZED
162+ public entry fun test_init_twice_fail (admin: &signer ) {
163+ minimarket::init (admin, 0 );
164+ minimarket::init (admin, 0 );
165+ }
166+
167+ #[test(s = @0 xC)]
168+ public entry fun test_list_buy_withdraw (s: &signer ) {
169+ let a = signer ::address_of (s);
170+ minimarket::init (s, 1000 ); // 10% комиссия
171+ minimarket::list (s, a, 0 , 10_000 ); // новый слот
172+ minimarket::buy (s, a, 0 , 10_000 ); // покупка
173+ minimarket::withdraw_fees (s, a); // админ = продавец
174+ let bal = minimarket::view_balance (a, a);
175+ assert ! (bal == 10_000 , 0 );
176+ }
177+
178+ #[test(admin = @0 xD)]
179+ #[expected_failure(abort_code = 8 )] // E_PRICE_MISMATCH
180+ public entry fun test_buy_price_mismatch (admin: &signer ) {
181+ let a = signer ::address_of (admin);
182+ minimarket::init (admin, 250 );
183+ minimarket::list (admin, a, 0 , 10_000 );
184+ minimarket::buy (admin, a, 0 , 9_999 );
185+ }
186+ }
0 commit comments