Skip to content

Commit 01af7e6

Browse files
Merge branch 'ianshulx:main' into contribution/event-system
2 parents 50c6e72 + 1ad3b81 commit 01af7e6

File tree

20 files changed

+594
-16
lines changed

20 files changed

+594
-16
lines changed

.github/FUNDING.yml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1 @@
1-
# These are supported funding model platforms
21

3-
github: [ianshulx]
4-
patreon: # Replace with a single Patreon username
5-
open_collective: # Replace with a single Open Collective username
6-
ko_fi: # Replace with a single Ko-fi username
7-
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8-
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9-
liberapay: # Replace with a single Liberapay username
10-
issuehunt: # Replace with a single IssueHunt username
11-
otechie: # Replace with a single Otechie username
12-
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13-
custom: ['https://paypal.me/ianshulx?country.x=IN&locale.x=en_GB']
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 4.2.5 on 2024-10-04 17:40
2+
3+
import datetime
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('FinTech', '0006_alter_expensecategory_name_alter_incomecategory_name'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='expense',
16+
name='date',
17+
field=models.DateField(default=datetime.date(2024, 10, 4)),
18+
),
19+
migrations.AlterField(
20+
model_name='income',
21+
name='date',
22+
field=models.DateField(default=datetime.date(2024, 10, 4)),
23+
),
24+
]

FinanceTracker/FinTech/tests.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

FinanceTracker/FinTech/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def dashboard(request):
1616
for catg in my_catg:
1717
out_dict[catg.name]=0
1818

19-
expenses= Expense.objects.filter(user=request.user.id)
19+
expenses= Expense.objects.filter(user=request.user.id).order_by('id')
2020
for expense in expenses:
2121
catg=expense.category
2222
pre_amount=expense.amount

FinanceTracker/FinanceTracker/tests/__init__.py

Whitespace-only changes.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from django.test import TestCase
2+
from django.contrib.auth.models import User
3+
from FinTech.models import IncomeCategory, ExpenseCategory
4+
5+
class CategoryModelTest(TestCase):
6+
7+
def setUp(self):
8+
# Create a user for testing
9+
self.user = User.objects.create_user(username='testuser', password='testpass')
10+
11+
def test_income_category_creation(self):
12+
# Create an IncomeCategory instance
13+
income_category = IncomeCategory.objects.create(name='Salary', user=self.user)
14+
15+
# Check if the category was created successfully
16+
self.assertEqual(income_category.name, 'Salary')
17+
self.assertEqual(income_category.user, self.user)
18+
self.assertIsInstance(income_category, IncomeCategory)
19+
20+
def test_expense_category_creation(self):
21+
# Create an ExpenseCategory instance
22+
expense_category = ExpenseCategory.objects.create(name='Food', user=self.user)
23+
24+
# Check if the category was created successfully
25+
self.assertEqual(expense_category.name, 'Food')
26+
self.assertEqual(expense_category.user, self.user)
27+
self.assertIsInstance(expense_category, ExpenseCategory)
28+
29+
def test_income_category_str_method(self):
30+
# Create an IncomeCategory instance
31+
income_category = IncomeCategory.objects.create(name='Salary', user=self.user)
32+
33+
# Check if the string representation is correct
34+
self.assertEqual(str(income_category), 'Salary')
35+
36+
def test_expense_category_str_method(self):
37+
# Create an ExpenseCategory instance
38+
expense_category = ExpenseCategory.objects.create(name='Food', user=self.user)
39+
40+
# Check if the string representation is correct
41+
self.assertEqual(str(expense_category), 'Food')
42+
43+
def test_income_category_user_relationship(self):
44+
# Create an IncomeCategory instance
45+
income_category = IncomeCategory.objects.create(name='Bonus', user=self.user)
46+
47+
# Check if the user relationship is correct
48+
self.assertEqual(income_category.user.username, 'testuser')
49+
self.assertEqual(self.user.user_inc_catg.count(), 1) # Check that the user has 1 income category
50+
51+
def test_expense_category_user_relationship(self):
52+
# Create an ExpenseCategory instance
53+
expense_category = ExpenseCategory.objects.create(name='Transport', user=self.user)
54+
55+
# Check if the user relationship is correct
56+
self.assertEqual(expense_category.user.username, 'testuser')
57+
self.assertEqual(self.user.user_exp_catg.count(), 1) # Check that the user has 1 expense category
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from django.test import SimpleTestCase
2+
from django.urls import reverse, resolve
3+
from FinTech.views import dashboard, income, expenses, edit_income, edit_expense, delete_expense, delete_income, expense_report, income_report, add_expense_category, add_income_category, remove_expense_category, remove_income_category, profile, settings, index, signup, login, logout
4+
5+
6+
7+
class TestUrls(SimpleTestCase):
8+
9+
def test_dashboard_url(self):
10+
url = reverse('dashboard')
11+
#print(resolve(url))
12+
self.assertEqual(resolve(url).func, dashboard)
13+
14+
def test_incomes_url(self):
15+
url = reverse('incomes')
16+
self.assertEqual(resolve(url).func, income)
17+
self.assertNotEqual(resolve(url).func, expenses)
18+
19+
def test_expenses_url(self):
20+
url = reverse('expenses')
21+
self.assertEqual(resolve(url).func, expenses)
22+
23+
def test_edit_Income_url(self):
24+
url = reverse('edit-income', args=[1])
25+
self.assertEqual(resolve(url).func, edit_income)
26+
27+
def test_edit_Expense_url(self):
28+
url = reverse('edit-expense', args=[2])
29+
self.assertEqual(resolve(url).func, edit_expense)
30+
31+
def test_Expense_Report_url(self):
32+
url = reverse('expense-report', args=['string'])
33+
self.assertEqual(resolve(url).func, expense_report)
34+
35+
def test_remove_Income_url(self):
36+
url = reverse('remove-income-category', args=[1])
37+
self.assertNotEqual(resolve(url).func, income)
38+
self.assertEqual(resolve(url).func, remove_income_category)
39+
40+
def test_profile_url(self):
41+
url = reverse('profile')
42+
self.assertEqual(resolve(url).func, profile)
43+
self.assertNotEqual(resolve(url).func, settings)
44+
45+
def test_signup_url(self):
46+
url = reverse('signup')
47+
self.assertEqual(resolve(url).func, signup)
48+
self.assertNotEqual(resolve(url).func, index)
49+
self.assertNotEqual(resolve(url).func, login)
50+
self.assertNotEqual(resolve(url).func, logout)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
from django.test import TestCase, Client
2+
from django.urls import reverse
3+
from django.contrib.auth.models import User
4+
from datetime import date
5+
from unittest.mock import patch, MagicMock
6+
from FinTech.models import IncomeCategory, ExpenseCategory, Income, Expense, Budget, Account
7+
import json
8+
9+
10+
class TestViews(TestCase):
11+
12+
def setUp(self):
13+
# Create a user and log them in
14+
self.user = User.objects.create_user(username='testuser', password='testpass')
15+
self.client.login(username='testuser', password='testpass')
16+
17+
# Create an account for the user
18+
self.account = Account.objects.create(user=self.user, balance=500)
19+
20+
# Create expense categories for the user
21+
self.catg_food = ExpenseCategory.objects.create(user=self.user, name='Food')
22+
self.catg_transport = ExpenseCategory.objects.create(user=self.user, name='Transport')
23+
24+
# Create expenses for the user
25+
self.expense1 = Expense.objects.create(user=self.user, amount=50, category=self.catg_food, date=date.today())
26+
self.expense2 = Expense.objects.create(user=self.user, amount=20, category=self.catg_transport, date=date.today())
27+
self.expense3 = Expense.objects.create(user=self.user, amount=30, category=self.catg_food, date=date.today())
28+
29+
def test_dashboard_view_expenses_and_balance(self):
30+
# Call the dashboard view
31+
response = self.client.get(reverse('dashboard'))
32+
33+
# Check if the response is 200 OK
34+
self.assertEqual(response.status_code, 200)
35+
36+
# Check if the account balance is passed correctly to the template
37+
self.assertContains(response, self.account.balance)
38+
39+
# Check if the expenses by category are calculated correctly
40+
context = response.context
41+
expected_expenses = {
42+
'Food': 80, # 50 + 30
43+
'Transport': 20 # 20
44+
}
45+
46+
# Verify that the output dictionary has correct totals
47+
# self.assertEqual(context['catg_list'], ['Food', 'Transport'])
48+
self.assertEqual(context['catg_total_list'], [80, 20])

FinanceTracker/requirements.txt

-50 Bytes
Binary file not shown.

URL Shortener/README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
2+
# URL-Shortener
3+
4+
A simple and fast URL shortener! This allows to convert long URLs into shorter, more manageable links, making them easier to share, tweet, or send via email.
5+
6+
### Installation
7+
**1. Create a Folder where you want to save the project**
8+
9+
**2. Create a Virtual Environment and Activate**
10+
11+
Install Virtual Environment First
12+
```
13+
$ pip install virtualenv
14+
```
15+
16+
Create Virtual Environment
17+
18+
For Windows
19+
```
20+
$ python -m venv venv
21+
```
22+
For Mac
23+
```
24+
$ python3 -m venv venv
25+
```
26+
27+
Activate Virtual Environment
28+
29+
For Windows
30+
```
31+
$ source venv/scripts/activate
32+
```
33+
34+
For Mac
35+
```
36+
$ source venv/bin/activate
37+
```
38+
39+
**3. Clone this project**
40+
41+
```
42+
$ git clone https://github.com/saminmahmud/URL-Shortener.git
43+
```
44+
45+
Then, Enter the project
46+
```
47+
$ cd URL-Shortener
48+
```
49+
50+
**4. Install Requirements from 'requirements.txt'**
51+
```python
52+
$ pip install -r requirements.txt
53+
```
54+
55+
**5. Now Run Server**
56+
57+
Command for Windows:
58+
```python
59+
$ python manage.py runserver
60+
```
61+
62+
Command for Linux or Mac:
63+
```python
64+
$ python3 manage.py runserver
65+
```

0 commit comments

Comments
 (0)