2019-01-30 09:59:15 -08:00
|
|
|
from grant.utils.enums import Category
|
2019-06-06 11:20:45 -07:00
|
|
|
|
2019-02-27 15:05:01 -08:00
|
|
|
from .mocks import mock_request
|
2018-11-07 11:08:42 -08:00
|
|
|
|
2018-11-13 05:58:02 -08:00
|
|
|
test_user = {
|
2018-11-07 11:08:42 -08:00
|
|
|
"displayName": 'Groot',
|
|
|
|
"emailAddress": 'iam@groot.com',
|
2018-12-14 11:36:22 -08:00
|
|
|
"password": "p4ssw0rd",
|
2018-11-07 11:08:42 -08:00
|
|
|
"title": 'I am Groot!',
|
|
|
|
"avatar": {
|
2018-12-14 11:36:22 -08:00
|
|
|
"link": 'https://your-bucket-name.s3.amazonaws.com/avatars/1.b0be8bf740ce419a80ea9e1f55974ce1.png'
|
2018-11-07 11:08:42 -08:00
|
|
|
},
|
|
|
|
"socialMedias": [
|
|
|
|
{
|
2019-01-02 10:23:02 -08:00
|
|
|
"service": 'GITHUB',
|
|
|
|
"username": 'groot'
|
2018-11-07 11:08:42 -08:00
|
|
|
}
|
2019-01-04 11:03:37 -08:00
|
|
|
]
|
2018-11-07 11:08:42 -08:00
|
|
|
}
|
|
|
|
|
2018-11-13 05:58:02 -08:00
|
|
|
test_team = [test_user]
|
2018-11-07 11:08:42 -08:00
|
|
|
|
2018-11-29 13:54:26 -08:00
|
|
|
test_other_user = {
|
|
|
|
"displayName": 'Faketoshi',
|
|
|
|
"emailAddress": 'fake@toshi.com',
|
2018-12-14 11:36:22 -08:00
|
|
|
"title": 'The Real Fake Satoshi',
|
|
|
|
"password": 'n4k0m0t0'
|
2018-11-29 13:54:26 -08:00
|
|
|
}
|
|
|
|
|
2018-11-07 11:08:42 -08:00
|
|
|
milestones = [
|
|
|
|
{
|
|
|
|
"title": "All the money straightaway",
|
2018-11-29 17:55:14 -08:00
|
|
|
"content": "cool stuff with it",
|
2019-11-13 14:38:17 -08:00
|
|
|
"daysEstimated": "30",
|
2018-11-07 11:08:42 -08:00
|
|
|
"payoutPercent": "100",
|
|
|
|
"immediatePayout": False
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
2018-11-13 05:58:02 -08:00
|
|
|
test_proposal = {
|
|
|
|
"team": test_team,
|
2018-11-07 11:08:42 -08:00
|
|
|
"content": "## My Proposal",
|
|
|
|
"title": "Give Me Money",
|
2018-11-29 17:55:14 -08:00
|
|
|
"brief": "$$$",
|
2018-11-07 11:08:42 -08:00
|
|
|
"milestones": milestones,
|
2019-01-30 09:59:15 -08:00
|
|
|
"category": Category.ACCESSIBILITY,
|
2019-12-03 16:02:39 -08:00
|
|
|
"target": "12345",
|
ZF Grants 2.1 (#496)
* fix ccr pagination defaults
* add ccr admin tests
* add ccr user tests
* checkpoint
* fix tslint
* request changes discussion flow mvp
* admin - add discussion status
* backend - add live drafts
* admin - add live drafts
* frontend - add live drafts
* frontend - add edit discussion proposal
* fix tsc
* include DISCUSSION status in propsal listview
* do not make live draft on admin request changes
* hide live drafts from user proposal draft list
* fix backend tests
* add admin tests
* add user tests
* fix: liking, viewing discussion proposals, admin menu
* admin - update hints for live drafts
* fe - add better messaging when updating a proposal
* be - fix like test
* remove TODO comments
* add new email types
* fix storybook
* add revision tab story
* backend - implement proposal revisions
* frontend - implement proposal revisions
* update revision tab story
* fix lint
* remove set detection
* email proposal followers on revision
* restrict banner to team members only
* misc bug fixes
* update, add backend tests
* add milestone title change to revision history story
* fix milestones display in preview
* allow archived proposals to be queried
* implement archived proposal page
* fix tsc
* implement archived proposal get route
* move styling into less
* remove proposal archive parent id
* handle archived proposal status
* cleanup
* remove contributions, switch to USD, implement quarters
* use Qs to preserve formatting
* handle edit only kyc
* prevent ARCHIVED proposals from being sent to admin
* display latest revision first
* admin - proposal & ccr reject permanently
* backend - proposal & ccr reject permanently
* frontend - proposal & ccr reject permanently
* fix tsc
* use $ in milestone payout email
* introduce custom filters to proposal listview
* hide archive link on first revision
* upgrade packages
* add bech32 implementation
* add z address validation with tests
* fix tslint
* use local address validation
* fix tests, remove blockchain mock gets
* add additional bad addresses
* update briefs to include page break message
* remove contributions routes, menu entry
* disable countribution count admin stats
* remove matching and pretty print in finance
* fix tslint
* separate out rejected permanently proposals
* make removing proposals generic
* allow linked tabs to be ignored
* remove rejected permanently, bugfix
* update preview link to point to rejected tab
* implement rejected permanently tab, add tab message
* refactor variable
* fix tslint
* fix tslint
* send ccr reject permanently email on rejection
* fix preview message
* wire up proposal arbiter and rejected emails
* disable tip jar in proposal and profile
* sync ccr/proposal drafts on create form init
* check invites on submit modal open
* update team invite language
* update team text when edit
* fix ccr rejected permanently tag
* text changes, email preview fix
* display changes requested tag when in discussion with changes requested
* enable social share on open for discussion proposals, update language
* place sort below filter
* derive filter from query string
* use better filter names in query params
* fix tslint
* create snapshot of original proposal on first revision
* clear invites between edits, account for additional changes not tracked in revisions
* update tests
* fix test
* remove print
* SameSite Fixes (#150)
* QA Fixes 2 (#151)
* set filters as query strings on change
* remove rejected permanently tags
* add dollar sign in financials legend
* fix tsc
* Copy Touchups (#152)
* Email Fixes (#155)
* fix ZEC in milestone payout emails
* fix links in rejected permanently CCR/proposal emails
* Poll for Team and Invite Changes in Create Flow (#153)
* poll for team and invite changes in create flow
* fix tslint
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* pretty print payouts by quarter (#156)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove Blockchain Module (#154)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Add Tags to Proposal Cards (#157)
* add tag to proposals and dynamically set v1 card height
* listen on window resize
* make card height props optional
* set tag in bottom right, remove dynamic card resize, add dynamic tag resize
* cleanup
* cleanup
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Improve Frontend Address Validation (#158)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove blockchain module (#162)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Remove Blockchain App (#160)
* remove blockchain app
* remove blockchain app from travis
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
* Proposal Edit Fixes (#161)
* fe - display error if edit creation fails
* be - restrict live draft publish
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Restrict Arbiter Assignment (#159)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Email Copy updates
* Remove Admin Financials Card
* Hookup 'proposal_approved_without_funding' to admin email example
* bump various package versions
* Update yarn.lock files
* Attach 'proposal_approved_without_funding' to backend example email
* bump package versions
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
2020-04-07 19:56:32 -07:00
|
|
|
"payoutAddress": "zs15el0hzs4w60ggfy6kq4p3zttjrl00mfq7yxfwsjqpz9d7hptdtkltzlcqar994jg2ju3j9k85zk",
|
2018-12-28 15:05:34 -08:00
|
|
|
"deadlineDuration": 100
|
2018-11-13 05:58:02 -08:00
|
|
|
}
|
|
|
|
|
CCRs (#86)
* CCRs API / Models boilerplate
* start on frontend
* backendy things
* Create CCR redux module, integrate API endpoints, create types
* Fix/Cleanup API
* Wire up CreateRequestDraftList
* bounty->target
* Add 'Create Request Flow' MVP
* cleanup
* Tweak filenames
* Simplify migrations
* fix migrations
* CCR Staking MVP
* tslint
* Get Pending Requests into Profile
* Remove staking requirement
* more staking related removals
* MVP Admin integration
* Make RFP when CCR is accepted
* Add pagination to CCRs in Admin
Improve styles for Proposals
* Hookup notifications
Adjust copy
* Simplify ccr->rfp relationship
Add admin approval email
Fixup copy
* Show Message on RFP Detail
Make Header CTAs change based on draft status
Adjust proposal card style
* Bugfix: Show header for non signed in users
* Add 'create a request' to intro
* Profile Created CCRs
RFP CCR attribution
* ignore
* CCR Price in USD (#85)
* init profile tipjar backend
* init profile tipjar frontend
* fix lint
* implement tip jar block
* fix wrapping, hide tip block on self
* init backend proposal tipjar
* init frontend proposal tipjar
* add hide title, fix bug
* uncomment rate limit
* rename vars, use null check
* allow address and view key to be unset
* add api tests
* fix tsc errors
* fix lint
* fix CopyInput styling
* fix migrations
* hide tipping in proposal if address not set
* add tip address to create flow
* redesign campaign block
* fix typo
* init backend changes
* init admin changes
* init frontend changes
* fix backend tests
* update campaign block
* be - init rfp usd changes
* admin - init rfp usd changes
* fe - fully adapt api util functions to usd
* fe - init rfp usd changes
* adapt profile created to usd
* misc usd changes
* add tip jar to dedicated card
* fix tipjar bug
* use zf light logo
* switch to zf grants logo
* hide profile tip jar if address not set
* add comment, run prettier
* conditionally add info icon and tooltip to funding line
* admin - disallow decimals in RFPs
* fe - cover usd string edge case
* add Usd as rfp bounty type
* fix migration order
* fix email bug
* adapt CCRs to USD
* implement CCR preview
* fix tsc
* Copy Updates and UX Tweaks (#87)
* Add default structure to proposal content
* Landing page copy
* Hide contributors tab for v2 proposals
* Minor UX tweaks for Liking/Following/Tipping
* Copy for Tipping Tooltip, proposal explainer for review, and milestone day estimate notice.
* Fix header styles bug and remove commented out styles.
* Revert "like" / "unfollow" hyphenication
* Comment out unused tests related to staking
Increase PROPOSAL_TARGET_MAX in .env.example
* Comment out ccr approval email send until ready
* Adjust styles, copy.
* fix proposal prune test (#88)
* fix USD display in preview, fix non-unique key (#90)
* Pre-stepper explainer for CCRs.
* Tweak styles
* Default content for CCRs
* fix tsc
* CCR approval and rejection emails
* add back admin_approval_ccr email templates
* Link ccr author name to profile in RFPs
* copy tweaks
* copy tweak
* hookup mangle user command
* Fix/add endif in jinja
* fix tests
* review
* fix review
2019-12-05 17:01:02 -08:00
|
|
|
test_ccr = {
|
|
|
|
"user_id": test_user,
|
|
|
|
"content": "## My Proposal",
|
|
|
|
"title": "Give Me Money",
|
|
|
|
"brief": "$$$",
|
|
|
|
"target": "123.456",
|
|
|
|
}
|
|
|
|
|
2018-11-27 12:26:36 -08:00
|
|
|
test_comment = {
|
2019-01-04 11:03:37 -08:00
|
|
|
"comment": "Test comment"
|
2018-11-27 12:26:36 -08:00
|
|
|
}
|
|
|
|
|
2019-02-27 15:05:01 -08:00
|
|
|
test_comment_large = {
|
|
|
|
"comment": """
|
2019-06-06 11:20:45 -07:00
|
|
|
massa vitae tortor condimentum lacinia quis vel eros donec ac odio tempor orci dapibus ultrices
|
|
|
|
in iaculis nunc sed augue lacus viverra vitae congue eu consequat ac felis donec et odio
|
|
|
|
pellentesque diam volutpat commodo sed egestas egestas fringilla phasellus
|
|
|
|
faucibus scelerisque eleifend donec pretium vulputate sapien nec
|
|
|
|
sagittis aliquam malesuada bibendum arcu vitae elementum curabitur
|
|
|
|
vitae nunc sed velit dignissim sodales ut eu sem integer vitae justo
|
|
|
|
eget magna fermentum iaculis eu non diam phasellus vestibulum lorem sed
|
|
|
|
risus ultricies tristique nulla aliquet enim tortor at auctor urna nunc id
|
|
|
|
cursus metus aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices
|
|
|
|
sagittis orci a scelerisque purus semper eget duis at tellus at urna condimentum
|
|
|
|
mattis pellentesque id nibh tortor id aliquet lectus proin nibh nisl condimentum id
|
|
|
|
venenatis a condimentum vitae sapien pellentesque habitant morbi tristique senectus
|
|
|
|
et netus et malesuada fames ac turpis egestas sed tempus urna et pharetra pharetra
|
|
|
|
massa massa ultricies mi quis hendrerit dolor magna eget est lorem ipsum dolor sit
|
|
|
|
amet consectetur adipiscing elit pellentesque habitant morbi tristique senectus et
|
|
|
|
netus et malesuada fames ac turpis egestas integer eget aliquet nibh praesent
|
|
|
|
tristique magna sit amet purus gravida quis blandit turpis cursus in hac habitasse
|
|
|
|
platea dictumst quisque sagittis purus sit amet volutpat consequat mauris nunc
|
|
|
|
congue nisi vitae suscipit tellus mauris a diam maecenas sed enim ut sem viverra
|
|
|
|
aliquet eget sit amet tellus cras adipiscing enim eu turpis egestas pretium aenean
|
|
|
|
pharetra magna ac placerat vestibulum lectus mauris ultrices eros in cursus
|
|
|
|
turpis massa tincidunt dui ut ornare lectus sit amet est placerat in egestas
|
|
|
|
erat imperdiet sed euismod nisi porta lorem mollis aliquam ut
|
|
|
|
porttitor leo a diam sollicitudin tempor id eu nisl nunc mi
|
|
|
|
ipsum faucibus vitae aliquet nec ullamcorper sit amet risus
|
|
|
|
nullam eget felis eget nunc lobortis mattis aliquam faucibus
|
|
|
|
purus in massa tempor nec feugiat nisl pretium fusce id velit ut tortor
|
|
|
|
pretium viverra suspendisse potenti nullam ac tortor vitae purus faucibus ornare suspendisse
|
|
|
|
sed nisi lacus sed viverra tellus in hac habitasse platea
|
|
|
|
dictumst vestibulum rhoncus est pellentesque
|
|
|
|
elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu dictum varius duis at
|
|
|
|
consectetur lorem donec massa sapien faucibus et molestie ac feugiat sed lectus
|
|
|
|
vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa
|
|
|
|
eget egestas purus viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor
|
|
|
|
eu augue ut lectus arcu bibendum at varius vel pharetra vel turpis nunc eget lorem dolor sed viverra ipsum nunc
|
|
|
|
aliquet bibendum enim facilisis gravida neque convallis a cras semper auctor neque vitae tempus quam pellentesque
|
|
|
|
nec nam aliquam sem et tortor consequat id porta nibh venenatis cras sed felis eget velit aliquet sagittis id
|
|
|
|
consectetur purus ut faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae semper quis lectus
|
|
|
|
nulla at volutpat diam ut venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin fermentum leo
|
|
|
|
vel orci porta non pulvinar neque laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget
|
|
|
|
nullam non nisi est sit amet facilisis magna etiam tempor orci eu lobortis elementum nibh tellus molestie nunc non
|
|
|
|
blandit massa enim nec dui nunc mattis enim ut tellus elementum sagittis vitae et leo duis ut diam quam nulla
|
|
|
|
porttitor massa id neque aliquam vestibulum morbi blandit cursus risus at ultrices mi tempus imperdiet nulla
|
|
|
|
malesuada pellentesque elit eget gravida cum sociis natoque penatibus et magnis dis parturient montes nascetur
|
|
|
|
ridiculus mus mauris vitae ultricies leo integer malesuada nunc vel risus commodo viverra maecenas accumsan lacus
|
|
|
|
vel facilisis volutpat est velit egestas dui id ornare arcu odio ut sem nulla pharetra diam sit amet nisl suscipit
|
|
|
|
adipiscing bibendum est ultricies integer quis auctor elit sed vulputate mi sit amet mauris commodo quis imperdiet
|
|
|
|
massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat interdum varius
|
|
|
|
sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut consequat semper
|
|
|
|
viverra nam libero justo laoreet sit amet cursus sit amet dictum sit amet justo donec enim diam vulputate ut
|
|
|
|
pharetra sit amet aliquam id diam maecenas ultricies mi eget mauris pharetra et ultrices neque ornare aenean
|
|
|
|
euismod elementum nisi quis eleifend quam adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus urna neque
|
|
|
|
viverra justo nec ultrices dui sapien eget mi proin sed libero enim sed faucibus turpis in eu mi bibendum neque
|
|
|
|
egestas congue quisque egestas diam in arcu cursus euismod quis viverra nibh cras pulvinar mattis nunc sed blandit
|
|
|
|
libero volutpat sed cras ornare arcu dui vivamus arcu felis bibendum ut tristique et egestas quis ipsum
|
|
|
|
suspendisse ultrices gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim sit amet venenatis
|
|
|
|
urna cursus eget nunc scelerisque viverra mauris in aliquam sem fringilla ut morbi tincidunt augue interdum velit
|
|
|
|
euismod in pellentesque massa placerat duis ultricies lacus sed turpis tincidunt id aliquet risus feugiat in ante
|
|
|
|
metus dictum at tempor commodo ullamcorper a lacus vestibulum sed arcu non odio euismod lacinia at quis risus sed
|
|
|
|
vulputate odio ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat velit scelerisque in dictum
|
|
|
|
non consectetur a erat nam at lectus urna duis convallis convallis tellus id interdum velit laoreet id donec
|
|
|
|
ultrices tincidunt arcu non sodales neque
|
|
|
|
sodales ut etiam sit amet nisl purus in mollis nunc sed id semper risus in hendrerit gravida rutrum quisque non
|
|
|
|
tellus orci ac auctor augue mauris augue neque gravida in fermentum et sollicitudin
|
|
|
|
"""
|
2019-02-27 15:05:01 -08:00
|
|
|
}
|
|
|
|
|
2018-11-27 12:26:36 -08:00
|
|
|
test_reply = {
|
2019-01-04 11:03:37 -08:00
|
|
|
"comment": "Test reply"
|
2018-11-27 12:26:36 -08:00
|
|
|
# Fill in parentCommentId in test
|
|
|
|
}
|
2019-01-31 14:56:16 -08:00
|
|
|
|
|
|
|
mock_contribution_addresses = mock_request({
|
|
|
|
'transparent': 't123',
|
|
|
|
'sprout': 'z123',
|
|
|
|
'memo': '123',
|
|
|
|
})
|
2019-02-05 12:26:37 -08:00
|
|
|
|
|
|
|
mock_valid_address = mock_request({
|
|
|
|
'valid': True,
|
|
|
|
})
|
|
|
|
|
|
|
|
mock_invalid_address = mock_request({
|
|
|
|
'valid': False,
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
def mock_blockchain_api_requests(path, **kwargs):
|
|
|
|
if '/contribution/addresses' in path:
|
|
|
|
return mock_contribution_addresses()
|
|
|
|
if '/validate/address' in path:
|
|
|
|
return mock_valid_address()
|
|
|
|
raise Exception('No mock data defined for path {}'.format(path))
|