示例#1
0
    def command_deleteop(self, bot: Bot, update: Update, groups, user_data):
        opportunity_id = groups[0]

        opportunity = Opportunity.find(opportunity_id)

        if not opportunity:
            update.message.reply_text("Es gibt keine Reise mit dieser ID.")
            return self.END

        user_data["delete_opportunity_id"] = opportunity_id

        text = "Bist du dir sicher, dass du deine Reise am %s nach <strong>%s</strong> absagen möchtest?" % (
            opportunity.date_readable(),
            opportunity.city
        )

        reply = update.message.reply_text(text,
                                          parse_mode=ParseMode.HTML,
                                          reply_markup=InlineKeyboardMarkup(
                                              [[InlineKeyboardButton("Ja, sage die Reise ab",
                                                                     callback_data="deleteop_confirm")],
                                               [InlineKeyboardButton("Nein", callback_data="deleteop_cancel")]])
                                          )

        user_data["message_id"] = reply.message_id

        return self.CONFIRM_DELETION
示例#2
0
def handle_opportunitys(opportunity_id=0):
    headers = {"Content-Type": "application/json"}

    if request.method == "POST":
        print("creating opportunity")
        opportunity = request.json
        print(request.json)
        new_opportunity = Opportunity(opportunity["project"],
                                      opportunity["projectDescription"],
                                      opportunity["cost"], opportunity["time"],
                                      opportunity["reach"])
        db.session.add(new_opportunity)
        db.session.commit()
        response_body = {"status": "HTTP_200_OK. Ok"}
        status_code = 200

    elif request.method == "GET":
        user_opportunity_list = Opportunity.query.all()
        response_body = []
        for opportunity in user_opportunity_list:
            response_body.append(opportunity.serialize())
        status_code = 200

    elif request.method == "DELETE":
        Opportunity.query.filter_by(id=opportunity_id).delete()
        db.session.commit()
        response_body = {
            "result": "ok",
            "status": "HTTP_204_NO_CONTENT. User and tasks deleted."
        }
        status_code = 204

    return make_response(json.dumps(response_body), status_code, headers)
示例#3
0
    def handle_delete_confirmation(self, bot: Bot, update: Update, user_data):
        if update.callback_query.data == "deleteop_confirm":
            opportunity_id = user_data["delete_opportunity_id"]

            opportunity = Opportunity.find(opportunity_id)

            # Benachrichtige Menschen, die bestellt haben
            text = "@marudor hat seine Reise am %s nach <strong>%s</strong> leider abgesagt.\nDeine Bestellung wurde storniert." % (
                opportunity.date_readable(),
                opportunity.city
            )

            for order in opportunity.orders:
                user_id = order.user.telegram_user_id
                bot.sendMessage(user_id, text, parse_mode=ParseMode.HTML)

            opportunity.orders().delete()
            opportunity.delete()

            bot.edit_message_text(chat_id=update.effective_chat.id, message_id=user_data["message_id"],
                                  text="Die Reise wurde entfernt.")
        else:
            bot.edit_message_text(chat_id=update.effective_chat.id, message_id=user_data["message_id"],
                                  text="Ich habe die Reise nicht entfernt.")

        return self.END
    def handle_hometown(self, bot: Bot, update: Update, user_data):
        message = update.message  # type: Message

        if message.location:
            hometown = get_city(message.location.latitude,
                                message.location.longitude)
        else:
            hometown = message.text

        user = User.update_or_create(
            attributes={"telegram_user_id": message.from_user.id},
            values={
                "telegram_username": message.from_user.username,
                "hometown": hometown
            })

        text = "Okay. Du wohnst in <strong>%s</strong>.\n\n" % hometown
        opportunities = Opportunity.for_city(user.hometown)
        if opportunities.count() == 0:
            text += "Aktuell sind keine Bestellmöglichkeiten verfügbar. Ich werde dich benachrichtigen, wenn es soweit ist."
        else:
            text += "@marudor kommt an folgenden Tagen in deine Stadt:\n"

        for op in opportunities:
            text += "<strong>%s</strong>: Bestelle mit /order_%s\n" % (
                op.date.strftime("%d.%m.%Y"), op.id)

        if "new_user" in user_data:
            del user_data["new_user"]
            text += self.generate_command_intro()

        update.message.reply_text(text,
                                  parse_mode=ParseMode.HTML,
                                  reply_markup=ReplyKeyboardRemove())
        return self.END
示例#5
0
def get_opportunity(id: str):
    try:
        response = requests.get(f'https://torre.co/api/opportunities/{id}')
        data = response.json()
        data['skills'] = data['strengths']
        return Opportunity(**data)
    except:
        raise HTTPException(status_code=404, detail="Opportunity not found")
示例#6
0
    def handle_fetch_op(self, bot: Bot, update: Update):
        city = update.message.text
        opportunities = Opportunity.where_city(city).in_future().get()

        if opportunities.count() > 0:
            text = "@marudor kommt an folgenden Tagen nach <strong>%s</strong>:\n" % city
        else:
            text = "@marudor kommt in nächster Zeit nicht nach <strong>%s</strong>" % city

        for op in opportunities:
            text += "\n%s: Bestelle mit /order_%u" % (
                op.date.strftime("%d.%m.%Y"), op.id)

        update.message.reply_text(text, parse_mode=ParseMode.HTML)
示例#7
0
    def command_listops_normal(self, bot: Bot, update: Update):
        opportunities = Opportunity.in_future_or_today().get()
        if opportunities.count() == 0:
            text = "Es gibt aktuell keine eingetragenen Reisen."
        else:
            text = "marudor kommt an folgende Orte:"

        for op in opportunities:
            text += "\n\nAm %s nach <strong>%s</strong>" \
                    "\n<em>Bestellen</em>: /order_%u" % (
                op.date.strftime("%d.%m.%Y"),
                op.city,
                op.id,
            )

        update.message.reply_text(text, parse_mode=ParseMode.HTML)
示例#8
0
    def command_listops_marudor(self, bot: Bot, update: Update):
        opportunities = Opportunity.in_future_or_today().get()

        if opportunities.count() == 0:
            text = "Es gibt aktuell keine eingetragenen Reisen."
        else:
            text = "Welche Bestellungen möchtest du einsehen?"

        for op in opportunities:
            text += "\n\nAm %s nach <strong>%s</strong>" \
                    "\n<em>Zeige Bestellungen</em>: /showorders_%u" \
                    "\n<em>Lösche Reise</em>: /deleteop_%u" % (
                        op.date.strftime("%d.%m.%Y"),
                        op.city,
                        op.id,
                        op.id
                    )

        update.message.reply_text(text, parse_mode=ParseMode.HTML)
示例#9
0
def scrape_json(page):
    """function to scrape opportunities from kickstarter json"""

    opportunities = []
    projects = json.loads(page)['projects']
    for project in projects:
        opp = Opportunity(
            opportunity_id=project['id'],
            source="Kickstarter",
            title=project["name"],
            summary=project["blurb"],
            gbp_raised=int(float(project["usd_pledged"]) * USD_TO_GBP),
            percent_raised=int(
                float(project["pledged"] / project["goal"] * 100)),
            deadline=int(project["deadline"]),
            url=project["urls"]["web"]["project"])
        opportunities.append(opp)

    return opportunities
    def start_existing_user(self, bot: Bot, update: Update, user):
        t_user = update.effective_user
        opportunities = Opportunity.for_city(user.hometown)
        if t_user.username:
            text = "Willkommen zurück, @%s\n\n" % t_user.username
        else:
            text = "Willkommen zurück.\n\n"

        if opportunities.count() > 0:
            text += "@marudor kommt an folgenden Tagen in deine Stadt:"
        else:
            text += "@marudor hat keine Besuche in <strong>%s</strong> für die nächste Zeit geplant." % user.hometown

        for op in opportunities:
            text += "\n%s - Bestelle mit /order_%u" % (
                op.date.strftime("%d.%m.%Y"), op.id)

        text += self.generate_command_intro()

        update.message.reply_text(text, parse_mode=ParseMode.HTML)
        return self.END
示例#11
0
    def command_order(self, bot: Bot, update: Update, groups, user_data):
        opportunity_id = groups[0]

        user = User.where_telegram_user_id(update.effective_user.id).first()
        if not user:
            return

        opportunity = Opportunity.find(opportunity_id)
        if not opportunity:
            return

        user_data["neworder"] = Order.first_or_new(
            user_id=user.id, opportunity_id=opportunity_id)

        update.message.reply_text(
            "Du möchtest eine Bestellung für den %s für %s machen.\n\n"
            "Wieviele - und welche - Franzbrötchen möchtest du bestellen?" %
            (opportunity.date.format("%d.%m.%Y"), opportunity.city))
        update.message.reply_text(
            "Spendenempfehlung sind 1,5€ für ein normales Franzbrötchen. 2€ für ein Special Franzbrötchen.\n"
            "Gerne per https://www.paypal.me/marudor überweisen!")
        return self.WAIT_FOR_ORDER_TEXT
示例#12
0
def scrape(page):
    """scrapes the given page for investment opportunities"""

    opportunities = []
    soup = BeautifulSoup(page, 'html.parser')
    cards = soup.select("div#cc-opportunities__listGrid section.cc-card")

    for card in cards:
        days_string = card.select_one("span.cc-card__daysleft").string.strip()
        days_remaining = int(re.findall(r"\d+", days_string)[0])
        opp = Opportunity(
            opportunity_id=card.get("data-opportunity-id"),
            source="Crowdcube",
            title=card.get("data-opportunity-name"),
            summary=card.select_one("div.cc-card__content > p").string.strip(),
            gbp_raised=int(card.get("data-opportunity-raised")),
            percent_raised=int(card.get("data-opportunity-progress")),
            deadline=int(time.time() + days_to_seconds(days_remaining)),
            url=card.select_one("a.cc-card__link").get('href')
        )
        opportunities.append(opp)

    return opportunities
示例#13
0
    def command_showorders(self, bot: Bot, update: Update, groups):
        opportunity_id = groups[0]

        opportunity = Opportunity.find(opportunity_id)
        orders = opportunity.orders

        if orders.count() == 0:
            text = "Bisher gibt es keine Bestellungen für deine Reise am %s nach <strong>%s</strong>" % (
                opportunity.date_readable(),
                opportunity.city
            )
        else:
            text = "Bestellungen für deine Reise am %s nach <strong>%s</strong>\n" % (
                opportunity.date_readable(),
                opportunity.city
            )

        for order in orders:
            text += "\n▶︎ @%s: %s" % (
                order.user.telegram_username,
                order.order_text
            )

        update.message.reply_text(text, parse_mode=ParseMode.HTML)
示例#14
0
    def handle_newop_date(self, bot: Bot, update: Update, user_data):
        text = update.message.text  # type: str

        date = parse_date(text)

        if not date:
            update.message.reply_text(
                "Ich hab keine Ahnung wovon du redest. Dir ist schon klar, dass ich ein Datum von dir wollte, oder? Probier's bitte nochmal!"
            )
            return

        if date < datetime.now():
            update.message.reply_text(
                "Solange noch keine Zeitmaschinen erfunden wurden, kannst du keine Reisen in der Vergangenheit anlegen.\n"
                "Wann willst du wirklich reisen?")
            return

        user_data["newop"] = Opportunity(date=date)

        keyboard = self.app.generate_cities_keyboard()
        update.message.reply_text("In welche Stadt bist du am %s unterwegs?" %
                                  date.strftime("%d.%m.%Y"),
                                  reply_markup=keyboard)
        return self.WAIT_FOR_CITY
示例#15
0
文件: handler.py 项目: san-na/crm
 def add(name, source, next_contacts):
     """新增销售机会
     """
     opportunity = Opportunity(name, next_contacts, source)
     opportunity.save()
     return opportunity
示例#16
0
class SalesViewsTest(TestCase):
    username = "******"
    password = "******"

    def setUp(self):
        self.group, created = Group.objects.get_or_create(name='test')
        self.user, created = DjangoUser.objects.get_or_create(username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(name='default')
        perspective.set_default_user()
        perspective.save()
        ModuleSetting.set('default_perspective', perspective.id)

        self.contact_type = ContactType()
        self.contact_type.slug = 'machine'
        self.contact_type.name = 'machine'
        self.contact_type.save()

        self.contact = Contact()
        self.contact.contact_type = self.contact_type
        self.contact.set_default_user()
        self.contact.save()
        self.assertNotEquals(self.contact.id, None)

        self.status = SaleStatus()
        self.status.set_default_user()
        self.status.save()
        self.assertNotEquals(self.status.id, None)

        self.currency = Currency(code="GBP",
                                 name="Pounds",
                                 symbol="L",
                                 is_default=True)
        self.currency.save()

        self.source = SaleSource()
        self.source.set_default_user()
        self.source.save()
        self.assertNotEquals(self.source.id, None)

        self.product = Product(name="Test")
        self.product.product_type = 'service'
        self.product.active = True
        self.product.sell_price = 10
        self.product.buy_price = 100
        self.product.set_default_user()
        self.product.save()
        self.assertNotEquals(self.product.id, None)

        self.subscription = Subscription()
        self.subscription.client = self.contact
        self.subscription.set_default_user()
        self.subscription.save()
        self.assertNotEquals(self.subscription.id, None)

        self.lead = Lead()
        self.lead.contact_method = 'email'
        self.lead.status = self.status
        self.lead.contact = self.contact
        self.lead.set_default_user()
        self.lead.save()
        self.assertNotEquals(self.lead.id, None)

        self.opportunity = Opportunity()
        self.opportunity.lead = self.lead
        self.opportunity.contact = self.contact
        self.opportunity.status = self.status
        self.opportunity.amount = 100
        self.opportunity.amount_currency = self.currency
        self.opportunity.amount_display = 120
        self.opportunity.set_default_user()
        self.opportunity.save()
        self.assertNotEquals(self.opportunity.id, None)

        self.order = SaleOrder(reference="Test")
        self.order.opportunity = self.opportunity
        self.order.status = self.status
        self.order.source = self.source
        self.order.currency = self.currency
        self.order.total = 0
        self.order.total_display = 0
        self.order.set_default_user()
        self.order.save()
        self.assertNotEquals(self.order.id, None)

        self.ordered_product = OrderedProduct()
        self.ordered_product.product = self.product
        self.ordered_product.order = self.order
        self.ordered_product.rate = 0
        self.ordered_product.subscription = self.subscription
        self.ordered_product.set_default_user()
        self.ordered_product.save()

        self.assertNotEquals(self.ordered_product.id, None)

    ######################################
    # Testing views when user is logged in
    ######################################
    def test_index(self):
        "Test page with login at /sales/index"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_index'))
        self.assertEquals(response.status_code, 200)

    def test_index_open(self):
        "Test page with login at /sales/open"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_index_open'))
        self.assertEquals(response.status_code, 200)

    def test_index_assigned(self):
        "Test page with login at /sales/index/assigned"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_index_assigned'))
        self.assertEquals(response.status_code, 200)

    # Orders
    def test_order_add(self):
        "Test page with login at /sales/order/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_order_add'))
        self.assertEquals(response.status_code, 200)

    def test_order_add_lead(self):
        "Test page with login at /sales/order/add/lead/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_order_add_with_lead', args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_add_opportunity(self):
        "Test page with login at /sales/order/add/opportunity/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_order_add_with_opportunity', args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_edit(self):
        "Test page with login at /sales/order/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_order_edit', args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_view(self):
        "Test page with login at /sales/order/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_order_view', args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_delete(self):
        "Test page with login at /sales/order/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_order_delete', args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_invoice_view(self):
        "Test page with login at /sales/order/invoice/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_order_invoice_view', args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    # Products
    def test_product_index(self):
        "Test page with login at /sales/product/index"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_product_index'))
        self.assertEquals(response.status_code, 200)

    def test_product_add(self):
        "Test page with login at /sales/product/add/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_product_add'))
        self.assertEquals(response.status_code, 200)

    def test_product_add_parent(self):
        "Test page with login at /sales/product/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_product_add', args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_product_edit(self):
        "Test page with login at /sales/product/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_product_edit', args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_product_view(self):
        "Test page with login at /sales/product/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_product_view', args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_product_delete(self):
        "Test page with login at /sales/product/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_product_delete', args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    # Settings
    def test_settings_view(self):
        "Test page with login at /sales/settings/view"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_settings_view'))
        self.assertEquals(response.status_code, 200)

    def test_settings_edit(self):
        "Test page with login at /sales/settings/edit"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_settings_edit'))
        self.assertEquals(response.status_code, 200)

    # Statuses
    def test_status_add(self):
        "Test page with login at /sales/status/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_status_add'))
        self.assertEquals(response.status_code, 200)

    def test_status_edit(self):
        "Test page with login at /sales/status/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_status_edit', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_view(self):
        "Test page with login at /sales/status/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_status_view', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_delete(self):
        "Test page with login at /sales/status/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_status_delete', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    # Subscriptions
    def test_subscription_add(self):
        "Test page with login at /sales/subscription/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_subscription_add'))
        self.assertEquals(response.status_code, 200)

    def test_subscription_add_product(self):
        "Test page with login at /sales/subscription/add/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_subscription_add_with_product', args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_subscription_edit(self):
        "Test page with login at /sales/subscription/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_subscription_edit', args=[self.subscription.id]))
        self.assertEquals(response.status_code, 200)

    def test_subscription_view(self):
        "Test page with login at /sales/subscription/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_subscription_view', args=[self.subscription.id]))
        self.assertEquals(response.status_code, 200)

    def test_subscription_delete(self):
        "Test page with login at /sales/subscription/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_subscription_delete', args=[self.subscription.id]))
        self.assertEquals(response.status_code, 200)

    # Ordered Products
    def test_ordered_product_add(self):
        "Test page with login at /sales/ordered_product/add/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_ordered_product_add', args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_ordered_product_edit(self):
        "Test page with login at /sales/ordered_product/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_ordered_product_edit', args=[self.ordered_product.id]))
        self.assertEquals(response.status_code, 200)

    def test_ordered_product_view(self):
        "Test page with login at /sales/ordered_product/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_ordered_product_view', args=[self.ordered_product.id]))
        self.assertEquals(response.status_code, 200)

    def test_ordered_product_delete(self):
        "Test page with login at /sales/ordered_product/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_ordered_product_delete', args=[self.ordered_product.id]))
        self.assertEquals(response.status_code, 200)

    # Sources
    def test_source_add(self):
        "Test page with login at /sales/source/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_source_add'))
        self.assertEquals(response.status_code, 200)

    def test_source_edit(self):
        "Test page with login at /sales/source/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_source_edit', args=[self.source.id]))
        self.assertEquals(response.status_code, 200)

    def test_source_view(self):
        "Test page with login at /sales/source/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_source_view', args=[self.source.id]))
        self.assertEquals(response.status_code, 200)

    def test_source_delete(self):
        "Test page with login at /sales/source/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_source_delete', args=[self.source.id]))
        self.assertEquals(response.status_code, 200)

    # Leads
    def test_lead_index(self):
        "Test page with login at /sales/lead/index"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_lead_index'))
        self.assertEquals(response.status_code, 200)

    def test_lead_index_assigned(self):
        "Test page with login at /sales/lead/index/assigned"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_lead_index_assigned'))
        self.assertEquals(response.status_code, 200)

    def test_lead_add(self):
        "Test page with login at /sales/lead/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_lead_add'))
        self.assertEquals(response.status_code, 200)

    def test_lead_edit(self):
        "Test page with login at /sales/lead/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_lead_edit', args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_lead_view(self):
        "Test page with login at /sales/lead/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_lead_view', args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_lead_delete(self):
        "Test page with login at /sales/lead/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_lead_delete', args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    # Opportunities
    def test_opportunity_index(self):
        "Test page with login at /sales/opportunity/index"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_opportunity_index'))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_index_assigned(self):
        "Test page with login at /sales/opportunity/index/assigned"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_opportunity_index_assigned'))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_add(self):
        "Test page with login at /sales/opportunity/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('sales_opportunity_add'))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_add_lead(self):
        "Test page with login at /sales/opportunity/add/lead/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_opportunity_add_with_lead', args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_edit(self):
        "Test page with login at /sales/opportunity/edit/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_opportunity_edit', args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_view(self):
        "Test page with login at /sales/opportunity/view/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_opportunity_view', args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_delete(self):
        "Test page with login at /sales/opportunity/delete/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('sales_opportunity_delete', args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    ######################################
    # Testing views when user is not logged in
    ######################################
    def test_index_anonymous(self):
        "Test index page at /sales/"
        response = self.client.get('/sales/')
        # Redirects as unauthenticated
        self.assertRedirects(response, reverse('user_login'))

    def test_index_open_out(self):
        "Testing /sales/open"
        response = self.client.get(reverse('sales_index_open'))
        self.assertRedirects(response, reverse('user_login'))

    def test_index_assigned_out(self):
        "Testing /sales/index/assigned"
        response = self.client.get(reverse('sales_index_assigned'))
        self.assertRedirects(response, reverse('user_login'))

    # Orders
    def test_order_add_out(self):
        "Testing /sales/order/add"
        response = self.client.get(reverse('sales_order_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_order_add_lead_out(self):
        "Testing /sales/order/add/lead/"
        response = self.client.get(
            reverse('sales_order_add_with_lead', args=[self.lead.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_order_add_opportunity_out(self):
        "Testing /sales/order/add/opportunity/"
        response = self.client.get(
            reverse('sales_order_add_with_opportunity', args=[self.opportunity.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_order_edit_out(self):
        "Testing /sales/order/edit/"
        response = self.client.get(
            reverse('sales_order_edit', args=[self.order.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_order_view_out(self):
        "Testing /sales/order/view/"
        response = self.client.get(
            reverse('sales_order_view', args=[self.order.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_order_delete_out(self):
        "Testing /sales/order/delete/"
        response = self.client.get(
            reverse('sales_order_delete', args=[self.order.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_order_invoice_view_out(self):
        "Testing /sales/order/invoice/"
        response = self.client.get(
            reverse('sales_order_invoice_view', args=[self.order.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Products
    def test_product_index_out(self):
        "Testing /sales/product/index"
        response = self.client.get(reverse('sales_product_index'))
        self.assertRedirects(response, reverse('user_login'))

    def test_product_add_out(self):
        "Testing /sales/product/add/"
        response = self.client.get(reverse('sales_product_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_product_add_parent_out(self):
        "Testing /sales/product/add"
        response = self.client.get(
            reverse('sales_product_add', args=[self.product.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_product_edit_out(self):
        "Testing /sales/product/edit/"
        response = self.client.get(
            reverse('sales_product_edit', args=[self.product.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_product_view_out(self):
        "Testing /sales/product/view/"
        response = self.client.get(
            reverse('sales_product_view', args=[self.product.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_product_delete_out(self):
        "Testing /sales/product/delete/"
        response = self.client.get(
            reverse('sales_product_delete', args=[self.product.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Settings
    def test_settings_view_out(self):
        "Testing /sales/settings/view"
        response = self.client.get(reverse('sales_settings_view'))
        self.assertRedirects(response, reverse('user_login'))

    def test_settings_edit_out(self):
        "Testing /sales/settings/edit"
        response = self.client.get(reverse('sales_settings_edit'))
        self.assertRedirects(response, reverse('user_login'))

    # Statuses
    def test_status_add_out(self):
        "Testing /sales/status/add"
        response = self.client.get(reverse('sales_status_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_edit_out(self):
        "Testing /sales/status/edit/"
        response = self.client.get(
            reverse('sales_status_edit', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_view_out(self):
        "Testing /sales/status/view/"
        response = self.client.get(
            reverse('sales_status_view', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_delete_out(self):
        "Testing /sales/status/delete/"
        response = self.client.get(
            reverse('sales_status_delete', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Subscriptions
    def test_subscription_add_out(self):
        "Testing /sales/subscription/add"
        response = self.client.get(reverse('sales_subscription_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_subscription_add_product_out(self):
        "Testing /sales/subscription/add/"
        response = self.client.get(
            reverse('sales_subscription_add_with_product', args=[self.product.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_subscription_edit_out(self):
        "Testing /sales/subscription/edit/"
        response = self.client.get(
            reverse('sales_subscription_edit', args=[self.subscription.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_subscription_view_out(self):
        "Testing /sales/subscription/view/"
        response = self.client.get(
            reverse('sales_subscription_view', args=[self.subscription.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_subscription_delete_out(self):
        "Testing /sales/subscription/delete/"
        response = self.client.get(
            reverse('sales_subscription_delete', args=[self.subscription.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Ordered Products
    def test_ordered_product_add_out(self):
        "Testing /sales/ordered_product/add/"
        response = self.client.get(
            reverse('sales_ordered_product_add', args=[self.order.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ordered_product_edit_out(self):
        "Testing /sales/ordered_product/edit/"
        response = self.client.get(
            reverse('sales_ordered_product_edit', args=[self.ordered_product.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ordered_product_view_out(self):
        "Testing /sales/ordered_product/view/"
        response = self.client.get(
            reverse('sales_ordered_product_view', args=[self.ordered_product.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ordered_product_delete_out(self):
        "Testing /sales/ordered_product/delete/"
        response = self.client.get(
            reverse('sales_ordered_product_delete', args=[self.ordered_product.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Sources
    def test_source_add_out(self):
        "Testing /sales/source/add"
        response = self.client.get(reverse('sales_source_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_source_edit_out(self):
        "Testing /sales/source/edit/"
        response = self.client.get(
            reverse('sales_source_edit', args=[self.source.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_source_view_out(self):
        "Testing /sales/source/view/"
        response = self.client.get(
            reverse('sales_source_view', args=[self.source.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_source_delete_out(self):
        "Testing /sales/source/delete/"
        response = self.client.get(
            reverse('sales_source_delete', args=[self.source.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Leads
    def test_lead_index_out(self):
        "Testing /sales/lead/index"
        response = self.client.get(reverse('sales_lead_index'))
        self.assertRedirects(response, reverse('user_login'))

    def test_lead_index_assigned_out(self):
        "Testing /sales/lead/index/assigned"
        response = self.client.get(reverse('sales_lead_index_assigned'))
        self.assertRedirects(response, reverse('user_login'))

    def test_lead_add_out(self):
        "Testing /sales/lead/add"
        response = self.client.get(reverse('sales_lead_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_lead_edit_out(self):
        "Testing /sales/lead/edit/"
        response = self.client.get(
            reverse('sales_lead_edit', args=[self.lead.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_lead_view_out(self):
        "Testing /sales/lead/view/"
        response = self.client.get(
            reverse('sales_lead_view', args=[self.lead.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_lead_delete_out(self):
        "Testing /sales/lead/delete/"
        response = self.client.get(
            reverse('sales_lead_delete', args=[self.lead.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Opportunities
    def test_opportunity_index_out(self):
        "Testing /sales/opportunity/index/"
        response = self.client.get(reverse('sales_opportunity_index'))
        self.assertRedirects(response, reverse('user_login'))

    def test_opportunity_index_assigned_out(self):
        "Testing /sales/opportunity/index/assigned/"
        response = self.client.get(reverse('sales_opportunity_index_assigned'))
        self.assertRedirects(response, reverse('user_login'))

    def test_opportunity_add_out(self):
        "Testing /sales/opportunity/add/"
        response = self.client.get(reverse('sales_opportunity_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_opportunity_add_lead_out(self):
        "Testing /sales/opportunity/add/lead/"
        response = self.client.get(
            reverse('sales_opportunity_add_with_lead', args=[self.lead.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_opportunity_edit_out(self):
        "Testing /sales/opportunity/edit/"
        response = self.client.get(
            reverse('sales_opportunity_edit', args=[self.opportunity.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_opportunity_view_out(self):
        "Testing /sales/opportunity/view/"
        response = self.client.get(
            reverse('sales_opportunity_view', args=[self.opportunity.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_opportunity_delete_out(self):
        "Testing /sales/opportunity/delete/"
        response = self.client.get(
            reverse('sales_opportunity_delete', args=[self.opportunity.id]))
        self.assertRedirects(response, reverse('user_login'))
示例#17
0
    def setUp(self):
        self.group, created = Group.objects.get_or_create(name='test')
        self.user, created = DjangoUser.objects.get_or_create(username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(name='default')
        perspective.set_default_user()
        perspective.save()
        ModuleSetting.set('default_perspective', perspective.id)

        self.contact_type = ContactType()
        self.contact_type.slug = 'machine'
        self.contact_type.name = 'machine'
        self.contact_type.save()

        self.contact = Contact()
        self.contact.contact_type = self.contact_type
        self.contact.set_default_user()
        self.contact.save()
        self.assertNotEquals(self.contact.id, None)

        self.status = SaleStatus()
        self.status.set_default_user()
        self.status.save()
        self.assertNotEquals(self.status.id, None)

        self.currency = Currency(code="GBP",
                                 name="Pounds",
                                 symbol="L",
                                 is_default=True)
        self.currency.save()

        self.source = SaleSource()
        self.source.set_default_user()
        self.source.save()
        self.assertNotEquals(self.source.id, None)

        self.product = Product(name="Test")
        self.product.product_type = 'service'
        self.product.active = True
        self.product.sell_price = 10
        self.product.buy_price = 100
        self.product.set_default_user()
        self.product.save()
        self.assertNotEquals(self.product.id, None)

        self.subscription = Subscription()
        self.subscription.client = self.contact
        self.subscription.set_default_user()
        self.subscription.save()
        self.assertNotEquals(self.subscription.id, None)

        self.lead = Lead()
        self.lead.contact_method = 'email'
        self.lead.status = self.status
        self.lead.contact = self.contact
        self.lead.set_default_user()
        self.lead.save()
        self.assertNotEquals(self.lead.id, None)

        self.opportunity = Opportunity()
        self.opportunity.lead = self.lead
        self.opportunity.contact = self.contact
        self.opportunity.status = self.status
        self.opportunity.amount = 100
        self.opportunity.amount_currency = self.currency
        self.opportunity.amount_display = 120
        self.opportunity.set_default_user()
        self.opportunity.save()
        self.assertNotEquals(self.opportunity.id, None)

        self.order = SaleOrder(reference="Test")
        self.order.opportunity = self.opportunity
        self.order.status = self.status
        self.order.source = self.source
        self.order.currency = self.currency
        self.order.total = 0
        self.order.total_display = 0
        self.order.set_default_user()
        self.order.save()
        self.assertNotEquals(self.order.id, None)

        self.ordered_product = OrderedProduct()
        self.ordered_product.product = self.product
        self.ordered_product.order = self.order
        self.ordered_product.rate = 0
        self.ordered_product.subscription = self.subscription
        self.ordered_product.set_default_user()
        self.ordered_product.save()

        self.assertNotEquals(self.ordered_product.id, None)
示例#18
0
文件: tests.py 项目: tovmeod/anaf
class SalesViewsTest(TestCase):
    username = "******"
    password = "******"

    def setUp(self):
        self.group, created = Group.objects.get_or_create(name="test")
        self.user, created = DjangoUser.objects.get_or_create(username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(name="default")
        perspective.set_default_user()
        perspective.save()
        ModuleSetting.set("default_perspective", perspective.id)

        self.contact_type = ContactType()
        self.contact_type.slug = "machine"
        self.contact_type.name = "machine"
        self.contact_type.save()

        self.contact = Contact()
        self.contact.contact_type = self.contact_type
        self.contact.set_default_user()
        self.contact.save()
        self.assertNotEquals(self.contact.id, None)

        self.status = SaleStatus()
        self.status.set_default_user()
        self.status.save()
        self.assertNotEquals(self.status.id, None)

        self.currency = Currency(code="GBP", name="Pounds", symbol="L", is_default=True)
        self.currency.save()

        self.source = SaleSource()
        self.source.set_default_user()
        self.source.save()
        self.assertNotEquals(self.source.id, None)

        self.product = Product(name="Test")
        self.product.product_type = "service"
        self.product.active = True
        self.product.sell_price = 10
        self.product.buy_price = 100
        self.product.set_default_user()
        self.product.save()
        self.assertNotEquals(self.product.id, None)

        self.subscription = Subscription()
        self.subscription.client = self.contact
        self.subscription.set_default_user()
        self.subscription.save()
        self.assertNotEquals(self.subscription.id, None)

        self.lead = Lead()
        self.lead.contact_method = "email"
        self.lead.status = self.status
        self.lead.contact = self.contact
        self.lead.set_default_user()
        self.lead.save()
        self.assertNotEquals(self.lead.id, None)

        self.opportunity = Opportunity()
        self.opportunity.lead = self.lead
        self.opportunity.contact = self.contact
        self.opportunity.status = self.status
        self.opportunity.amount = 100
        self.opportunity.amount_currency = self.currency
        self.opportunity.amount_display = 120
        self.opportunity.set_default_user()
        self.opportunity.save()
        self.assertNotEquals(self.opportunity.id, None)

        self.order = SaleOrder(reference="Test")
        self.order.opportunity = self.opportunity
        self.order.status = self.status
        self.order.source = self.source
        self.order.currency = self.currency
        self.order.total = 0
        self.order.total_display = 0
        self.order.set_default_user()
        self.order.save()
        self.assertNotEquals(self.order.id, None)

        self.ordered_product = OrderedProduct()
        self.ordered_product.product = self.product
        self.ordered_product.order = self.order
        self.ordered_product.rate = 0
        self.ordered_product.subscription = self.subscription
        self.ordered_product.set_default_user()
        self.ordered_product.save()

        self.assertNotEquals(self.ordered_product.id, None)

    ######################################
    # Testing views when user is logged in
    ######################################
    def test_index(self):
        "Test page with login at /sales/index"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_index"))
        self.assertEquals(response.status_code, 200)

    def test_index_open(self):
        "Test page with login at /sales/open"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_index_open"))
        self.assertEquals(response.status_code, 200)

    def test_index_assigned(self):
        "Test page with login at /sales/index/assigned"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_index_assigned"))
        self.assertEquals(response.status_code, 200)

    # Orders
    def test_order_add(self):
        "Test page with login at /sales/order/add"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_order_add"))
        self.assertEquals(response.status_code, 200)

    def test_order_add_lead(self):
        "Test page with login at /sales/order/add/lead/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_order_add_with_lead", args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_add_opportunity(self):
        "Test page with login at /sales/order/add/opportunity/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_order_add_with_opportunity", args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_edit(self):
        "Test page with login at /sales/order/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_order_edit", args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_view(self):
        "Test page with login at /sales/order/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_order_view", args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_delete(self):
        "Test page with login at /sales/order/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_order_delete", args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_order_invoice_view(self):
        "Test page with login at /sales/order/invoice/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_order_invoice_view", args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    # Products
    def test_product_index(self):
        "Test page with login at /sales/product/index"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_product_index"))
        self.assertEquals(response.status_code, 200)

    def test_product_add(self):
        "Test page with login at /sales/product/add/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_product_add"))
        self.assertEquals(response.status_code, 200)

    def test_product_add_parent(self):
        "Test page with login at /sales/product/add"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_product_add", args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_product_edit(self):
        "Test page with login at /sales/product/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_product_edit", args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_product_view(self):
        "Test page with login at /sales/product/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_product_view", args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_product_delete(self):
        "Test page with login at /sales/product/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_product_delete", args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    # Settings
    def test_settings_view(self):
        "Test page with login at /sales/settings/view"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_settings_view"))
        self.assertEquals(response.status_code, 200)

    def test_settings_edit(self):
        "Test page with login at /sales/settings/edit"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_settings_edit"))
        self.assertEquals(response.status_code, 200)

    # Statuses
    def test_status_add(self):
        "Test page with login at /sales/status/add"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_status_add"))
        self.assertEquals(response.status_code, 200)

    def test_status_edit(self):
        "Test page with login at /sales/status/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_status_edit", args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_view(self):
        "Test page with login at /sales/status/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_status_view", args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_delete(self):
        "Test page with login at /sales/status/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_status_delete", args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    # Subscriptions
    def test_subscription_add(self):
        "Test page with login at /sales/subscription/add"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_subscription_add"))
        self.assertEquals(response.status_code, 200)

    def test_subscription_add_product(self):
        "Test page with login at /sales/subscription/add/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_subscription_add_with_product", args=[self.product.id]))
        self.assertEquals(response.status_code, 200)

    def test_subscription_edit(self):
        "Test page with login at /sales/subscription/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_subscription_edit", args=[self.subscription.id]))
        self.assertEquals(response.status_code, 200)

    def test_subscription_view(self):
        "Test page with login at /sales/subscription/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_subscription_view", args=[self.subscription.id]))
        self.assertEquals(response.status_code, 200)

    def test_subscription_delete(self):
        "Test page with login at /sales/subscription/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_subscription_delete", args=[self.subscription.id]))
        self.assertEquals(response.status_code, 200)

    # Ordered Products
    def test_ordered_product_add(self):
        "Test page with login at /sales/ordered_product/add/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_ordered_product_add", args=[self.order.id]))
        self.assertEquals(response.status_code, 200)

    def test_ordered_product_edit(self):
        "Test page with login at /sales/ordered_product/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_ordered_product_edit", args=[self.ordered_product.id]))
        self.assertEquals(response.status_code, 200)

    def test_ordered_product_view(self):
        "Test page with login at /sales/ordered_product/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_ordered_product_view", args=[self.ordered_product.id]))
        self.assertEquals(response.status_code, 200)

    def test_ordered_product_delete(self):
        "Test page with login at /sales/ordered_product/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_ordered_product_delete", args=[self.ordered_product.id]))
        self.assertEquals(response.status_code, 200)

    # Sources
    def test_source_add(self):
        "Test page with login at /sales/source/add"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_source_add"))
        self.assertEquals(response.status_code, 200)

    def test_source_edit(self):
        "Test page with login at /sales/source/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_source_edit", args=[self.source.id]))
        self.assertEquals(response.status_code, 200)

    def test_source_view(self):
        "Test page with login at /sales/source/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_source_view", args=[self.source.id]))
        self.assertEquals(response.status_code, 200)

    def test_source_delete(self):
        "Test page with login at /sales/source/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_source_delete", args=[self.source.id]))
        self.assertEquals(response.status_code, 200)

    # Leads
    def test_lead_index(self):
        "Test page with login at /sales/lead/index"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_lead_index"))
        self.assertEquals(response.status_code, 200)

    def test_lead_index_assigned(self):
        "Test page with login at /sales/lead/index/assigned"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_lead_index_assigned"))
        self.assertEquals(response.status_code, 200)

    def test_lead_add(self):
        "Test page with login at /sales/lead/add"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_lead_add"))
        self.assertEquals(response.status_code, 200)

    def test_lead_edit(self):
        "Test page with login at /sales/lead/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_lead_edit", args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_lead_view(self):
        "Test page with login at /sales/lead/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_lead_view", args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_lead_delete(self):
        "Test page with login at /sales/lead/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_lead_delete", args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    # Opportunities
    def test_opportunity_index(self):
        "Test page with login at /sales/opportunity/index"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_opportunity_index"))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_index_assigned(self):
        "Test page with login at /sales/opportunity/index/assigned"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_opportunity_index_assigned"))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_add(self):
        "Test page with login at /sales/opportunity/add"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_opportunity_add"))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_add_lead(self):
        "Test page with login at /sales/opportunity/add/lead/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_opportunity_add_with_lead", args=[self.lead.id]))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_edit(self):
        "Test page with login at /sales/opportunity/edit/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_opportunity_edit", args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_view(self):
        "Test page with login at /sales/opportunity/view/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_opportunity_view", args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    def test_opportunity_delete(self):
        "Test page with login at /sales/opportunity/delete/"
        response = self.client.post("/accounts/login", {"username": self.username, "password": self.password})
        self.assertRedirects(response, "/")
        response = self.client.get(reverse("sales_opportunity_delete", args=[self.opportunity.id]))
        self.assertEquals(response.status_code, 200)

    ######################################
    # Testing views when user is not logged in
    ######################################
    def test_index_anonymous(self):
        "Test index page at /sales/"
        response = self.client.get("/sales/")
        # Redirects as unauthenticated
        self.assertRedirects(response, reverse("user_login"))

    def test_index_open_out(self):
        "Testing /sales/open"
        response = self.client.get(reverse("sales_index_open"))
        self.assertRedirects(response, reverse("user_login"))

    def test_index_assigned_out(self):
        "Testing /sales/index/assigned"
        response = self.client.get(reverse("sales_index_assigned"))
        self.assertRedirects(response, reverse("user_login"))

    # Orders
    def test_order_add_out(self):
        "Testing /sales/order/add"
        response = self.client.get(reverse("sales_order_add"))
        self.assertRedirects(response, reverse("user_login"))

    def test_order_add_lead_out(self):
        "Testing /sales/order/add/lead/"
        response = self.client.get(reverse("sales_order_add_with_lead", args=[self.lead.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_order_add_opportunity_out(self):
        "Testing /sales/order/add/opportunity/"
        response = self.client.get(reverse("sales_order_add_with_opportunity", args=[self.opportunity.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_order_edit_out(self):
        "Testing /sales/order/edit/"
        response = self.client.get(reverse("sales_order_edit", args=[self.order.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_order_view_out(self):
        "Testing /sales/order/view/"
        response = self.client.get(reverse("sales_order_view", args=[self.order.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_order_delete_out(self):
        "Testing /sales/order/delete/"
        response = self.client.get(reverse("sales_order_delete", args=[self.order.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_order_invoice_view_out(self):
        "Testing /sales/order/invoice/"
        response = self.client.get(reverse("sales_order_invoice_view", args=[self.order.id]))
        self.assertRedirects(response, reverse("user_login"))

    # Products
    def test_product_index_out(self):
        "Testing /sales/product/index"
        response = self.client.get(reverse("sales_product_index"))
        self.assertRedirects(response, reverse("user_login"))

    def test_product_add_out(self):
        "Testing /sales/product/add/"
        response = self.client.get(reverse("sales_product_add"))
        self.assertRedirects(response, reverse("user_login"))

    def test_product_add_parent_out(self):
        "Testing /sales/product/add"
        response = self.client.get(reverse("sales_product_add", args=[self.product.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_product_edit_out(self):
        "Testing /sales/product/edit/"
        response = self.client.get(reverse("sales_product_edit", args=[self.product.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_product_view_out(self):
        "Testing /sales/product/view/"
        response = self.client.get(reverse("sales_product_view", args=[self.product.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_product_delete_out(self):
        "Testing /sales/product/delete/"
        response = self.client.get(reverse("sales_product_delete", args=[self.product.id]))
        self.assertRedirects(response, reverse("user_login"))

    # Settings
    def test_settings_view_out(self):
        "Testing /sales/settings/view"
        response = self.client.get(reverse("sales_settings_view"))
        self.assertRedirects(response, reverse("user_login"))

    def test_settings_edit_out(self):
        "Testing /sales/settings/edit"
        response = self.client.get(reverse("sales_settings_edit"))
        self.assertRedirects(response, reverse("user_login"))

    # Statuses
    def test_status_add_out(self):
        "Testing /sales/status/add"
        response = self.client.get(reverse("sales_status_add"))
        self.assertRedirects(response, reverse("user_login"))

    def test_status_edit_out(self):
        "Testing /sales/status/edit/"
        response = self.client.get(reverse("sales_status_edit", args=[self.status.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_status_view_out(self):
        "Testing /sales/status/view/"
        response = self.client.get(reverse("sales_status_view", args=[self.status.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_status_delete_out(self):
        "Testing /sales/status/delete/"
        response = self.client.get(reverse("sales_status_delete", args=[self.status.id]))
        self.assertRedirects(response, reverse("user_login"))

    # Subscriptions
    def test_subscription_add_out(self):
        "Testing /sales/subscription/add"
        response = self.client.get(reverse("sales_subscription_add"))
        self.assertRedirects(response, reverse("user_login"))

    def test_subscription_add_product_out(self):
        "Testing /sales/subscription/add/"
        response = self.client.get(reverse("sales_subscription_add_with_product", args=[self.product.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_subscription_edit_out(self):
        "Testing /sales/subscription/edit/"
        response = self.client.get(reverse("sales_subscription_edit", args=[self.subscription.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_subscription_view_out(self):
        "Testing /sales/subscription/view/"
        response = self.client.get(reverse("sales_subscription_view", args=[self.subscription.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_subscription_delete_out(self):
        "Testing /sales/subscription/delete/"
        response = self.client.get(reverse("sales_subscription_delete", args=[self.subscription.id]))
        self.assertRedirects(response, reverse("user_login"))

    # Ordered Products
    def test_ordered_product_add_out(self):
        "Testing /sales/ordered_product/add/"
        response = self.client.get(reverse("sales_ordered_product_add", args=[self.order.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_ordered_product_edit_out(self):
        "Testing /sales/ordered_product/edit/"
        response = self.client.get(reverse("sales_ordered_product_edit", args=[self.ordered_product.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_ordered_product_view_out(self):
        "Testing /sales/ordered_product/view/"
        response = self.client.get(reverse("sales_ordered_product_view", args=[self.ordered_product.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_ordered_product_delete_out(self):
        "Testing /sales/ordered_product/delete/"
        response = self.client.get(reverse("sales_ordered_product_delete", args=[self.ordered_product.id]))
        self.assertRedirects(response, reverse("user_login"))

    # Sources
    def test_source_add_out(self):
        "Testing /sales/source/add"
        response = self.client.get(reverse("sales_source_add"))
        self.assertRedirects(response, reverse("user_login"))

    def test_source_edit_out(self):
        "Testing /sales/source/edit/"
        response = self.client.get(reverse("sales_source_edit", args=[self.source.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_source_view_out(self):
        "Testing /sales/source/view/"
        response = self.client.get(reverse("sales_source_view", args=[self.source.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_source_delete_out(self):
        "Testing /sales/source/delete/"
        response = self.client.get(reverse("sales_source_delete", args=[self.source.id]))
        self.assertRedirects(response, reverse("user_login"))

    # Leads
    def test_lead_index_out(self):
        "Testing /sales/lead/index"
        response = self.client.get(reverse("sales_lead_index"))
        self.assertRedirects(response, reverse("user_login"))

    def test_lead_index_assigned_out(self):
        "Testing /sales/lead/index/assigned"
        response = self.client.get(reverse("sales_lead_index_assigned"))
        self.assertRedirects(response, reverse("user_login"))

    def test_lead_add_out(self):
        "Testing /sales/lead/add"
        response = self.client.get(reverse("sales_lead_add"))
        self.assertRedirects(response, reverse("user_login"))

    def test_lead_edit_out(self):
        "Testing /sales/lead/edit/"
        response = self.client.get(reverse("sales_lead_edit", args=[self.lead.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_lead_view_out(self):
        "Testing /sales/lead/view/"
        response = self.client.get(reverse("sales_lead_view", args=[self.lead.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_lead_delete_out(self):
        "Testing /sales/lead/delete/"
        response = self.client.get(reverse("sales_lead_delete", args=[self.lead.id]))
        self.assertRedirects(response, reverse("user_login"))

    # Opportunities
    def test_opportunity_index_out(self):
        "Testing /sales/opportunity/index/"
        response = self.client.get(reverse("sales_opportunity_index"))
        self.assertRedirects(response, reverse("user_login"))

    def test_opportunity_index_assigned_out(self):
        "Testing /sales/opportunity/index/assigned/"
        response = self.client.get(reverse("sales_opportunity_index_assigned"))
        self.assertRedirects(response, reverse("user_login"))

    def test_opportunity_add_out(self):
        "Testing /sales/opportunity/add/"
        response = self.client.get(reverse("sales_opportunity_add"))
        self.assertRedirects(response, reverse("user_login"))

    def test_opportunity_add_lead_out(self):
        "Testing /sales/opportunity/add/lead/"
        response = self.client.get(reverse("sales_opportunity_add_with_lead", args=[self.lead.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_opportunity_edit_out(self):
        "Testing /sales/opportunity/edit/"
        response = self.client.get(reverse("sales_opportunity_edit", args=[self.opportunity.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_opportunity_view_out(self):
        "Testing /sales/opportunity/view/"
        response = self.client.get(reverse("sales_opportunity_view", args=[self.opportunity.id]))
        self.assertRedirects(response, reverse("user_login"))

    def test_opportunity_delete_out(self):
        "Testing /sales/opportunity/delete/"
        response = self.client.get(reverse("sales_opportunity_delete", args=[self.opportunity.id]))
        self.assertRedirects(response, reverse("user_login"))
示例#19
0
文件: tests.py 项目: tovmeod/anaf
    def setUp(self):
        self.group, created = Group.objects.get_or_create(name="test")
        self.user, created = DjangoUser.objects.get_or_create(username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(name="default")
        perspective.set_default_user()
        perspective.save()
        ModuleSetting.set("default_perspective", perspective.id)

        self.contact_type = ContactType()
        self.contact_type.slug = "machine"
        self.contact_type.name = "machine"
        self.contact_type.save()

        self.contact = Contact()
        self.contact.contact_type = self.contact_type
        self.contact.set_default_user()
        self.contact.save()
        self.assertNotEquals(self.contact.id, None)

        self.status = SaleStatus()
        self.status.set_default_user()
        self.status.save()
        self.assertNotEquals(self.status.id, None)

        self.currency = Currency(code="GBP", name="Pounds", symbol="L", is_default=True)
        self.currency.save()

        self.source = SaleSource()
        self.source.set_default_user()
        self.source.save()
        self.assertNotEquals(self.source.id, None)

        self.product = Product(name="Test")
        self.product.product_type = "service"
        self.product.active = True
        self.product.sell_price = 10
        self.product.buy_price = 100
        self.product.set_default_user()
        self.product.save()
        self.assertNotEquals(self.product.id, None)

        self.subscription = Subscription()
        self.subscription.client = self.contact
        self.subscription.set_default_user()
        self.subscription.save()
        self.assertNotEquals(self.subscription.id, None)

        self.lead = Lead()
        self.lead.contact_method = "email"
        self.lead.status = self.status
        self.lead.contact = self.contact
        self.lead.set_default_user()
        self.lead.save()
        self.assertNotEquals(self.lead.id, None)

        self.opportunity = Opportunity()
        self.opportunity.lead = self.lead
        self.opportunity.contact = self.contact
        self.opportunity.status = self.status
        self.opportunity.amount = 100
        self.opportunity.amount_currency = self.currency
        self.opportunity.amount_display = 120
        self.opportunity.set_default_user()
        self.opportunity.save()
        self.assertNotEquals(self.opportunity.id, None)

        self.order = SaleOrder(reference="Test")
        self.order.opportunity = self.opportunity
        self.order.status = self.status
        self.order.source = self.source
        self.order.currency = self.currency
        self.order.total = 0
        self.order.total_display = 0
        self.order.set_default_user()
        self.order.save()
        self.assertNotEquals(self.order.id, None)

        self.ordered_product = OrderedProduct()
        self.ordered_product.product = self.product
        self.ordered_product.order = self.order
        self.ordered_product.rate = 0
        self.ordered_product.subscription = self.subscription
        self.ordered_product.set_default_user()
        self.ordered_product.save()

        self.assertNotEquals(self.ordered_product.id, None)