Skip to content

Commit

Permalink
convert SampleCrowdsale and SampleCrowdsaleToken to initializers
Browse files Browse the repository at this point in the history
  • Loading branch information
frangio committed Sep 28, 2018
1 parent 2108641 commit 693907d
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 7 deletions.
38 changes: 33 additions & 5 deletions contracts/examples/SampleCrowdsale.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
pragma solidity ^0.4.24;

import "../Initializable.sol";
import "../crowdsale/validation/CappedCrowdsale.sol";
import "../crowdsale/distribution/RefundableCrowdsale.sol";
import "../crowdsale/emission/MintedCrowdsale.sol";
Expand All @@ -11,11 +12,19 @@ import "../token/ERC20/ERC20Mintable.sol";
* @dev Very simple ERC20 Token that can be minted.
* It is meant to be used in a crowdsale contract.
*/
contract SampleCrowdsaleToken is ERC20Mintable {
contract SampleCrowdsaleToken is Initializable, ERC20Mintable {

string public constant name = "Sample Crowdsale Token";
string public constant symbol = "SCT";
uint8 public constant decimals = 18;
string public name;
string public symbol;
uint8 public decimals;

function initialize() public initializer {
ERC20Mintable.initialize();

name = "Sample Crowdsale Token";
symbol = "SCT";
decimals = 18;
}
}


Expand All @@ -35,7 +44,7 @@ contract SampleCrowdsaleToken is ERC20Mintable {
// https://github.com/duaraghav8/Solium/issues/205
// --elopio - 2018-05-10
// solium-disable-next-line max-len
contract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale, MintedCrowdsale {
contract SampleCrowdsale is Initializable, Crowdsale, CappedCrowdsale, RefundableCrowdsale, MintedCrowdsale {

constructor(
uint256 openingTime,
Expand All @@ -52,6 +61,25 @@ contract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale, MintedCrowdsal
TimedCrowdsale(openingTime, closingTime)
RefundableCrowdsale(goal)
{
}

function initialize(
uint256 openingTime,
uint256 closingTime,
uint256 rate,
address wallet,
uint256 cap,
ERC20Mintable token,
uint256 goal
)
public
initializer
{
Crowdsale.initialize(rate, wallet, token);
CappedCrowdsale.initialize(cap);
TimedCrowdsale.initialize(openingTime, closingTime);
RefundableCrowdsale.initialize(goal);

//As goal needs to be met for a successful crowdsale
//the value needs to less or equal than a cap which is limit for accepted funds
require(goal <= cap);
Expand Down
28 changes: 28 additions & 0 deletions contracts/mocks/SampleCrowdsaleMock.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
pragma solidity ^0.4.24;

import "../Initializable.sol";
import "../examples/SampleCrowdsale.sol";


contract SampleCrowdsaleTokenMock is Initializable, SampleCrowdsaleToken {
constructor() public {
SampleCrowdsaleToken.initialize();
}
}

contract SampleCrowdsaleMock is Initializable, SampleCrowdsale {
constructor(
uint256 openingTime,
uint256 closingTime,
uint256 rate,
address wallet,
uint256 cap,
ERC20Mintable token,
uint256 goal
)
public
SampleCrowdsale(openingTime, closingTime, rate, wallet, cap, token, goal)
{
SampleCrowdsale.initialize(openingTime, closingTime, rate, wallet, cap, token, goal);
}
}
4 changes: 2 additions & 2 deletions test/examples/SampleCrowdsale.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ const should = require('chai')
.use(require('chai-bignumber')(BigNumber))
.should();

const SampleCrowdsale = artifacts.require('SampleCrowdsale');
const SampleCrowdsaleToken = artifacts.require('SampleCrowdsaleToken');
const SampleCrowdsale = artifacts.require('SampleCrowdsaleMock');
const SampleCrowdsaleToken = artifacts.require('SampleCrowdsaleTokenMock');

contract('SampleCrowdsale', function ([_, deployer, owner, wallet, investor]) {
const RATE = new BigNumber(10);
Expand Down

0 comments on commit 693907d

Please sign in to comment.