mirror of
https://github.com/Qortal/qortal.git
synced 2025-07-23 04:36:50 +00:00
Added SellNameTransactions + tests
This commit is contained in:
@@ -59,11 +59,14 @@ public class LoadTests extends Common {
|
||||
if (transactionData == null)
|
||||
break;
|
||||
|
||||
if (transactionData.getType() != TransactionType.PAYMENT)
|
||||
break;
|
||||
|
||||
PaymentTransactionData paymentTransactionData = (PaymentTransactionData) transactionData;
|
||||
System.out.println(PublicKeyAccount.getAddress(paymentTransactionData.getSenderPublicKey()) + " sent " + paymentTransactionData.getAmount()
|
||||
+ " QORA to " + paymentTransactionData.getRecipient());
|
||||
|
||||
signature = paymentTransactionData.getReference();
|
||||
signature = transactionData.getReference();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -99,6 +99,11 @@ public class SerializationTests extends Common {
|
||||
testSpecificBlockTransactions(673, TransactionType.UPDATE_NAME);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSellNameSerialization() throws TransformationException, DataException {
|
||||
testSpecificBlockTransactions(673, TransactionType.SELL_NAME);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreatePollSerialization() throws TransformationException, DataException {
|
||||
// Block 10537 has only create poll transactions
|
||||
|
@@ -19,6 +19,7 @@ import data.naming.NameData;
|
||||
import data.transaction.CreatePollTransactionData;
|
||||
import data.transaction.PaymentTransactionData;
|
||||
import data.transaction.RegisterNameTransactionData;
|
||||
import data.transaction.SellNameTransactionData;
|
||||
import data.transaction.UpdateNameTransactionData;
|
||||
import data.transaction.VoteOnPollTransactionData;
|
||||
import data.voting.PollData;
|
||||
@@ -33,6 +34,7 @@ import qora.block.BlockChain;
|
||||
import qora.transaction.CreatePollTransaction;
|
||||
import qora.transaction.PaymentTransaction;
|
||||
import qora.transaction.RegisterNameTransaction;
|
||||
import qora.transaction.SellNameTransaction;
|
||||
import qora.transaction.Transaction;
|
||||
import qora.transaction.Transaction.ValidationResult;
|
||||
import qora.transaction.UpdateNameTransaction;
|
||||
@@ -208,7 +210,7 @@ public class TransactionTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateNamesTransaction() throws DataException {
|
||||
public void testUpdateNameTransaction() throws DataException {
|
||||
// Register name using another test
|
||||
testRegisterNameTransaction();
|
||||
|
||||
@@ -256,6 +258,51 @@ public class TransactionTests {
|
||||
assertEquals(originalNameData.getData(), actualNameData.getData());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSellNameTransaction() throws DataException {
|
||||
// Register name using another test
|
||||
testRegisterNameTransaction();
|
||||
|
||||
String name = "test name";
|
||||
|
||||
// Sale price
|
||||
BigDecimal amount = BigDecimal.valueOf(1234L).setScale(8);
|
||||
|
||||
BigDecimal fee = BigDecimal.ONE;
|
||||
long timestamp = parentBlockData.getTimestamp() + 2_000;
|
||||
SellNameTransactionData sellNameTransactionData = new SellNameTransactionData(sender.getPublicKey(), name, amount, fee, timestamp, reference);
|
||||
|
||||
Transaction sellNameTransaction = new SellNameTransaction(repository, sellNameTransactionData);
|
||||
sellNameTransaction.calcSignature(sender);
|
||||
assertTrue(sellNameTransaction.isSignatureValid());
|
||||
assertEquals(ValidationResult.OK, sellNameTransaction.isValid());
|
||||
|
||||
// Forge new block with transaction
|
||||
Block block = new Block(repository, parentBlockData, generator, null, null);
|
||||
block.addTransaction(sellNameTransactionData);
|
||||
block.sign();
|
||||
|
||||
assertTrue("Block signatures invalid", block.isSignatureValid());
|
||||
assertEquals("Block is invalid", Block.ValidationResult.OK, block.isValid());
|
||||
|
||||
block.process();
|
||||
repository.saveChanges();
|
||||
|
||||
// Check name was updated
|
||||
NameData actualNameData = this.repository.getNameRepository().fromName(name);
|
||||
assertTrue(actualNameData.getIsForSale());
|
||||
assertEquals(amount, actualNameData.getSalePrice());
|
||||
|
||||
// Now orphan block
|
||||
block.orphan();
|
||||
repository.saveChanges();
|
||||
|
||||
// Check name has been reverted correctly
|
||||
actualNameData = this.repository.getNameRepository().fromName(name);
|
||||
assertFalse(actualNameData.getIsForSale());
|
||||
assertNull(actualNameData.getSalePrice());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreatePollTransaction() throws DataException {
|
||||
// This test requires GenesisBlock's timestamp is set to something after BlockChain.VOTING_RELEASE_TIMESTAMP
|
||||
|
Reference in New Issue
Block a user