Skip to content

Commit

Permalink
Finish the list scaffold command for #38.
Browse files Browse the repository at this point in the history
  • Loading branch information
mblayman committed Sep 23, 2015
1 parent 970b3b9 commit 191dd0b
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
29 changes: 29 additions & 0 deletions handroll/scaffolder.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,35 @@
LIST_SCAFFOLDS = 1


def make(scaffold, site):
"""Use the given scaffold to make a site or list what is available."""
if scaffold == LIST_SCAFFOLDS:
list_scaffolds()
else:
make_scaffold(scaffold, site)


def list_scaffolds():
"""List out all available scaffolds."""
print _('Available scaffolds:\n')
for scaffold in sorted(BUILTIN_SCAFFOLDS.keys()):
print display_scaffold(scaffold, get_label(scaffold))
print ''


def display_scaffold(scaffold, label):
"""Display a scaffold in a consistent way for listing."""
return ' {0: <12}| {1}'.format(scaffold, label)


def get_label(scaffold):
"""Get the label for the scaffold."""
return BUILTIN_SCAFFOLDS[scaffold]


def make_scaffold(scaffold, site):
"""Make a site from the scaffold."""
# TODO: check that the scaffold is available.
# TODO: check the site does not exist.
# TODO: make the site directory.
# TODO: populate the site with content from the scaffold.
18 changes: 18 additions & 0 deletions handroll/tests/test_scaffolder.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Copyright (c) 2015, Matt Layman

import mock

from handroll import scaffolder
from handroll.i18n import _
from handroll.tests import TestCase
Expand All @@ -10,3 +12,19 @@ class TestScaffolder(TestCase):
def test_default_scaffolder_label(self):
label = scaffolder.get_label('default')
self.assertEqual(_('A complete site to get you going'), label)

def test_list_format(self):
display = scaffolder.display_scaffold('scaffold', 'It rocks')
self.assertEqual(' scaffold | It rocks', display)
display = scaffolder.display_scaffold('short', 'Rocks too')
self.assertEqual(' short | Rocks too', display)

@mock.patch('handroll.scaffolder.display_scaffold')
def test_displays_scaffolds(self, display_scaffold):
scaffolder.make(scaffolder.LIST_SCAFFOLDS, 'dontcare')
self.assertTrue(display_scaffold.called)

@mock.patch('handroll.scaffolder.make_scaffold')
def test_makes_scaffold(self, make_scaffold):
scaffolder.make('default', 'site')
make_scaffold.assert_called_once_with('default', 'site')

0 comments on commit 191dd0b

Please sign in to comment.