Example #1
0
    def test_conflict_v8(self):
        """Check whether ``back`` conflicts with an existing lend.

        In this scenario:
        * old_lend.out != Null
        * old_lend.back != Null
        * new_lend.out < old_lend.out

        Then, ``new_lend['back']`` is set to before, during and after
        ``old_lend``.

        """
        old_lend = factories.PastLendFactory.create()
        old_lend.back = old_lend.out
        old_lend.save()
        new_lend = self._copy_user_and_item(old_lend)
        new_lend['out'] = old_lend.out - timedelta(days = 1)

        # before old_lend
        new_lend['back'] = old_lend.out - timedelta(days = 1)
        self.assertTrue(forms.LendForm(new_lend).is_valid())

        # during old_lend
        new_lend['back'] = old_lend.out
        self.assertFalse(forms.LendForm(new_lend).is_valid())

        # after old_lend
        new_lend['back'] = old_lend.back + timedelta(days = 1)
        self.assertFalse(forms.LendForm(new_lend).is_valid())
Example #2
0
 def get_handler():
     """Return a form for creating an lend."""
     form_data = request.session.pop('form_data', None)
     if form_data is None:
         form = forms.LendForm()
     else:
         form = forms.LendForm(json.loads(form_data))
     return render(request, 'elts/lend-create-form.html', {'form': form})
Example #3
0
 def test_out_before_back(self):
     """``out`` must occur before ``back``."""
     data = {
         'user_id': factories.UserFactory.create().id,
         'item_id': factories.ItemFactory.create().id,
         'out': factories.lend_out(),
     }
     data['back'] = data['out'] - timedelta(days = 1)
     self.assertFalse(forms.LendForm(data).is_valid())
     data['back'] = data['out'] + timedelta(days = 1)
     self.assertTrue(forms.LendForm(data).is_valid())
Example #4
0
 def test_if_due_back_then_due_out(self):
     """If ``due_back`` is set, ``due_out`` must also be set."""
     data = {
         'user_id': factories.UserFactory.create().id,
         'item_id': factories.ItemFactory.create().id,
         'out': factories.lend_out(), # due_out or out is required
         'due_back': factories.lend_due_back(),
     }
     self.assertFalse(forms.LendForm(data).is_valid())
     data['due_out'] = data['due_back'] - timedelta(days = 1)
     self.assertTrue(forms.LendForm(data).is_valid())
Example #5
0
 def get_handler():
     """Return a form for updating lend ``lend_id_``."""
     form_data = request.session.pop('form_data', None)
     if form_data is None:
         form = forms.LendForm(instance = lend_)
     else:
         form = forms.LendForm(json.loads(form_data))
     return render(
         request,
         'elts/lend-id-update-form.html',
         {'lend': lend_, 'form': form}
     )
Example #6
0
 def test_missing_out_and_due_out(self):
     """Create a LendForm without setting ``out`` or ``due_out``."""
     form = forms.LendForm({
         'user_id': factories.UserFactory.create().id,
         'item_id': factories.ItemFactory.create().id,
     })
     self.assertFalse(form.is_valid())
Example #7
0
 def test_missing_item_id(self):
     """Create a LendForm without setting ``item_id``."""
     form = forms.LendForm({
         'user_id': factories.UserFactory.create().id,
         'due_out': factories.lend_due_out(),
         'out': factories.lend_out()
     })
     self.assertFalse(form.is_valid())
Example #8
0
 def test_valid_v2(self):
     """Create a valid LendForm with ``out`` set."""
     form = forms.LendForm({
         'user_id': factories.UserFactory.create().id,
         'item_id': factories.ItemFactory.create().id,
         'out': factories.lend_out()
     })
     self.assertTrue(form.is_valid())
Example #9
0
    def test_conflict_v5(self):
        """Check whether ``out`` conflicts with an existing lend.

        In this scenario:
        * old_lend.out != Null
        * old_lend.back == Null

        Then, ``new_lend['out']`` is set to before and during ``old_lend``.

        """
        old_lend = factories.PastLendFactory.create()
        new_lend = self._copy_user_and_item(old_lend)

        # before old_lend
        new_lend['out'] = old_lend.out - timedelta(days = 1)
        self.assertFalse(forms.LendForm(new_lend).is_valid())

        # during old_lend
        new_lend['out'] = old_lend.out
        self.assertFalse(forms.LendForm(new_lend).is_valid())
        new_lend['out'] = old_lend.out + timedelta(days = 1)
        self.assertFalse(forms.LendForm(new_lend).is_valid())
Example #10
0
    def put_handler():
        """Update lend ``lend_id_``.

        If update succeeds, redirect user to ``lend_id`` view. Otherwise,
        redirect user to ``lend_id_update_form``.

        """
        form = forms.LendForm(request.POST, instance = lend_)
        if form.is_valid():
            form.save()
            return http.HttpResponseRedirect(
                reverse('elts.views.lend_id', args = [lend_id_])
            )
        else:
            request.session['form_data'] = json.dumps(form.data)
            return http.HttpResponseRedirect(
                reverse('elts.views.lend_id_update_form', args = [lend_id_])
            )
Example #11
0
    def post_handler():
        """Create a new item lend.

        If creation suceeds, redirect user to ``lend_id`` view. Otherwise,
        redirect user to ``lend_create_form``.

        """
        form = forms.LendForm(request.POST)
        if form.is_valid():
            new_lend = form.save()
            return http.HttpResponseRedirect(
                reverse('elts.views.lend_id', args = [new_lend.id])
            )
        else:
            request.session['form_data'] = json.dumps(form.data)
            return http.HttpResponseRedirect(
                reverse('elts.views.lend_create_form')
            )