Skip to content

Commit

Permalink
fix token to_payload bug
Browse files Browse the repository at this point in the history
  • Loading branch information
oshikawatkm committed May 21, 2021
1 parent fecfbb8 commit 9c92e24
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 13 deletions.
6 changes: 4 additions & 2 deletions lib/glueby/contract/active_record/reissuable_token.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ class ReissuableToken < ::ActiveRecord::Base
# @param [String] color_id
# @return [Tapyrus::Script]
def self.script_pubkey(color_id)
script_pubkey_hex = Glueby::Contract::AR::ReissuableToken.where(color_id: color_id).pluck(:script_pubkey).first
Tapyrus::Script.parse_from_payload(script_pubkey_hex.htb)
script_pubkey = Glueby::Contract::AR::ReissuableToken.where(color_id: color_id).pluck(:script_pubkey).first
if script_pubkey
Tapyrus::Script.parse_from_payload(script_pubkey.htb)
end
end

# Check if the color_id is already stored
Expand Down
41 changes: 30 additions & 11 deletions spec/glueby/contract/token_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,26 @@
let(:token_type) { Tapyrus::Color::TokenTypes::REISSUABLE }
let(:amount) { 1_000 }

it {
expect {subject}.not_to raise_error
expect(subject[0].color_id.type).to eq Tapyrus::Color::TokenTypes::REISSUABLE
expect(subject[0].color_id.valid?).to be true
expect(subject[1][1].valid?).to be true
expect(Glueby::Contract::AR::ReissuableToken.count).to eq 1
}
context 'reissuable token' do
it do
expect {subject}.not_to raise_error
expect(subject[0].color_id.type).to eq Tapyrus::Color::TokenTypes::REISSUABLE
expect(subject[0].color_id.valid?).to be true
expect(subject[1][1].valid?).to be true
expect(Glueby::Contract::AR::ReissuableToken.count).to eq 1
end
end

context 'non reissuable token' do
let(:token_type) { Tapyrus::Color::TokenTypes::NON_REISSUABLE }
it do
expect {subject}.not_to raise_error
expect(subject[0].color_id.type).to eq Tapyrus::Color::TokenTypes::NON_REISSUABLE
expect(subject[0].color_id.valid?).to be true
expect(subject[1][0].valid?).to be true
expect(Glueby::Contract::AR::ReissuableToken.count).to eq 0
end
end

context 'invalid amount' do
let(:amount) { 0 }
Expand Down Expand Up @@ -280,14 +293,20 @@
describe '#to_payload' do
subject { token.to_payload.bth }

let(:token) { Glueby::Contract::Token.parse_from_payload('c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb376a914234113b860822e68f9715d1957af28b8f5117ee288ac'.htb) }
let!(:token) { Glueby::Contract::Token.parse_from_payload('c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb376a914234113b860822e68f9715d1957af28b8f5117ee288ac'.htb) }

it { is_expected.to eq 'c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb376a914234113b860822e68f9715d1957af28b8f5117ee288ac' }
it do
expect(subject).to eq 'c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb376a914234113b860822e68f9715d1957af28b8f5117ee288ac'
expect(Glueby::Contract::AR::ReissuableToken.count).to eq 1
end

context 'with no script pubkey' do
let(:token) { Glueby::Contract::Token.parse_from_payload('c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb3'.htb) }
let!(:token) { Glueby::Contract::Token.parse_from_payload('c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb3'.htb) }

it { is_expected.to eq 'c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb3' }
it do
expect(subject).to eq 'c150ad685ec8638543b2356cb1071cf834fb1c84f5fa3a71699c3ed7167dfcdbb3'
expect(Glueby::Contract::AR::ReissuableToken.count).to eq 0
end
end
end
end

0 comments on commit 9c92e24

Please sign in to comment.