Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions dom-tests/calculate-bill.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
describe("The calculate bill function", function(){

it(" If two calls were made , it should return 5.5", function(){
var calculateBill = calculateBtnClicked();
//console.log( calculateBill.setCallOrSms("sms"))
assert.equal(5.50, calculateBill.setCallOrSms("call,call"));

});


it("If two sms's were made , it should return 1.5 ", function(){
var calculateBill = calculateBtnClicked();

assert.equal(1.50, calculateBill.setCallOrSms("sms,sms"));

});

it("Should return a 'warning' class name if total reaches 20", function(){
var calculateBill = calculateBtnClicked();
assert.equal(20.50, calculateBill.setCallOrSms("call,sms,call,sms,sms,call,sms,call,sms,sms,call,sms,sms,sms"));
assert.equal("warning", calculateBill.warningLevel());
})
it("Should return a 'critical' class name if total reachs 30", function(){
var calculateBill = calculateBtnClicked();

assert.equal(30.25, calculateBill.setCallOrSms("call,call,call,call,call,call,call,call,call,call,call"));
assert.equal("danger", calculateBill.criticalLevel())
})
});
34 changes: 34 additions & 0 deletions dom-tests/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Mocha Tests</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://unpkg.com/mocha/mocha.css" />
</head>
<body>
<div id="mocha"></div>


<script src="https://unpkg.com/chai/chai.js"></script>
<script src="https://unpkg.com/mocha/mocha.js"></script>

<script class="mocha-init">
mocha.setup('bdd');
mocha.checkLeaks();
assert = chai.assert;
</script>


<!-- <script src="calculate-bill.js"></script> -->
<script src="../js/calculate-bill-factory.js"></script>
<script src="calculate-bill.test.js"></script>
<!-- <script src="settings-bill.js"></script> -->
<script src="../js/settings-bill-factory.js"></script>
<script src="settings-bill.test.js"></script>

<script class="mocha-exec">
mocha.run();
</script>
</body>
</html>
210 changes: 210 additions & 0 deletions dom-tests/settings-bill.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
describe("The bill with settings function", function () {
it("should be able to set the call cost", function () {
let settingsBill = BillWithSettings();
settingsBill.setCallCost(1.85);
assert.equal(1.85, settingsBill.getCallCost());

let settingsBill2 = BillWithSettings();
settingsBill2.setCallCost(2.75);
assert.equal(2.75, settingsBill2.getCallCost());
});

it("should be able to set the sms cost", function () {
let settingsBill = BillWithSettings();
settingsBill.setSmsCost(0.85);
assert.equal(0.85, settingsBill.getSmsCost());

let settingsBill2 = BillWithSettings();
settingsBill2.setSmsCost(0.75);
assert.equal(0.75, settingsBill2.getSmsCost());
});

it("should be able to set the call and sms cost", function () {
let settingsBill = BillWithSettings();
settingsBill.setCallCost(2.75);
settingsBill.setSmsCost(0.85);
assert.equal(2.75, settingsBill.getCallCost());
assert.equal(0.85, settingsBill.getSmsCost());

let settingsBill2 = BillWithSettings();
settingsBill2.setCallCost(1.75);
settingsBill2.setSmsCost(0.65);
assert.equal(1.75, settingsBill2.getCallCost());
assert.equal(0.65, settingsBill2.getSmsCost());
});

it("should be able to set the warning level", function () {
let settingsBill = BillWithSettings();
settingsBill.setWarningLevel(20);
assert.equal(20, settingsBill.getWarningLevel());
});
it("should be able to set the critical level", function () {
let settingsBill = BillWithSettings();
settingsBill.setCriticalLevel(30);
assert.equal(30, settingsBill.getCriticalLevel());
});

it("should be able to set the warning and the critical level", function () {
let settingsBill = BillWithSettings();
settingsBill.setWarningLevel(20);
settingsBill.setCriticalLevel(30);
assert.equal(20, settingsBill.getWarningLevel());
assert.equal(30, settingsBill.getCriticalLevel());
});
});


describe("Use Values", function () {
it("should be able to use the call cost set", function () {
let settingsBill = BillWithSettings();
settingsBill.setCriticalLevel(10);


settingsBill.setCallCost(2.25);
settingsBill.setSmsCost(0.85);

settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();

assert.equal(6.75, settingsBill.getTotalCost());
assert.equal(6.75, settingsBill.getTotaCalllCost());
assert.equal(0.0, settingsBill.getTotalSmsCost());
});

it("should be able to use the call cost set for two calls at 1.35 each", function () {
let settingsBill = BillWithSettings();
settingsBill.setCallCost(1.35);
settingsBill.setSmsCost(0.85);
settingsBill.setCriticalLevel(10);

settingsBill.makeCall();
settingsBill.makeCall();

assert.equal(2.7, settingsBill.getTotalCost());
assert.equal(2.7, settingsBill.getTotaCalllCost());
assert.equal(0.0, settingsBill.getTotalSmsCost());
});
it("should be able to send two smses at 0.85 each", function () {
let settingsBill = BillWithSettings();
settingsBill.setCallCost(1.35);
settingsBill.setSmsCost(0.85);
settingsBill.setCriticalLevel(10);


settingsBill.sendSms();
settingsBill.sendSms();

assert.equal(1.7, settingsBill.getTotalCost());
assert.equal(0.0, settingsBill.getTotaCalllCost());
assert.equal(1.7, settingsBill.getTotalSmsCost());
});
it("should be able to send two smses at 0.85 each and make one call at 1.35", function () {
let settingsBill = BillWithSettings();
settingsBill.setCallCost(1.35);
settingsBill.setSmsCost(0.85);
settingsBill.setCriticalLevel(10)


settingsBill.sendSms();
settingsBill.sendSms();
settingsBill.makeCall();

assert.equal(3.05, settingsBill.getTotalCost());
assert.equal(1.35, settingsBill.getTotaCalllCost());
assert.equal(1.7, settingsBill.getTotalSmsCost());
});
});

describe("Warning and Critical level", function () {

it("Should return a class name if warning level is reached", function () {
let settingsBill = BillWithSettings();


settingsBill.setCallCost(1.35);
settingsBill.setSmsCost(0.85);
settingsBill.setWarningLevel(5);
settingsBill.setCriticalLevel(10);

settingsBill.sendSms();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
assert.equal("warning", settingsBill.totalClassName());
});
it("Should return a class name 'critical' if critical level is reached", function () {

let settingsBill = BillWithSettings();


settingsBill.setCallCost(2.50);
settingsBill.setSmsCost(0.5);
settingsBill.setWarningLevel(5);
settingsBill.setCriticalLevel(10);

settingsBill.sendSms();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
// console.log(settingsBill.getTotalCost())

assert.equal("danger", settingsBill.totalClassName());

});

it("Should stop the total call cost from increasing when the critical level has been reached.", function () {
let settingsBill = BillWithSettings();


settingsBill.setCallCost(2);
settingsBill.setSmsCost(0.5);
settingsBill.setCriticalLevel(10);

settingsBill.sendSms();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
assert.equal("danger", settingsBill.totalClassName());
assert.equal(10, settingsBill.getTotaCalllCost());



});
it("Should allow the total to increase when the critical level has been reached, then upping the critical level", function () {
let settingsBill = BillWithSettings();


settingsBill.setCallCost(2.);

settingsBill.setCallCost(2.);
settingsBill.setSmsCost(0.5);
settingsBill.setWarningLevel(8);
settingsBill.setCriticalLevel(10);

settingsBill.sendSms();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
assert.equal("danger", settingsBill.totalClassName());
assert.equal(10, settingsBill.getTotaCalllCost());

settingsBill.setCriticalLevel(20);
assert.equal("warning", settingsBill.totalClassName());
settingsBill.makeCall();
settingsBill.makeCall();
settingsBill.makeCall();
assert.equal(16, settingsBill.getTotaCalllCost());



});

});
30 changes: 16 additions & 14 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ <h3>Calculate bill</h3>
<div class="row">
<div class="eight columns">
<h5>Enter bill string</h5>
<textarea name="name" rows="20" cols="40" class="billString" class="billString" ></textarea>
<textarea name="name" rows="20" cols="40" class="billString" value=""></textarea>
<button class="button-primary calculateBtn" on type="button" name="button">Calculate</button>
</div>
<div class="four columns">
Expand Down Expand Up @@ -95,15 +95,15 @@ <h5>Totals</h5>
<table>
<tr>
<td>Call total</td>
<td>R<span class="callTotalOne">27.50</span></td>
<td>R<span class="callTotalOne">0.00</span></td>
</tr>
<tr>
<td>SMS total</td>
<td>R<span class="smsTotalOne">13.75</span></td>
<td>R<span class="smsTotalOne">0.00</span></td>
</tr>
<tr>
<td>Total</td>
<td class="red">R<span class="totalOne">41.25</span></td>
<td class="red">R<span class="totalOne">0.00</span></td>
</tr>
</table>
</div>
Expand Down Expand Up @@ -151,15 +151,15 @@ <h5>Totals</h5>
<table>
<tr>
<td>Call total</td>
<td>R<span class="callTotalTwo">34.50</span></td>
<td>R<span class="callTotalTwo">0.00</span></td>
</tr>
<tr>
<td>SMS total</td>
<td>R<span class="smsTotalTwo">3.00</span></td>
<td>R<span class="smsTotalTwo">0.00</span></td>
</tr>
<tr >
<td>Total</td>
<td class="orange" >R<span class="totalTwo">37.50</span></td>
<td class="orange" >R<span class="totalTwo">0.00</span></td>
</tr>
</table>
</div>
Expand All @@ -186,28 +186,28 @@ <h3>Bill with settings</h3>
<div class="six columns">
<h5>Bill type</h5>
<label class="">
<input type="radio" name="billItemTypeWithSettings" class="billItemTypeWithSettings">
<input type="radio" name="billItemTypeWithSettings" value="call" class="billItemTypeWithSettings">
<span class="label-body">Call</span>
</label>
<label class="">
<input type="radio" name="billItemTypeWithSettings" class="billItemTypeWithSettings">
<input type="radio" name="billItemTypeWithSettings" value="sms" class="billItemTypeWithSettings">
<span class="label-body" >SMS</span>
</label>
<button class="button-primary" type="button" name="button">Add</button>
<button class="button-primary add-setting-btn" type="button" name="button">Add</button>

<h5>Totals</h5>
<table>
<tr>
<td>Call total</td>
<td>R<span class="callTotalSettings">34.00</span> </td>
<td>R<span class="callTotalSettings">0.00</span> </td>
</tr>
<tr>
<td>SMS total</td>
<td>R<span class="smsTotalSettings">7.35</span> </td>
<td>R<span class="smsTotalSettings">0.00</span> </td>
</tr>
<tr>
<td>Total</td>
<td> R<span class="totalSettings">41.35</span> </td>
<td> R<span class="totalSettings">0.00</span> </td>
</tr>
</table>

Expand All @@ -229,10 +229,12 @@ <h5>Settings</h5>
</div>
</div>
</div>
<script src="js/calculate-bill-factory.js"></script>
<script src="js/calculate-bill.js" charset="utf-8"></script>
<script src="js/settings-bill-factory.js"></script>
<script src="js/settings-bill.js" charset="utf-8"></script>
<script src="js/text-bill.js" charset="utf-8"></script>
<script src="js/radio-bill.js" charset="utf-8"></script>
<script src="js/settings-bill.js" charset="utf-8"></script>

</body>
</html>
Loading