Skip to content

Commit 483cbcf

Browse files
committed
feat(tiered_pricing): 🔵 ensure that tiers are used
1 parent c9fb9d0 commit 483cbcf

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

exercises/graduated_tiered_prices/solutions/adrianliz/src/GraduatedTieredPricing.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,9 @@ import GraduatedTier from "./GraduatedTier";
22
import Subscriptions from "./Subscriptions";
33

44
export default class GraduatedTieredPricing {
5-
constructor(private readonly tiers: GraduatedTier[] | null) {}
6-
7-
private defaultTiers(): GraduatedTier[] {
8-
return [
9-
new GraduatedTier(1, 2, 299),
10-
new GraduatedTier(3, 10, 239),
11-
new GraduatedTier(11, 25, 219),
12-
new GraduatedTier(26, 50, 199),
13-
new GraduatedTier(51, Number.MAX_SAFE_INTEGER, 149),
14-
];
15-
}
5+
constructor(private readonly tiers: GraduatedTier[]) {}
166

177
priceFor(subscriptions: Subscriptions): number {
18-
return subscriptions.priceFor(this.tiers || this.defaultTiers());
8+
return subscriptions.priceFor(this.tiers);
199
}
2010
}

exercises/graduated_tiered_prices/solutions/adrianliz/tests/GraduatedTieredPricing.test.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
import each from "jest-each";
22

3+
import GraduatedTier from "../src/GraduatedTier";
34
import GraduatedTieredPricing from "../src/GraduatedTieredPricing";
45
import NumberOfSubscriptionsNotAllowed from "../src/NumberOfSubscriptionsNotAllowed";
56
import Subscriptions from "../src/Subscriptions";
67

78
describe("Graduated tiered pricing should", () => {
9+
const defaultTiers = (): GraduatedTier[] => {
10+
return [
11+
new GraduatedTier(1, 2, 299),
12+
new GraduatedTier(3, 10, 239),
13+
new GraduatedTier(11, 25, 219),
14+
new GraduatedTier(26, 50, 199),
15+
new GraduatedTier(51, Number.MAX_SAFE_INTEGER, 149),
16+
];
17+
};
18+
819
it("throw number of subscriptions not allowed for 0 subscriptions", () => {
9-
const pricing = new GraduatedTieredPricing(null);
20+
const tiers = defaultTiers();
21+
const pricing = new GraduatedTieredPricing(tiers);
1022
expect(() => pricing.priceFor(new Subscriptions(0))).toThrow(
1123
NumberOfSubscriptionsNotAllowed
1224
);
@@ -23,7 +35,8 @@ describe("Graduated tiered pricing should", () => {
2335
]).it(
2436
"calculate the price for %i subscriptions",
2537
(subscriptions: number, expectedPrice: number) => {
26-
const pricing = new GraduatedTieredPricing(null);
38+
const tiers = defaultTiers();
39+
const pricing = new GraduatedTieredPricing(tiers);
2740
expect(pricing.priceFor(new Subscriptions(subscriptions))).toBe(
2841
expectedPrice
2942
);

0 commit comments

Comments
 (0)