Skip to main content

Define a user story in the business transaction DSL

Project description

https://raw.githubusercontent.com/dry-python/brand/master/logo/stories.png

travis codecov docs gitter pypi black


The business transaction DSL

Installation

All released versions are hosted on the Python Package Index. You can install this package with following command.

pip install stories

Usage

stories provide a simple way to define a complex business scenario that include many processing steps.

from stories import story, arguments, Success, Failure, Result

class Subscribe:

    @story
    @arguments('category_id', 'user_id')
    def buy(I):

        I.find_category
        I.find_profile
        I.check_balance
        I.persist_subscription
        I.show_subscription

    def find_category(self, ctx):

        category = Category.objects.get(id=ctx.category_id)
        return Success(category=category)

    def find_profile(self, ctx):

        profile = Profile.objects.get(user_id=ctx.user_id)
        return Success(profile=profile)

    def check_balance(self, ctx):

        if ctx.category.cost < ctx.profile.balance:
            return Success()
        else:
            return Failure()

    def persist_subscription(self, ctx):

        subscription = Subscription(ctx.category, ctx.profile)
        subscription.save()
        return Success(subscription=subscription)

    def show_subscription(self, ctx):

        return Result(ctx.subscription)
>>> Subscribe().buy(category_id=1, user_id=1)
<Subscription object>
>>> _

This code style allow you clearly separate actual business scenario from implementation details.

License

Stories library is offered under the two clause BSD license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for stories, version 0.10.1
Filename, size File type Python version Upload date Hashes
Filename, size stories-0.10.1-py2.py3-none-any.whl (17.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size stories-0.10.1.tar.gz (12.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page